ビュー:
プロファイル適用性: レベル1 - ワーカーノード
この推奨事項は、サービス拒否 (DoS) 攻撃、非アクティブな接続、一時ポートの枯渇に関連するリスクを軽減するために、Kubeletへのストリーミング接続にタイムアウトを設定する重要性を強調しています。これらのタイムアウトを適切に設定することで、ネットワーク接続の安全で効率的な運用が確保されます。

影響

長時間接続が中断される可能性があります。

監査

監査方法1:
注意
注意
Kubeletは設定ファイルまたはコマンドライン引数で構成できます。コマンドライン引数が優先されます。Kubeletの構成を監査する際には、コマンドライン引数と設定ファイルのエントリの両方を確認してください。
  1. 各ノードにSSHで接続し、次のコマンドを実行してアクティブなKubeletプロセスの詳細を表示します。
    ps -ef | grep kubelet
  2. プロセスのコマンドラインに引数--streaming-connection-idle-timeoutが含まれている場合、それが0に設定されていないことを確認してください。引数--streaming-connection-idle-timeoutが存在しない場合は、代わりにKubelet設定ファイルの場所を指定する引数--configを参照してください。
    cat /etc/kubernetes/kubelet/kubelet-config.json
  3. Kubelet設定ファイルを開く:
    sudo less /path/to/kubelet-config.json
  4. streamingConnectionIdleTimeout 引数が 0 に設定されていないことを確認してください。
監査方法2:
APIのconfigzエンドポイントを使用する場合、Kubeletを実行しているノードからライブ構成を抽出して"streamingConnectionIdleTimeout": "4h0m0s"のステータスを検索することを検討してください。
  1. ローカルプロキシポートと以下の変数を設定し、プロキシポート番号とノード名を提供してください。
          export HOSTNAME_PORT=localhost:8001
          export NODE_NAME=my-node-name
          curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
         

修復

方法 1:
  1. Kubelet設定ファイルを変更する場合は、/etc/kubernetes/kubelet/kubelet-config.jsonファイルを編集してください。
          {
          "streamingConnectionIdleTimeout": "4h0m0s"
          }
         
  2. kubeletサービスファイル/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf--streaming-connection-idle-timeout引数を指定していないことを確認してください。指定するとKubelet設定ファイルが上書きされます。
  3. お使いのシステムに基づいて、kubeletサービスを再起動し、ステータスを確認してください。
          systemctl daemon-reload
          systemctl restart kubelet.service
          systemctl status kubelet -l
         
方法2:
  1. 実行可能な引数を使用する場合、各ワーカーノードの kubelet サービスファイル /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf を編集し、KUBELET_ARGS 変数文字列の末尾に以下のパラメータを追加してください。
          --streaming-connection-idle-timeout=4h0m0s
         
  2. お使いのシステムに基づいて、kubeletサービスを再起動し、ステータスを確認してください。
          systemctl daemon-reload
          systemctl restart kubelet.service
          systemctl status kubelet -l
         
方法 3:
  1. 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"
         
  2. お使いのシステムに基づいて、kubeletサービスを再起動し、ステータスを確認してください。
          systemctl daemon-reload
          systemctl restart kubelet.service
          systemctl status kubelet -l