檢視次數:
設定檔適用性:等級 1 - 工作節點
允許 Kubelet 管理 iptables。
Kubelet 可以根據您選擇的 pod 網路選項自動管理對 iptables 的必要更改。建議讓 kubelet 管理對 iptables 的更改。這可確保 iptables 配置與 pod 網路配置保持同步。手動配置 iptables 以應對動態的 pod 網路配置更改可能會妨礙 pod/容器之間以及與外部世界的通信。您可能會有過於限制或過於開放的 iptables 規則。

影響

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

稽核

稽核方法 1:
注意
注意
首先,SSH 到每個節點:在每個節點上運行以下命令以查找 Kubelet 進程:
ps -ef | grep kubelet
如果上述命令的輸出包含參數 --make-iptables-util-chains,則確認其設置為 true。如果 --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" from the output of "kubectl get nodes"
   
    kubectl proxy --port=8001 &
    export HOSTNAME_PORT=localhost:8001 (example host and port number)
    export NODE_NAME=ip-192.168.31.226.ec2.internal (example node name from "kubectl get nodes")
    curl --SSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
   

補救措施

補救方法 1:
  1. 如果修改 Kubelet 配置檔,請編輯 /etc/kubernetes/kubelet/kubelet-config.json 檔案並將以下參數設置為 true
          "makeIPTablesUtilChains": true
         
  2. 確保 /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf 沒有設置 --make-iptables-util-chains 參數,因為這會覆蓋您 Kubelet 的配置文件。
補救方法 2:
  1. 如果使用可執行參數,請在每個工作節點上編輯 kubelet 服務文件 /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf,並在 KUBELET_ARGS 變數字串的末尾添加以下參數。
          --make-iptables-util-chains=true
         
補救方法 3:
  1. 如果使用 API configz 端點,請考慮透過從運行 kubelet 的節點中提取實時配置來搜尋 "makeIPTablesUtilChains": true 的狀態。
          kubectl proxy --port=8001 &
          export HOSTNAME_PORT=localhost:8001 (example host and port number)
          export NODE_NAME=ip-192.168.31.226.ec2.internal (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
   

預設值

請參閱 Amazon EKS 文件以了解預設值。