Kubernetes:如何強制 kube-proxy 僅在 localhost 上偵聽
在我的配置中,非常基本的一個(只有 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
文本編輯器中打開。$ 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
從這個文件中使用的例子。只有 chage 被添加type: NodePort
到服務 YAML。現在您需要將此新配置應用於 kube-proxy。最簡單的方法是刪除
kube-proxy
pod,因為daemonset.apps/kube-proxy
將使用新配置創建新的。原始輸出:
$ 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 - ...