當kubelet參數預設配置無法滿足業務需求、您希望對叢集節點進行個人化調整時,您可以在節點池維度自訂節點的kubelet參數配置,調整節點行為。例如,您可以調整叢集資源預留以調配資源用量、自訂節點壓力驅逐閾值以緩解叢集資源不足、調整拓撲管理器策略以提高系統效能等。
使用限制
若您的叢集版本不滿足限制條件,可能會出現非預期現象。
注意事項
自訂kubelet參數按批次變更節點配置,節點池中已有節點將即時生效,新增節點也會使用新配置。生效時,kubelet進程將重啟,可能會對節點運行和工作負載運行產生一定影響。請在業務低峰期操作。
如果未配置evictionHard、kubeReserved或systemReserved,系統則會使用預設值配置資源預留。預設值的計算方式,請參見節點資源預留策略。
資源預留配置的改變,可能會造成節點的可分配資源變少。對於資源水位較高的節點,可能會觸發節點驅逐。
強烈不建議您通過黑屏操作自行定義控制台不支援的kubelet參數。黑屏操作存在很大的穩定性風險,需要您自行保證Userdata檔案內容的正確性和相容性,避免因配置錯誤或者配置被新版本棄用時導致節點不可用。
支援通過控制台自訂的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最大數量。 | 不涉及。取決於機器規格和容器網路規劃等實體資源配置。 | 不涉及。 |
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] |
通過控制台自訂節點池kubelet參數
自訂kubelet參數生效時會重啟kubelet進程,可能會對業務產生一定影響。請在業務低峰期進行操作。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在節點池列表頁面,單擊目標節點池操作列下的更多> Kubelet配置。
仔細閱讀當前頁面上的注意事項,單擊自訂參數選擇需要配置的參數,設定每批次的最大並行數,然後單擊提交,按照頁面指引完成操作。
配置每批次的最大並行數後(推薦設定為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檔案內容的正確性和相容性,避免因配置錯誤或者配置被新版本棄用時導致節點不可用。