이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

클라우드/Kubernetes

70. Kubernetes kube-proxy IPVS Mode 설정

이쿠우우 2021. 3. 19. 13:42
반응형

 

 

 

Kubernetes kube-proxy IPVS Mode 설정

 


[kubernetes kube-proxy 관련 글 목록]

54. Kubernetes kube-proxy Mode 분석

70. Kubernetes kube-proxy IPVS Mode 설정

74. Kubernetes NodePort Networking 분석 (kube-proxy : iptable mode)

75. kubernetes LoadBalancer Networking 분석 (kube-proxy : iptable mode)

76. kubernetes NodePort Networking 분석 (kube-proxy : IPVS 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

 

 

 

 

 


제 글을 복사할 시 출처를 명시해주세요.
글에 오타, 오류가 있다면 댓글로 알려주세요! 바로 수정하겠습니다!


 

 

 

반응형