檢視次數:
設定檔適用性:等級 1
允許 Kubelet 管理 iptables。
Kubelets 可以根據您選擇的 pod 網路選項,自動管理對 iptables 的必要更改。建議讓 kubelets 管理對 iptables 的更改。這可確保 iptables 配置與 pod 網路配置保持同步。手動配置 iptables 並進行動態 pod 網路配置更改可能會妨礙 pod/容器之間以及與外界的通信。您可能會有過於限制或過於開放的 iptables 規則。
注意
注意
請參閱 GKE 文件以了解預設值。

影響

Kubelet 會管理系統上的 iptables 並保持同步。如果您使用其他 iptables 管理解決方案,則可能會發生一些衝突。

稽核

稽核方法 1:
  1. SSH到每個節點並執行以下命令以查找正在運行的kubelet進程:
    ps -ef | grep kubelet
  2. 如果上述命令的輸出包含參數--make-iptables-util-chains,請確認其設置為 true。
  3. 如果--make-iptables-util-chains參數不存在,並且有由--config指定的Kubelet配置文件,請確認該文件未將makeIPTablesUtilChains設置為false
稽核方法 2:
如果使用 api configz 端點,請考慮透過從執行 kubelet 的節點提取即時配置來搜尋 authentication... "makeIPTablesUtilChains.:true 的狀態。
設置本地 Proxy 通訊埠和以下變數,並提供 Proxy 通訊埠號碼和節點名稱:HOSTNAME_PORT="localhost-and-port-number" NODE_NAME="The-Name-Of-Node-To-Extract-Configuration" 從 "kubectl get nodes" 的輸出中
kubectl proxy --port=8001 & 

export HOSTNAME_PORT=localhost:8001 (example host and port number) 
export NODE_NAME=gke-cluster-1-pool1-5e572947-r2hg (example node name from 
"kubectl get nodes") 

curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"

補救

修復方法 1:
如果要修改 Kubelet 配置文件,請編輯 kubelet-config.json 文件 /etc/kubernetes/kubelet-config.yaml,並將以下參數設置為 true:
"makeIPTablesUtilChains": true
確保 /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf 未設定 --make-iptables-util-chains 參數,因為這會覆蓋您 Kubelet 的配置檔案。
修復方法 2:
如果使用可執行參數,請在每個工作節點上編輯 kubelet 服務檔案 /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf,並在 KUBELET_ARGS 變數字串的末尾添加以下參數:
--make-iptables-util-chains:true
修復方法 3:
如果使用 api configz 端點,請考慮透過從運行 kubelet 的節點提取即時配置來搜尋 "makeIPTablesUtilChains.: true 的狀態。
**在在運行中的叢集重新配置節點的 Kubelet中查看詳細的 configmap 步驟,然後重新運行來自審核過程的 curl 語句以檢查 kubelet 配置變更:
kubectl proxy --port=8001 & 

export HOSTNAME_PORT=localhost:8001 (example host and port number) 
export NODE_NAME=gke-cluster-1-pool1-5e572947-r2hg (example node name from 
"kubectl get nodes") 

curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
對於所有三種修復方法:
根據您的系統,重新啟動kubelet服務並檢查狀態:
systemctl daemon-reload
systemctl restart kubelet.service
systemctl status kubelet -l