在我的配置中,非常基本的配置(只有 calico 网络,还没有应用程序)我让 nginx-ingress 作为 NodePort 运行 - 绑定在端口 30080 上。此端口应该只能从本地主机访问,但 k8s 为所有人打开了此端口,并且由于它绑定在 0.0.0.0 上,所以现在它是完全开放的。
所以我想强制 kube-proxy 将此端口仅绑定到 127.0.0.1。
我尝试将 configmap 修改为 nginx-ingress (bind-address),但没有成功。
由于此端口已连接到 kube-proxy - 我一直在寻找 kube-proxy 配置,但毫无收获。我在 /var/lib/kube-proxy 中找到了 yaml 配置文件,但修改它并没有改变这一点。
重新启动 Pod 后,它们仍然绑定到 0.0.0.0
我尝试了互联网上的很多方法,但仍然没有成功。
集群已使用以下命令初始化:kubeadm init --pod-network-cidr=10.XXX.XXX.XXX/XX --apiserver-advertise-address=XXXX
答案1
不确定这是否是你一直在寻找的,但是这样它就会继续听127.0.0.1:NodePort
你需要改变kube-proxy
配置图但不是bindAddress:
(应该保留原样bindAddress: 0.0.0.0
),默认值nodePortAddresses: null
应更改为nodePortAddresses: ["127.0.0.0/8"]
。必须像您将pod 粉碎["127.0.0.0/8"]
一样更改。127.0.0.1/8
kube-proxy
更改nodePortAddresses: null
为nodePortAddresses: ["127.0.0.0/8"]
并使用 保存:wq
。默认情况下将在文本编辑器edit
中打开。VI
$ kubectl edit cm kube-proxy -n kube-system
configmap/kube-proxy edited
如果您想使用 nano 作为文本编辑器,则必须使用KUBE_EDITOR="nano" kubectl edit cm kube-proxy -n kube-system
。
作为我使用的Nginx deployment
示例本文档。唯一的更改是添加type: NodePort
到服务 YAML。
现在您需要将此新配置应用于 kube-proxy。最简单的方法是删除kube-proxy
pod,然后daemonset.apps/kube-proxy
使用新配置创建新的 pod。
原始输出:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 19m
my-nginx NodePort 10.109.237.94 <none> 80:31672/TCP 24s
$ netstat -plnt
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:31672 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN -
...
输出已改变的内容nodePortAddresses:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 33m
my-nginx NodePort 10.96.27.244 <none> 80:30679/TCP 2m40s
$ netstat -plnt
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:30679 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN -
...