檢視次數:
設定檔適用性:等級 1 - 工作節點
此建議強調在與 Kubelet 的串流連線上設置超時的重要性,以減輕與拒絕服務 (DoS) 攻擊、不活動連線和臨時端口耗盡相關的風險。正確配置這些超時設定可確保網路連線的安全和高效運行。

影響

長時間連線可能會中斷。

稽核

稽核方法 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. 設定本地 Proxy 通訊埠及以下變數,並提供 Proxy 通訊埠號碼和節點名稱:
          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"
          }
         
  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
         
方法二:
  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