設定檔適用性:等級 2
應捕捉安全相關資訊。Kubelet 上的
--eventRecordQPS 標誌可用於限制事件收集的速率。若設定過低可能導致相關事件未被記錄,但將其設為 0 的無限制設定可能會導致 kubelet 的服務拒絕。捕捉所有事件而不限制事件創建是很重要的。事件是安全資訊和分析的重要來源,確保使用事件資料持續監控您的環境。
注意請參閱 AKS 文件以了解預設值。
|
影響
將此參數設置為 0 可能會因創建過多事件而導致服務拒絕情況。應擴展叢集事件處理和存儲系統以應對預期的事件負載。
稽核
Audit Method 1-
SSH 到每個節點。
-
在每個節點上執行以下命令以找到 Kubelet 進程:
ps -ef | grep kubelet
檢查--eventRecordQPS參數的設定值,並確定其是否已為叢集設置在適當的水平。可以使用0的值來確保捕獲所有事件。 -
如果
--eventRecordQPS參數不存在,請檢查是否有由--config指定的 Kubelet 配置檔案,並檢視此位置的值。上述命令的輸出應返回類似--config /etc/kubernetes/kubelet/kubelet-config.json的內容,這是 Kubelet 配置檔案的 位置資訊。 -
打開 Kubelet 配置檔案:
cat /etc/kubernetes/kubelet/kubelet-config.json
-
如果有
eventRecordQPS的項目,請檢查其是否設定為0或適合叢集的適當級別。
如果使用 api configz 端點,請透過從執行 kubelet 的節點提取即時配置來搜尋
eventRecordQPS 的狀態。設定本地 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
export NODE_NAME=ip-192.168.31.226.aks.internal
curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
補救
Remediation Method 1如果要修改 Kubelet 配置檔,請編輯
kubelet-config.json 檔案 /etc/kubernetes/kubelet/kubelet-config.json,並將以下參數設置為 5 或大於等於 0 的值:"eventRecordQPS": 5
檢查
Remediation Method 2/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf 是否未定義 eventRecordQPS 的可執行參數,因為這會覆蓋您 Kubelet 的配置。如果使用可執行參數,請在每個工作節點上編輯 kubelet 服務檔案
/etc/systemd/system/kubelet.service.d/10-kubelet-args.conf,並在 KUBELET_ARGS 變數字串的末尾添加以下參數:--eventRecordQPS=5Remediation Method 3
如果使用 api configz 端點,請透過從執行 kubelet 的節點提取即時配置來搜尋
"eventRecordQPS" 的狀態。在在運行中的叢集中重新配置節點的 Kubelet中查看詳細的 configmap 步驟,然後重新執行來自審核過程的 curl 語句以檢查 kubelet 配置的變更:
kubectl proxy --port=8001 &
export HOSTNAME_PORT=localhost:8001
export NODE_NAME=ip-192.168.31.226.aks.internal
curl -sSL "http://${HOSTNAME_PORT}/api/v1/nodes/${NODE_NAME}/proxy/configz"
For all three remediations: 根據您的系統,重新啟動 kubelet 服務並檢查狀態:
systemctl daemon-reload systemctl restart kubelet.service systemctl status kubelet -l
