プロファイルの適用範囲:レベル1 - ワーカーノード
この推奨事項は、ストリーミング接続にタイムアウトを設定することの重要性を強調し、DoS攻撃、非アクティブ接続、および短時間のポート枯渇に関連するリスクを軽減することを目的としています。これらのタイムアウトを適切に設定することで、ネットワーク接続の安全かつ効率的な動作が確保されます。
影響
長時間接続が中断される可能性があります。
監査
監査方法1:
注意Kubeletは、設定ファイルまたはコマンドライン引数を介して構成できます。コマンドライン引数が優先されます。Kubeletの構成を監査する際には、コマンドライン引数と構成ファイルのエントリの両方を確認してください。
|
-
各ノードにSSH接続し、アクティブなKubeletプロセスの詳細を表示するには、次のコマンドを実行してください
ps -ef | grep kubelet
-
プロセスのコマンドラインに
--streaming-connection-idle-timeout
引数が含まれている場合、それが0に設定されていないことを確認してください。--streaming-connection-idle-timeout
引数が存在しない場合は、Kubelet構成ファイルの場所を指定する--config
引数を参照してくださいcat /etc/kubernetes/kubelet/kubelet-config.json
-
Kubelet設定ファイルを開いてください:
sudo less /path/to/kubelet-config.json
-
streamingConnectionIdleTimeout
引数が0に設定されていないことを確認してください。
監査方法2:
APIのconfigzエンドポイントを使用する場合は、Kubeletを実行しているノードからライブ構成を抽出して、
"streamingConnectionIdleTimeout": "4h0m0s"
のステータスを検索することを検討してください。-
ローカルプロキシポートを設定し、以下の変数を提供してプロキシポート番号とノード名を指定してください
export HOSTNAME_PORT=localhost:8001 export NODE_NAME=my-node-name curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
修復
方法1:
-
Kubeletの設定ファイルを変更する場合は、
/etc/kubernetes/kubelet/kubelet-config.json
ファイルを編集してください{ "streamingConnectionIdleTimeout": "4h0m0s" }
-
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
ファイルで--streaming-connection-idle-timeout
引数を指定しないようにしてください。Kubelet構成ファイルが上書きされるためです。 -
システムに基づいて、kubeletサービスを再起動してステータスを確認してください
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
メソッド2:
-
実行可能引数を使用する場合は、各ワーカーノードのkubeletサービスファイル
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
を編集し、KUBELET_ARGS変数文字列の末尾に以下のパラメータを追加してください--streaming-connection-idle-timeout=4h0m0s
-
システムに基づいて、kubeletサービスを再起動してステータスを確認してください
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
方法 3:
-
APIのconfigzエンドポイントを使用する場合は、kubeletを実行しているノードからライブ構成を抽出し、
"streamingConnectionIdleTimeout"
のステータスを検索することを検討してください。kubectl proxy --port=8001 & export HOSTNAME_PORT=localhost:8001 export NODE_NAME=ip-192.168.31.226.ec2.internal curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
-
システムに基づいて、kubeletサービスを再起動してステータスを確認してください
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l