kubespray 배포 클러스터에서 Inventory/group_vars/k8s-cluster/k8s-cluster.yml의 파일 구성 옵션을 사용하여 ipvs 구성을 테스트하면 프록시 모드가 설정됩니다.
kube_proxy_mode: ipvs
IPVS 클러스터에서 kube-proxy는 포트 80 및 443에서 실행 중입니다.
netstat -tunlp|grep proxy
tcp 0 0 10.144.104.83:80 0.0.0.0:* LISTEN 19455/kube-proxy
tcp 0 0 10.144.104.83:443 0.0.0.0:* LISTEN 19455/kube-proxy
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 19455/kube-proxy
nginx 수신이 충돌 루핑 중입니다.
bind() to 0.0.0.0:443 failed (98: Address already in use)
프록시 모드 == iptables를 제외하고 동일한 방식으로 배포된 클러스터에서
netstat -tunlp|grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 5367/nginx: master
tcp6 0 0 :::443 :::* LISTEN 5367/nginx: master
netstat -tunlp|grep proxy
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 28827/kube-proxy
kube-proxy 획득 포트 80 및 443을 변경하기 위해 놓친 옵션이 있습니까? 아니면 제가 간과한 ipv로 수신 실행을 지원하는 데 필요한 옵션이 있습니까?
답변1
참고: nginx-ingress 설치는 helm 차트를 통해 이루어집니다.
해결:
외부 IP를 사용하는 ipvs 모드에서 kube-proxy 리스너가 열렸습니다.
externalIP 배열을 제거하면(예: Controller.service.externalIPs[0]) 해당 모드가 꺼집니다.