ビュー:
プロファイル適用性: レベル1
Kubeletにiptablesの管理を許可する。
Kubeletは、ポッドのネットワークオプションの選択に基づいて、必要なiptablesの変更を自動的に管理できます。iptablesの変更はkubeletに任せることをお勧めします。これにより、iptablesの設定がポッドのネットワーク設定と同期した状態を保つことができます。動的なポッドネットワーク設定の変更に対してiptablesを手動で設定すると、ポッド/コンテナ間や外部との通信が妨げられる可能性があります。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設定ファイルがある場合、そのファイルがmakeIPTablesUtilChainsfalseに設定していないことを確認してください。
監査方法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=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を再構成するを参照し、その後、監査プロセスから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"
すべての3つの修復方法について:
お使いのシステムに基づいて、kubeletサービスを再起動し、ステータスを確認してください。
systemctl daemon-reload
systemctl restart kubelet.service
systemctl status kubelet -l