ビュー:
プロファイル適用性: レベル1 - ワーカーノード
Kubeletにiptablesの管理を許可する。
Kubeletsは、ポッドのネットワークオプションの選択に基づいて、必要なiptablesの変更を自動的に管理できます。iptablesの変更はkubeletsに任せることをお勧めします。これにより、iptablesの設定がポッドのネットワーク設定と同期した状態を保つことができます。動的なポッドネットワーク設定の変更に対して手動でiptablesを設定すると、ポッド/コンテナ間や外部との通信が妨げられる可能性があります。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のステータスを検索することを検討してください。ローカルプロキシポートと次の変数を設定し、プロキシポート番号とノード名を指定してください。
    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"
         
3つの修正すべてに対して: システムに基づいて、kubeletサービスを再起動し、次のコマンドでステータスを確認してください:
    systemctl daemon-reload
    systemctl restart kubelet.service
    systemctl status kubelet -l
   

初期設定値

Amazon EKSのドキュメントでデフォルト値を確認してください。