當預設的kubelet配置無法滿足業務需求時,您可以在節點池維度自訂節點的kubelet參數配置,調整節點行為。例如,您可以調整叢集資源預留以調配資源用量、自訂節點壓力驅逐閾值以緩解叢集資源不足、調整拓撲管理器策略以提高系統效能等。
使用限制
叢集版本不滿足限制條件時可能會出現非預期現象。
注意事項
自訂kubelet參數按批次變更節點配置。節點池中已有節點將即時生效,新增節點也會使用新配置。生效時,kubelet進程將重啟,可能影響節點和工作負載的運行。請在業務低峰期操作。
如果未配置evictionHard、kubeReserved或systemReserved,系統則會使用預設值配置資源預留。預設值的計算方式,請參見節點資源預留策略。
資源預留配置的改變,可能會造成節點的可分配資源變少。對於資源水位較高的節點,可能會觸發節點驅逐。
強烈不建議您通過黑屏操作自行定義控制台不支援的kubelet參數。黑屏操作存在很大的穩定性風險,需要您自行保證Userdata檔案內容的正確性和相容性,避免因配置錯誤或者配置被新版本棄用時導致節點不可用。
kubelet 啟動時會遵循特定的優先順序來合并不同配置來源。如果同一配置項通過多種方式配置,優先順序高的配置會將優先順序低的配置覆蓋。
通過控制台自訂節點池kubelet參數
自訂kubelet參數生效時會重啟kubelet進程,可能會對業務產生一定影響。請在業務低峰期進行操作。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在節點池列表頁面,單擊目標節點池操作列下的
> Kubelet配置。仔細閱讀當前頁面上的注意事項,單擊自訂參數選擇需要配置的參數,指定待升級的節點,配置批次更新策略,然後單擊提交,按照頁面指引完成操作。
批次更新策略說明如下:
每批次的最大並行數:kubelet配置按批次對節點生效。執行需要一定時間,可在事件列表地區查看執行進度,控制執行過程(暫停、繼續、取消等)。
每批次間隔時間:每個批次之間的間隔時間長度。
可使用暫停功能對已升級的節點進行驗證。執行暫停操作時,正在配置中的節點會繼續完成執行;尚未執行的節點在任務繼續前不會被執行自訂配置。
建議儘快完成自訂配置任務。處於暫停狀態的任務將在7天后自動取消,相關的事件和日誌資訊也會被清理。
除控制台外,也可以通過ModifyNodePoolNodeConfig介面自訂kubelet參數。下文介紹ACK支援自訂的kubelet參數。
支援自訂的kubelet參數
欄位 | 說明 | 預設值 | 建議取值範圍 |
allowedUnsafeSysctls | 設定允許使用的非安全的sysctl或sysctl萬用字元(以 重要 使用此參數前,請仔細評估相關風險並自行保證可用性。 | 不涉及 | 支援下述首碼的 sysctl 配置:
|
containerLogMaxFiles | 容器的記錄檔個數上限,需大於等於2,且容器運行時需為containerd。 | 10 | [2, 10]。 |
containerLogMaxSize | 容器記錄檔輪換產生新檔案的最大閾值。容器運行時需為containerd。 | 100Mi | 不涉及。 |
cpuCFSQuota | 允許為設定了CPU限制的容器實施CPU CFS配額約束。 | true | 可選值:
|
cpuCFSQuotaPeriod | 設定CPU CFS配額周期值。 需確保CustomCPUCFSQuotaPeriod特性門控已被啟用 | 100ms | 介於1毫秒和1秒之間,包含1毫秒和1秒。 |
cpuManagerPolicy | CPU管理器策略。 | none | 可選值:
|
eventBurst | 事件記錄的個數的突發峰值上限。 | 10 | [1, 100],且取值必須大於等於 |
eventRecordQPS | 每秒可產生的事件數目量。 | 5 | [1, 50]。 |
evictionHard | 觸發Pod驅逐操作的一組硬性門限。 | imagefs.available<15%,memory.available<300Mi,nodefs.available<10%,nodefs.inodesFree<5% | 無。 |
evictionSoft | 設定一組驅逐閾值。 | 無 | 無。 |
evictionSoftGracePeriod | 設定一組驅逐寬限期。 說明 需已設定evictionSoft。 | 無 | 無。 |
featureGates | 實驗性特性的特性開關組。每個開關以
重要
| 不涉及 | 不涉及。 |
imageGCHighThresholdPercent | 配置鏡像的磁碟用量百分比閾值,一旦鏡像用量超過此閾值,鏡像垃圾收集會一直運行。 配置時,此值需大於imageGCLowThresholdPercent取值。 | 85 | [60, 95]。 |
imageGCLowThresholdPercent | 配置鏡像的磁碟用量百分比閾值,鏡像用量低於此閾值時不會執行鏡像垃圾收集操作。 配置時,此值需小於imageGCHighThresholdPercent取值。 | 80 | [30, 90]。 |
kubeAPIBurst | 每秒發送到APIServer的突發請求數量上限。 | 10 | [1, 100],且取值必須大於等於 |
kubeAPIQPS | 與APIServer通訊的每秒查詢個數。 | 5 | [1, 50]。 |
kubeReserved | Kubernetes系統預留的資源配置。 | 預設自動計算,詳細資料請參見節點資源預留策略。 | 不涉及。 |
maxPods | Node能啟動並執行Pod最大數量。 重要 修改maxPods的值不會影響節點上能分配的IP數量。maxPods取值過大可能導致使用非HostNetwork模式的Pod無法分配到IP地址,從而造成Pod啟動失敗。 | 不涉及。取決於機器規格和容器網路規劃等實體資源配置。 | 不涉及。 |
memoryManagerPolicy | 記憶體管理器需要使用的策略。 | None | 可選值:
|
podPidsLimit | 每個Pod中可使用的PID個數上限。
| 16384 | 無 |
readOnlyPort | kubelet無鑒權唯讀連接埠。 |
| 0 關於開放kubelet容器監控唯讀連接埠(10255)的風險,請參見【產品變更】遷移低版本ACK叢集監控連接埠至鑒權連接埠。 |
registryBurst | 突發性鏡像拉取的個數上限。 | 10 | [1, 100],且取值必須大於等於 |
registryPullQPS | 鏡像倉庫的QPS上限。 | 5 | [1, 50]。 |
reservedMemory | NUMA節點記憶體預留列表。 | 無。 | 無。 |
serializeImagePulls | 串列拉取鏡像。 | False | 可選值:
|
systemReserved | 系統預留的資源配置。 | 預設自動計算,詳細資料請參見節點資源預留策略。 | 不涉及。 |
topologyManagerPolicy | 拓撲管理器策略。藉助NUMA架構,資料可以被分配到相同的NUMA節點,以減少跨節點訪問,提高系統效能。拓撲管理器可以作出與拓撲結構相對應的資源分派決定。更多資訊,請參見控制節點上的拓撲管理原則。 | none |
|
containerLogMonitorInterval | 叢集版本需為1.30及以上。 檢測容器日誌執行輪轉操作的間隔時間。 | 10s | [3s,60s] |
containerLogMaxWorkers | 叢集版本需為1.30及以上。 執行日誌輪換操作的並發工作程式的最大數量。 | 1 | [1,20] |
tracing | 為叢集控制面或資料面組件啟用鏈路追蹤。 操作文檔,請參見鏈路追蹤管理。 | 無 |
|
FAQ
自訂配置會被棄用嗎?
隨著Kubernetes版本的演化,可能會有部分參數或FeatureGate被標記棄用或者從代碼移除。如果受ACK管理的自訂參數在新的版本不再適用時,相關配置會在叢集升級期間被移除棄用。
如何啟用設定檔的方式管理kubelet?
Container Service for Kubernetes會根據社區的最佳實務調整kubelet配置的管理方式。在1.20版本之後,逐步將已經被標記棄用的kubelet啟動命令(Command-Line Flags)改為設定檔。更多資訊,請參見Kubelet Configuration (v1beta1)。
新增節點(新建立的節點和新添加的節點)會同時保留設定檔和原有的配置方式;存量節點不受影響。如需將節點統一為設定檔管理的方式,您可以參見支援自訂的kubelet參數觸發自訂配置,以統一節點池內全量節點的配置。
想要修改的 kubelet 參數不在支援列表,應該如何修改?
ACK允許將自訂參數寫入至/etc/kubernetes/kubelet-customized-args.conf,該檔案用於儲存 kubelet 的自訂啟動參數和配置選項。寫入到該設定檔的 kubelet 參數會在節點重啟時優先生效,覆蓋通過節點池自訂 kubelet 配置功能寫入的參數值。
調整 kubelet 參數可能導致節點註冊失敗、Pod無法調度等,影響業務正常運行。請在操作前請充分評估變更風險。
(推薦)對於節點池未來擴容的節點,可將對自訂參數設定檔的寫入指令碼配置到節點池執行個體自訂資料中,以確保新增節點可預設使用這些自訂參數值。
在節點池配置中的執行個體自訂資料中的配置以下內容。其中,
${kubelet_key}和${kubelet_value}需替換為實際值。僅支援在執行個體自訂資料中使用
> /etc/kubernetes/kubelet-customized-args.conf或> kubelet-customized-args.conf的方式寫入。若在執行個體預自訂資料中通過其他方式操作kubelet-customized-args.conf,均會導致/etc/kubernetes/kubelet-customized-args.conf檔案在ACK初始化過程中被覆蓋。mkdir -p /etc/kubernetes echo 'KUBELET_CUSTOMIZED_ARGS="--${kubelet_key}=${kubelet_value}"' > /etc/kubernetes/kubelet-customized-args.conf systemctl daemon-reload systemctl restart kubelet操作入口,請參見建立和管理節點池。
對於節點池中的存量節點,可登入節點修改該自訂參數設定檔,同時手動執行以下命令使配置生效。
systemctl daemon-reload systemctl restart kubelet

更多資訊,請參見