設定檔適用性:等級 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"
的狀態。設定本地 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=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 於即時叢集中查看詳細的逐步 configmap 程序,然後重新執行審核過程中的 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"
對於所有三種修復方法:
根據您的系統,重新啟動
kubelet
服務並檢查狀態:systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l