檢視次數:
設定檔適用性:等級 1
請勿關閉串流連線的超時設定。
設定閒置超時可確保您免受拒絕服務攻擊、非活動連接以及耗盡臨時端口的影響。
注意
注意
預設情況下,--streaming-connection-idle-timeout 設定為 4 小時,這可能對於您所在的環境來說過高。適當地設定此值將能確保在完成合法使用情境後,這類串流連線會自動超時。
注意
注意
請參閱 EKS 文件以了解預設值。

影響

長時間連線可能會中斷。

稽核

稽核方法 1:
  1. SSH 到相關的節點。
  2. 在每個節點上執行以下命令以查找正在運行的 kubelet 進程:
    ps -ef | grep kubelet
    如果該程序的命令行包含參數streaming-connection-idle-timeout,請確認其未設置為0。
  3. 如果輸出中沒有 streaming-connection-idle-timeout 參數,請改為參考指定 Kubelet 設定檔案位置資訊的 config 參數,例如 --config /etc/kubernetes/kubelet/kubelet-config.json
  4. 開啟 Kubelet 設定檔:
    cat /etc/kubernetes/kubelet/kubelet-config.json
    驗證 streamingConnectionIdleTimeout 參數未設為 0。
稽核方法 2:
如果使用 api configz 端點,請考慮透過從運行 kubelet 的節點提取即時配置來搜尋 "streamingConnectionIdleTimeout":"4h0m0s" 的狀態。
設定本地 Proxy 通訊埠及以下變數,並提供 Proxy 通訊埠號碼及節點名稱:HOSTNAME_PORT="localhost-and-port-number" NODE_NAME="The-Name-Of-Node-To-Extract-Configuration" 從 "kubectl get nodes" 的輸出中獲取
kubectl proxy --port=8001 &
export HOSTNAME_PORT=localhost:8001 (example host and port number)
export NODE_NAME=ip-192.168.31.226.ec2.internal (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/kubelet-config.json,並將以下參數設置為格式為 #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」中的詳細逐步 configmap 程序,然後重新執行稽核程序中的 curl 語句,以檢查 kubelet 設定變更:
kubectl proxy --port=8001 &
export HOSTNAME_PORT=localhost:8001 (example host and port number)
export NODE_NAME=ip-192.168.31.226.ec2.internal (example node name from
"kubectl get nodes")
curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
對於所有三個修復措施:根據您的系統,重新啟動kubelet服務並檢查狀態:
systemctl daemon-reload
systemctl restart kubelet.service
systemctl status kubelet -l