Kubernetes kube-proxy IPVS Mode 설정
[kubernetes kube-proxy 관련 글 목록]
Kubernetes kube-proxy IPVS Mode 설정
Kubernetes NodePort Networking 분석 (kube-proxy : iptable mode)
Kubernetes NodePort Networking 분석 (kube-proxy : iptable mode)- New version
kubernetes LoadBalancer Networking 분석 (kube-proxy : iptable mode)
목적
kube-proxy mode를 iptables에서 IPVS로 변경함.
환경
[Master Node server]
OS = CentOS 7
리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64
docker version : 1.13.1
docker api verison : 1.26
[Worker Node server]
OS = CentOS 7
리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64
docker version : 1.13.1
api verison : 1.26
[kubernetes version]
1.19.2
Kube-Proxy IPVS Mode 변경
1. IPVS 설치
kube-proxy IPVS mode를 사용하기 위해서는
OS에서 IPVS를 사용할 수 있는 상태이여야함.
CentOS7 환경의 경우 default로 IPVS가 설치되어있지 않기때문에
설치를 해줘야함.
Kubernetes Cluster를 구성하고있는 모든 Node에 설치해줘야함.
[명령어]
yum install -y ipvsadm
2. kube-proxy ConfigMap 확인
[명령어]
kubectl get configMap -n kube-system
[결과]
kube-system namespace에 있는
kube-proxy ConfigMap을 확인할 수 있음
3. kube-proxy ConfigMap 편집
[명령어]
kubectl edit configMap kube-proxy -n kube-system
[결과]
편집창에서
mode: ""
으로 되어있는 부분에 ipvs를 넣어줌
저장하고 나옴.
4. 기존의 kube-proxy Pod를 삭제하고 재배포
수정한 kube-proxy ConfigMap이 적용된 Pod로 다시 배포하기위해
기존의 kube-proxy pod를 모두 삭제하고 재배포 해야함.
[기존의 kube-proxy pod 확인]
[명령어]
kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
[결과]
kube-proxy pod가 전부 삭제됨
그 후 daemonset에 의해서 다시 pod가 재배포됨
5. kube-proxy Pod가 Mode 변경되서 정상 배포 되었는지 확인
[명령어]
kubectl logs pod/[kube-proxy pod이름] -n kube-system
[Master Node의 kube-proxy pod]
[Worker Node의 kube-proxy pod]
[IPVS에서 확인한 Hash Table 정보]
ipvsadm -Ln
Pod와 Service IP를 확인할 수 있음.
[결과]
정상적으로 배포됨.
Load Balancing 알고리즘의 경우 설정하지 않아서
default인 Round-Robin으로 동작함.
6. kube-proxy iptables mode 때 사용했던 Chain 삭제를 위해 iptables 초기화
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
iptables -Z # zero counters
iptables -F # flush (delete) rules
iptables -X # delete all extra chains
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!
'Kubernetes > 네트워크' 카테고리의 다른 글
kubernetes LoadBalancer Networking 분석 (kube-proxy : iptable mode) (0) | 2021.05.06 |
---|---|
Kubernetes NodePort Networking 분석 (kube-proxy : iptable mode) (1) | 2021.05.06 |
Kubernetes kube-proxy Mode 분석 (4) | 2020.12.20 |
Pod의 veth (Virtual Ethernet Interface) 장치 찾기 (0) | 2020.11.07 |
Kubernetes Network Policy (0) | 2020.11.07 |