全部產品
Search
文件中心

Container Service for Kubernetes:自訂節點池OS參數

更新時間:Aug 15, 2025

當Linux系統的OS參數預設配置無法滿足業務需求,您希望對叢集節點進行個人化調整時,您可以在節點池維度自訂節點的OS參數配置,以調優系統效能。自訂OS參數後,系統將按批次變更節點配置。節點池中已有節點將即時生效,新增節點也會使用新配置。

使用說明

本功能僅支援1.28及以上版本的ACK託管叢集ACK專有叢集(已停止建立)ACK Edge叢集。如需升級叢集,請參見手動升級叢集

注意事項

  • 動態修改OS節點配置有可能會造成節點上已存在的Pod發生配置變更,從而觸發Pod重建。請在使用前確保應用的高可用。

  • 不恰當的OS參數調整會改變Linux核心的運作方式,可能導致節點效能惡化或不可用,從而對業務產生影響。請在修改前深入瞭解待修改參數的作用,並在生產環境操作前進行充分測試。

配置節點池OS參數

您可以在節點池維度配置sysctl參數和Transparent Hugepage(THP)參數。這些參數均可通過修改設定檔的方式配置;THP參數部分sysctl參數還支援通過控制台或OpenAPI配置。

通過控制台或OpenAPI配置

控制台

自訂OS參數後,系統將按批次變更節點配置。配置變更後,節點池中已有節點將即時生效,新增節點也會使用新配置。自訂OS參數生效時會改變已有節點的OS參數配置,可能會對業務產生一定影響。請在業務低峰期操作。

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

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

  3. 在節點池列表的操作列,單擊目標節點池對應的image> OS 配置

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

    配置每批次的最大並行數後,OS配置將按批次對節點生效。執行過程中,您可以在事件記錄地區查看進度,並控制執行過程(暫停、繼續、取消等)。您可以使用暫停功能對已升級的節點進行驗證。暫停時,正在配置的節點會繼續完成執行,未執行的節點在任務繼續前不會被執行自訂配置。

    重要

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

OpenAPI

除控制台外,您也可以通過ModifyNodePoolNodeConfig介面自訂OS參數。

通過設定檔配置

ACK允許將自訂參數寫入至/etc/sysctl.d/99-user-customized.conf,該檔案是節點初始化和重啟時預留的可供自訂配置的檔案。寫入到該設定檔的 sysctl 參數會在節點重啟時優先生效,覆蓋作業系統預設值和通過節點池自訂 sysctl 配置功能寫入的參數值。

重要

調整 sysctl 參數會改變 Linux 核心的運作方式,可能導致節點效能惡化或不可用,影響業務正常運行。請在操作前請充分評估變更風險。

  • 對於節點池中的存量節點,可登入節點修改該自訂參數設定檔,同時手動執行sysctl -p /etc/sysctl.d/99-user-customized.conf命令使配置生效。

  • 對於節點池未來擴容的節點,可將對自訂參數設定檔的寫入指令碼配置到節點池執行個體預自訂資料中,以確保新增節點可預設使用這些自訂參數值。方式如下。

    在節點池配置中的執行個體預自訂資料中配置echo '${sysctl_key}=${sysctl_value}' > /etc/sysctl.d/99-user-customized.conf${sysctl_key}${sysctl_value}需替換實際值),將自訂配置寫入/etc/sysctl.d/目錄下的設定檔。

    操作入口,請參見建立和管理節點池

    image

sysctl參數列表

說明
  • 下表中的預設值指通過ACK初始化節點池時ACK預設設定的值。

  • 下列參數的取值範圍請參見Linux Kernel sysctl參數文檔。

  • 對於暫未支援通過控制台或 OpenAPI 配置的參數,以及未在表中列出的參數,您可以參見通過設定檔配置進行修改。

欄位名稱

說明

預設值

是否支援控制台或OpenAPI配置

fs.aio-max-nr

非同步I/O操作的最大數量。

65536

對

fs.file-max

系統層級能夠開啟的最大檔案控制代碼數。

2097152

對

fs.inotify.max_user_watches

單使用者能夠建立的inotify監視的最大數量。

524288

對

fs.nr_open

每個進程能夠開啟的檔案描述符數的最大數量。

此值應小於fs.file-max的取值

1048576

對

kernel.pid_max

系統可分配的最大PID數量。

4194303

對

kernel.threads-max

系統可建立的最大線程數量。

504581

對

net.core.netdev_max_backlog

介面接收資料包的速度快於核心的處理速度時,可以在INPUT端排隊的資料包的最大數量。

16384

對

net.core.optmem_max

每個網路通訊端允許的最大輔助緩衝區(Ancillary Buffer)大小,以位元組為單位。

20480

對

net.core.rmem_max

每個網路通訊端接收緩衝區的最大大小,以位元組為單位。

16777216

對

net.core.wmem_max

每個網路通訊端發送緩衝區的最大大小,以位元組為單位。

16777216

對

net.core.wmem_default

每個網路通訊端發送緩衝區的預設大小,以位元組為單位。

212992

對

net.ipv4.tcp_mem

TCP棧可以使用的記憶體量,以記憶體頁(大小通常為4KB)為單位。該參數由三個整數值組成,分別表示低水位、壓力水位和最高水位,必須嚴格按照順序設定。

根據系統總記憶體動態計算

對

net.ipv4.neigh.default.gc_thresh1

ARP緩衝中保留的最少條目數。緩衝中的條目數量低於此值時,系統不會執行垃圾收集。

系統預設定

對

net.ipv4.neigh.default.gc_thresh2

ARP緩衝中的最大條目數,為軟式節流,即緩衝中的條目數量達到此值時,系統會開始考慮執行垃圾收集,但不會立即強制執行,而會等待5秒延遲。

1024

對

net.ipv4.neigh.default.gc_thresh3

ARP緩衝中要保留的最大條目數,為硬限制,即緩衝中的條目數量達到此值時,系統會立即執行垃圾收集。如果緩衝中的條目數量一直超過此值,系統會不斷進行清理。

8192

對

user.max_user_namespaces

單個使用者支援建立的 User Namespace 數量上限。

0

對

kernel.softlockup_panic

發生軟鎖定時,核心會觸發Panic並重啟系統,以快速恢複系統狀態。

1

錯

kernel.softlockup_all_cpu_backtrace

檢測到軟鎖定時,捕獲所有CPU的調試資訊,便於問題診斷。

1

錯

vm.max_map_count

限制單個進程可擁有的最大記憶體映射地區數量,防止記憶體過度使用。

262144

錯

net.core.somaxconn

設定Socket監聽隊列的最大串連數,控制並發串連處理能力。

32768

錯

net.ipv4.tcp_wmem

配置TCP串連發送緩衝區的最小值(minimum)、預設值(default)和最大值(maximum)。單位:位元組。

此設定直接影響TCP串連的網路輸送量和記憶體佔用。

4096 12582912 16777216

錯

net.ipv4.tcp_rmem

配置TCP接收緩衝區的最小值(minimum)、預設值(default)和最大值(maximum)。單位:位元組。

此設定直接影響TCP串連的網路輸送量和記憶體佔用。

4096 12582912 16777216

錯

net.ipv4.tcp_max_syn_backlog

限制SYN隊列中未完成三向交握的串連請求數量。

8096

錯

net.ipv4.tcp_slow_start_after_idle

控制TCP串連在長時間空閑後是否重新使用慢啟動演算法。

0

錯

net.ipv4.ip_forward

啟用IPv4資料包轉寄功能,允許系統作為路由器轉寄資料包。

1

錯

net.bridge.bridge-nf-call-iptables

使橋接裝置在二層轉寄時應用iptables三層規則,以確保網路安全性原則生效。

1

錯

fs.inotify.max_user_instances

限制單個使用者可建立的inotify監視器數量,防止資源耗盡。

16384

錯

fs.inotify.max_queued_events

設定核心隊列中可快取的檔案系統事件數目量。

16384

錯

fs.may_detach_mounts

允許核心在掛載點仍被進程訪問時將其從命名空間中安全分離,避免整個命名空間被鎖定。

1

錯

THP參數列表

透明大頁THP(Transparent Huge Pages)是Linux核心中的一個通用特性,可以自動將小頁面(通常為4 KB)合并成大頁面(通常為2 MB或更大),以減少記憶體訪問頁表項PTE(Page Table Entries)大小和訪問次數,同時減輕了TLB(Translation Lookaside Buffer)緩衝的壓力,提高記憶體訪問的效率。

說明
  • 以下參數均支援通過控制台或OpenAPI配置。

  • 根據作業系統及其核心版本的不同,下列參數的預設值不同。更多資訊,請參見Linux Kernel THP參數文檔。

欄位名稱

說明

可取值

transparent_enabled

是否在系統全域開啟THP功能。

  • always:系統全域開啟THP功能。

  • never:系統全域關閉THP功能。

  • madvise:僅在通過madvise()進行系統調用,並且設定了MADV_HUGEPAGE標記的記憶體地區中開啟THP功能。

transparent_defrag

是否開啟透明大頁THP相關的磁碟重組配置。啟用後,如果記憶體中的小頁能夠被合并成一個大頁,可以減少頁表的大小並提高系統的效能。

  • always:當系統分配不出透明大頁時,暫停記憶體配置行為,總是等待系統進行記憶體的直接回收和記憶體的直接整理。記憶體回收和整理結束後,如果存在足夠的連續空閑記憶體,則繼續分配透明大頁。

  • defer:當系統分配不出透明大頁時,轉為分配普通的4 KB頁。同時,系統會喚醒kswapd守護進程進行記憶體的後台回收,喚醒kcompactd守護進程進行記憶體的後台整理。一段時間後,如果存在足夠的連續空閑記憶體,khugepaged守護進程可將此前分配的4 KB頁合并為2 MB的透明大頁。

  • madvise:僅在通過madvise()進行系統調用,並且設定了MADV_HUGEPAGE標記的記憶體地區中,記憶體配置行為等同於always。

    其餘部分的記憶體配置行為仍然為:發生缺頁異常時,轉為分配普通的4 KB頁。

  • defer+madvise:僅在通過madvise()進行系統調用,並且設定了MADV_HUGEPAGE標記的記憶體地區中,記憶體配置行為等同於always。其餘部分的記憶體配置行為仍然為defer。

  • never:禁止磁碟重組。

khugepaged_defrag

khugepaged是一個核心線程,主要負責管理和整理大頁,以減少記憶體片段化並提高效能。它會監視系統中的大頁面,當發現分散的大頁時,嘗試將它們合并成更大的頁,以提高記憶體利用率和效能。

由於該操作會在記憶體路徑中執行鎖定操作,且khugepaged守護進程可能會在錯誤的時間啟動掃描和轉換大頁的操作,因此存在影響應用效能的可能性。

  • 0:關閉khugepaged磁碟重組功能。

  • 1:khugepaged守護進程會在系統空閑時周期性喚醒,嘗試將連續的4 KB頁合并成2 MB的透明大頁。

khugepaged_alloc_sleep_millisecs

當透明大頁THP分配失敗時,khugepaged守護進程進行下一次大頁分配前需要等待的時間,以避免短時間內連續發生大頁分配失敗。單位為毫秒。

請參見khugepaged磁碟重組

khugepaged_scan_sleep_millisecs

khugepaged守護進程每次喚醒的時間間隔。單位為毫秒。

khugepaged_pages_to_scan

khugepaged守護進程每次喚醒後掃描的記憶體頁數量。單位為頁。