設定檔適用性:等級 1 - 工作節點
此建議強調在與 Kubelet 的串流連線上設置超時的重要性,以減輕與拒絕服務 (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"
的狀態。-
設定本地 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"
補救措施
方法一:
-
如果修改 Kubelet 配置檔案,請編輯
/etc/kubernetes/kubelet/kubelet-config.json
檔案:{ "streamingConnectionIdleTimeout": "4h0m0s" }
-
您應確保 kubelet 服務檔案
/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
方法二:
-
如果使用可執行參數,請在每個工作節點上編輯 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