在 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 ingress 正在崩溃循环
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,或者是否有需要的选项来支持运行带有 ipvs 的入口,我忽略了。
答案1
注意:nginx-ingress 安装是通过 helm chart 进行的
解决:
ipvs 模式用外部 ip 开启了 kube-proxy 监听器
删除 externalIPs 数组,即 controller.service.externalIPs[0] 将关闭该模式