在我的配置中,非常基本的一个(只有 calico 网络,还没有应用程序)我有 nginx-ingress 作为 NodePort 运行 - 绑定在端口 30080 上。这个端口应该只能从 localhost 访问,但是 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
不确定这是否是您一直在寻找的,但是通过这种方式,它会继续收听
127.0.0.1:NodePort
您需要更改
kube-proxy
configmap但不需要bindAddress:
(它应该保持原样bindAddress: 0.0.0.0
)并且默认值nodePortAddresses: null
应该更改为nodePortAddresses: ["127.0.0.0/8"]
. 就["127.0.0.0/8"]
好像你会改变只是为了127.0.0.1/8
kube-proxy
豆荚会粉碎。使用更改
nodePortAddresses: null
并nodePortAddresses: ["127.0.0.0/8"]
保存:wq
。默认情况下edit
将在VI
文本编辑器中打开。如果你想使用 nano 作为文本编辑器,你必须使用
KUBE_EDITOR="nano" kubectl edit cm kube-proxy -n kube-system
.作为我
Nginx deployment
从这个文档中使用的例子。只有 chage 被添加type: NodePort
到服务 YAML。现在您需要将此新配置应用于 kube-proxy。最简单的方法是删除
kube-proxy
pod,因为daemonset.apps/kube-proxy
将使用新配置创建新的。原始输出:
更改后的输出
nodePortAddresses: