全部產品
Search
文件中心

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

更新時間:Aug 10, 2024

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

使用限制

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

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

注意事項

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

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

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

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

支援通過控制台自訂的kubelet參數

欄位

說明

預設值

建議取值範圍

allowedUnsafeSysctls

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

重要

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

不涉及

支援下述首碼的 sysctl 配置:

  • kernel.shm

  • kernel.msg

  • kernel.sem

  • fs.mqueue.

  • net.

containerLogMaxFiles

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

10

[2, 10]

containerLogMaxSize

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

100Mi

不涉及

eventRecordQPS

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

5

[1, 50]

eventBurst

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

10

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

featureGates

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

image.png

重要

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

不涉及

不涉及

kubeAPIQPS

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

5

[1, 50]

kubeAPIBurst

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

10

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

registryPullQPS

鏡像倉庫的QPS上限。

5

[1, 50]

registryBurst

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

10

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

serializeImagePulls

串列拉取鏡像。

False

可選值:

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

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

cpuManagerPolicy

CPU管理器策略。

none

可選值:

  • none

  • static

evictionHard

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

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

evictionSoft

設定一組驅逐閾值。

evictionSoftGracePeriod

設定一組驅逐寬限期。

說明

需已設定evictionSoft。

kubeReserved

Kubernetes系統預留的資源配置。

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

不涉及

maxPods

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

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

不涉及

systemReserved

系統預留的資源配置。

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

不涉及

readOnlyPort

kubelet無鑒權唯讀連接埠。

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

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

0

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

cpuCFSQuota

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

true

可選值:

  • true

  • false

cpuCFSQuotaPeriod

設定CPU CFS配額周期值。

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

100ms

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

podPidsLimit

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

16384

無。

memoryManagerPolicy

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

None

可選值:

  • None

  • Static

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

    • MemoryManager特性門控已被啟用。

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

topologyManagerPolicy

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

none

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

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

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

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

imageGCHighThresholdPercent

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

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

85

[60, 95]

imageGCLowThresholdPercent

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

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

80

[30, 90]

reservedMemory

NUMA節點記憶體預留列表。

無。

無。

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

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

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

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

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

  4. 仔細閱讀當前頁面上的注意事項,單擊自訂參數選擇需要配置的參數,設定每批次的最大並行數,然後單擊提交,按照頁面指引完成操作。

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

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

    說明

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

FAQ

自訂配置會被棄用嗎?

隨著Kubernetes版本的演化,可能會有部分參數或FeatureGate被標記棄用或者從代碼移除。如果受Container Service for Kubernetes管理的自訂參數在新的版本不再適用時,相關配置會在叢集升級期間被移除棄用。

如何啟用設定檔的方式管理kubelet?

Container Service for Kubernetes會根據社區的最佳實務調整kubelet配置的管理方式。在1.20版本之後,逐步將已經被標記棄用的kubelet啟動命令(Command-Line Flags)改為設定檔。更多資訊,請參見Kubelet Configuration (v1beta1)

新增節點(新建立的節點和新添加的節點)會同時保留設定檔和原有的配置方式;存量節點不受影響。如需將節點統一為設定檔管理的方式,您可以參見支援通過控制台自訂的kubelet參數觸發自訂配置,以統一節點池內全量節點的配置。

如何自訂控制台不支援的參數?

強烈不建議您通過黑屏操作自行定義控制台不支援的kubelet參數。如需執行此操作,請在充分評估變更風險後,執行以下命令,修改節點池的Userdata。Userdata修改完成後,新擴容的節點將會帶有您自行定義的配置。

echo 'KUBELET_CUSTOMIZED_ARGS=""' > /etc/kubernetes/kubelet-customized-args.conf
systemctl daemon-reload
systemctl restart kubelet

此外,針對支援通過控制台自訂的kubelet參數,請避免通過黑屏修改Userdata的方式來自行定義,避免配置衝突,繼而導致節點池營運過程中產生非預期結果。

重要

黑屏操作存在很大的穩定性風險,需要您自行保證Userdata檔案內容的正確性和相容性,避免因配置錯誤或者配置被新版本棄用時導致節點不可用。

相關文檔