全部產品
Search
文件中心

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

更新時間:Nov 14, 2024

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

使用限制

僅1.28及以上版本的ACK叢集支援自訂節點池OS參數。具體操作,請參見建立ACK託管叢集建立ACK專有叢集建立ACK Edge叢集。如需升級叢集,請參見手動升級叢集

注意事項

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

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

  • 請勿自行修改控制台不支援自訂的OS參數,避免因配置錯誤導致的節點不可用或手動修改內容被覆蓋。例如,通過黑屏操作手動修改/etc/sysctl.d/99-k8s.conf中的內容,會導致叢集執行營運操作(例如叢集升級、自訂參數修改等)時覆蓋已修改的配置。

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

欄位名稱

說明

預設值

推薦取值範圍

fs.aio-max-nr

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

65536

[65536, 6553500]

fs.file-max

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

2097152

[8192, 12000500]

fs.inotify.max_user_watches

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

524288

[524288, 2097152]

fs.nr_open

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

1048576

[1000000, 20000500]

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

kernel.pid_max

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

4194303

大於1048575

kernel.threads-max

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

504581

大於500000

net.core.netdev_max_backlog

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

16384

[1000, 3240000]

net.core.optmem_max

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

20480

[20480, 4194304]

net.core.rmem_max

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

16777216

[212992, 134217728]

net.core.wmem_max

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

16777216

[212992, 134217728]

net.core.wmem_default

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

212992

大於等於212992

net.ipv4.tcp_mem

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

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

三個參數逐漸增大,且最小值為80000以上

net.ipv4.neigh.default.gc_thresh1

控制ARP緩衝的垃圾收集。

128

[128, 80000]

net.ipv4.neigh.default.gc_thresh2

1024

[512, 90000]

net.ipv4.neigh.default.gc_thresh3

8192

[1024, 100000]

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

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

說明
  • 目前處於灰階發布中。如需使用,請提交工單申請。

  • 下表中的預設值為在Alibaba Cloud Linux 2的4.19.91-18及之後的核心版本中系統預設值。

欄位名稱

說明

預設值

可取值

transparent_enabled

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

always

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

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

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

transparent_defrag

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

madvise

  • 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守護進程可能會在錯誤的時間啟動掃描和轉換大頁的操作,因此存在影響應用效能的可能性。

1

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

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

khugepaged_alloc_sleep_millisecs

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

60000,即預設等待60秒

khugepaged_scan_sleep_millisecs

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

10000,即預設每10秒喚醒一次

khugepaged_pages_to_scan

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

4096

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

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

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

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

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

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

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

    重要

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