全部產品
Search
文件中心

Container Service for Kubernetes:自訂節點池的kubelet參數配置

更新時間:Nov 19, 2025

當預設的kubelet配置無法滿足業務需求時,您可以在節點池維度自訂節點的kubelet參數配置,調整節點行為。例如,您可以調整叢集資源預留以調配資源用量、自訂節點壓力驅逐閾值以緩解叢集資源不足、調整拓撲管理器策略以提高系統效能等。

使用限制

  • 僅1.20版本及以上的ACK叢集支援自訂kubelet參數。如需升級叢集,請參見手動升級叢集

  • 僅1.22版本及以上的ACK靈駿叢集支援自訂kubelet參數。如需升級叢集,請參見升級叢集

叢集版本不滿足限制條件時可能會出現非預期現象。

注意事項

  • 自訂kubelet參數按批次變更節點配置。節點池中已有節點將即時生效,新增節點也會使用新配置。生效時,kubelet進程將重啟,可能影響節點和工作負載的運行。請在業務低峰期操作。

  • 如果未配置evictionHard、kubeReserved或systemReserved,系統則會使用預設值配置資源預留。預設值的計算方式,請參見節點資源預留策略

  • 資源預留配置的改變,可能會造成節點的可分配資源變少。對於資源水位較高的節點,可能會觸發節點驅逐。

  • 強烈不建議您通過黑屏操作自行定義控制台不支援的kubelet參數。黑屏操作存在很大的穩定性風險,需要您自行保證Userdata檔案內容的正確性和相容性,避免因配置錯誤或者配置被新版本棄用時導致節點不可用。

  • kubelet 啟動時會遵循特定的優先順序來合并不同配置來源。如果同一配置項通過多種方式配置,優先順序高的配置會將優先順序低的配置覆蓋。

    展開查看配置合并順序

    以下配置的優先順序由低到高進行排序:

    1. 命令列中的特性門控(Feature Gates),即通過命令列 --feature-gates 指定的Feature Gates。

    2. kubelet 設定檔,即通過 ACK 控制台或 OpenAPI 自訂的參數配置。

    3. 外掛程式設定檔(Plugin configurations),即kubelet 配置目錄下按字母順序載入的外掛程式設定檔。

    4. 命令列參數,即除Feature Gates外,其他通過命令列直接指定的參數。

通過控制台自訂節點池kubelet參數

自訂kubelet參數生效時會重啟kubelet進程,可能會對業務產生一定影響。請在業務低峰期進行操作。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  3. 在節點池列表頁面,單擊目標節點池操作列下的image> Kubelet配置

  4. 仔細閱讀當前頁面上的注意事項,單擊自訂參數選擇需要配置的參數,指定待升級的節點,配置批次更新策略,然後單擊提交,按照頁面指引完成操作。

    批次更新策略說明如下:

    • 每批次的最大並行數:kubelet配置按批次對節點生效。執行需要一定時間,可在事件列表地區查看執行進度,控制執行過程(暫停、繼續、取消等)。

    • 每批次間隔時間:每個批次之間的間隔時間長度。

    可使用暫停功能對已升級的節點進行驗證。執行暫停操作時,正在配置中的節點會繼續完成執行;尚未執行的節點在任務繼續前不會被執行自訂配置。

    建議儘快完成自訂配置任務。處於暫停狀態的任務將在7天后自動取消,相關的事件和日誌資訊也會被清理。

除控制台外,也可以通過ModifyNodePoolNodeConfig介面自訂kubelet參數。下文介紹ACK支援自訂的kubelet參數。

支援自訂的kubelet參數

欄位

說明

預設值

建議取值範圍

allowedUnsafeSysctls

設定允許使用的非安全的sysctl或sysctl萬用字元(以*結尾的萬用字元模式)。使用英文半形逗號(,)分隔。

重要

使用此參數前,請仔細評估相關風險並自行保證可用性。

不涉及

支援下述首碼的 sysctl 配置:

  • kernel.shm

  • kernel.msg

  • kernel.sem

  • fs.mqueue.

  • net.

containerLogMaxFiles

容器的記錄檔個數上限,需大於等於2,且容器運行時需為containerd。

10

[2, 10]。

containerLogMaxSize

容器記錄檔輪換產生新檔案的最大閾值。容器運行時需為containerd。

100Mi

不涉及。

cpuCFSQuota

允許為設定了CPU限制的容器實施CPU CFS配額約束。

true

可選值:

  • true

  • false

cpuCFSQuotaPeriod

設定CPU CFS配額周期值。

需確保CustomCPUCFSQuotaPeriod特性門控已被啟用

100ms

介於1毫秒和1秒之間,包含1毫秒和1秒。

cpuManagerPolicy

CPU管理器策略。

none

可選值:

  • none

  • static

eventBurst

事件記錄的個數的突發峰值上限。

10

[1, 100],且取值必須大於等於eventRecordQPS的值。

eventRecordQPS

每秒可產生的事件數目量。

5

[1, 50]。

evictionHard

觸發Pod驅逐操作的一組硬性門限。

imagefs.available<15%,memory.available<300Mi,nodefs.available<10%,nodefs.inodesFree<5%

無。

evictionSoft

設定一組驅逐閾值。

無。

evictionSoftGracePeriod

設定一組驅逐寬限期。

說明

需已設定evictionSoft。

無。

featureGates

實驗性特性的特性開關組。每個開關以key=value的形式表示。更多資訊,請參見Feature Gates

image.png

重要
  • 使用此參數前,請仔細評估相關風險並自行保證可用性。

  • 已移除的特性門控無法生效,請及時更新處理。詳細資料,請參見Feature Gates (removed)

不涉及

不涉及。

imageGCHighThresholdPercent

配置鏡像的磁碟用量百分比閾值,一旦鏡像用量超過此閾值,鏡像垃圾收集會一直運行。

配置時,此值需大於imageGCLowThresholdPercent取值。

85

[60, 95]。

imageGCLowThresholdPercent

配置鏡像的磁碟用量百分比閾值,鏡像用量低於此閾值時不會執行鏡像垃圾收集操作。

配置時,此值需小於imageGCHighThresholdPercent取值。

80

[30, 90]。

kubeAPIBurst

每秒發送到APIServer的突發請求數量上限。

10

[1, 100],且取值必須大於等於kubeAPIQPS的值

kubeAPIQPS

與APIServer通訊的每秒查詢個數。

5

[1, 50]。

kubeReserved

Kubernetes系統預留的資源配置。

預設自動計算,詳細資料請參見節點資源預留策略

不涉及。

maxPods

Node能啟動並執行Pod最大數量。

重要

修改maxPods的值不會影響節點上能分配的IP數量。maxPods取值過大可能導致使用非HostNetwork模式的Pod無法分配到IP地址,從而造成Pod啟動失敗。

不涉及。取決於機器規格和容器網路規劃等實體資源配置。

不涉及。

memoryManagerPolicy

記憶體管理器需要使用的策略。

None

可選值:

  • None

  • Static

    使用此策略時,需已完成以下操作:

    • MemoryManager特性門控已被啟用。

    • 已手動管理記憶體資源預留(systemReserved、kubeReserved、evictionHard、reservedMemory)並確保配置正確,即kube-reserved + system-reserved + eviction-hard = sum(reserved-memory),以避免節點不可用。您可以參見下圖樣本。image.png更多資訊,請參見預留記憶體標誌

podPidsLimit

每個Pod中可使用的PID個數上限。

  • 正整數:設定PID數量上限。

  • -1:對PID數量不設上限。

16384

readOnlyPort

kubelet無鑒權唯讀連接埠。

  • 叢集版本為1.26及以上時,預設值為0。

  • 叢集版本為1.26以下時,預設值為10255。

0

關於開放kubelet容器監控唯讀連接埠(10255)的風險,請參見【產品變更】遷移低版本ACK叢集監控連接埠至鑒權連接埠

registryBurst

突發性鏡像拉取的個數上限。

10

[1, 100],且取值必須大於等於registryPullQPS的值。

registryPullQPS

鏡像倉庫的QPS上限。

5

[1, 50]。

reservedMemory

NUMA節點記憶體預留列表。

無。

無。

serializeImagePulls

串列拉取鏡像。

False

可選值:

  • False:建議值,以支援並行拉取鏡像,提高Pod啟動速度。

  • True:支援串列拉取鏡像。

systemReserved

系統預留的資源配置。

預設自動計算,詳細資料請參見節點資源預留策略

不涉及。

topologyManagerPolicy

拓撲管理器策略。藉助NUMA架構,資料可以被分配到相同的NUMA節點,以減少跨節點訪問,提高系統效能。拓撲管理器可以作出與拓撲結構相對應的資源分派決定。更多資訊,請參見控制節點上的拓撲管理原則

none

  • none(預設):不執行拓撲管理原則。

  • restricted:當同一NUMA節點的Pod無法滿足資源請求時,kubelet不允許跨Pod實現資源請求。

  • best-effort:當同一NUMA節點的Pod無法滿足資源請求時,kubelet允許跨Pod實現資源請求。

  • single-numa-node:kubelet僅允許在同一NUMA節點的Pod上分配CPU和裝置資源。

containerLogMonitorInterval

叢集版本需為1.30及以上。

檢測容器日誌執行輪轉操作的間隔時間。

10s

[3s,60s]

containerLogMaxWorkers

叢集版本需為1.30及以上。

執行日誌輪換操作的並發工作程式的最大數量。

1

[1,20]

tracing

為叢集控制面或資料面組件啟用鏈路追蹤。

操作文檔,請參見鏈路追蹤管理

  • endpoint:推薦配置為localhost:4317

  • samplingRatePerMillion:[0 , 1000000]

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

相關文檔