プロファイル適用性: レベル1
ストリーミング接続のタイムアウトを無効にしないでください。
アイドルタイムアウトを設定することで、サービス拒否攻撃、不活発な接続、一時ポートの枯渇から保護されます。
![]() |
注意デフォルトでは、
--streaming-connection-idle-timeout は4時間に設定されていますが、これはお客様の環境にとって高すぎるかもしれません。適切に設定することで、そのようなストリーミング接続が正当な使用ケースに対応した後にタイムアウトすることをさらに確実にします。 |
![]() |
注意GKEのドキュメントでデフォルト値を確認してください。
|
影響
長時間接続が中断される可能性があります。
監査
監査方法1:
- 各ノードにSSHで接続し、次のコマンドを実行して実行中のkubeletプロセスを見つけます。
ps -ef | grep kubelet
- プロセスのコマンドラインに引数
streaming-connection-idle-timeout
が含まれている場合、それが0
に設定されていないことを確認してください。上記のコマンドの出力にstreaming-connection-idle-timeout
引数が存在しない場合は、代わりにKubelet設定ファイルの場所を指定するconfig引数を参照してください。例:--config /etc/kubernetes/kubelet-config.yaml
。 - Kubelet設定ファイルを開く:
cat /etc/kubernetes/kubelet-config.yaml
streamingConnectionIdleTimeout
引数が0
に設定されていないことを確認してください。
監査方法2:
api configzエンドポイントを使用する場合、kubeletを実行しているノードからライブ構成を抽出して
"streamingConnectionIdleTimeout":"4h0m0s"
のステータスを検索することを検討してください。ローカルプロキシポートと以下の変数を設定し、プロキシポート番号とノード名を提供してください:
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
を編集し、以下のパラメータを#h#m#sの形式でゼロ以外の値に設定してください。"streamingConnectionIdleTimeout": "4h0m0s"
kubeletサービスファイル
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
が--streaming-connection-idle-timeout
引数を指定していないことを確認してください。これはKubelet設定ファイルを上書きしてしまうためです。修復方法2:
実行可能な引数を使用する場合、各ワーカーノードのkubeletサービスファイル
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf
を編集し、KUBELET_ARGS
変数文字列の末尾に以下のパラメータを追加してください。--streaming-connection-idle-timeout=4h0m0s
修復方法3:
api configzエンドポイントを使用する場合、kubeletを実行しているノードからライブ構成を抽出して
"streamingConnectionIdleTimeout"
のステータスを検索することを検討してください。**ライブクラスターでノードの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