自訂 Azure Kubernetes Service (AKS) 節點集區的節點設定

透過自訂節點設定,你可以調整作業系統設定或 Kubelet 參數,以符合你的工作負載需求。 當您建立 AKS 叢集或將節點集區新增至叢集時,可以自訂常用 OS 和 kubelet 設定子集。 若要設定超出此子集範圍的設定,請使用 DaemonSet 自訂您所需的設定,同時保留 AKS 對您節點的支援。

Prerequisites

隨著此服務開始支援新的設定和 kubelet 參數,可能需要註冊預覽功能旗標。 如果需要預覽標誌, 自訂節點設定參數參考 會呼叫它。

kubeReserved、hardEvictionThreshold、softEvictionThreshold、softEvictionGracePeriod 和 evictionMaxPodGracePeriodInSeconds kubelet 設定皆為預覽功能,且需要 CustomNodeConfigPreview功能旗標。 這些設定允許你自訂資源保留和驅逐門檻,這些也由 AKS 節點強化設定。 有關註冊步驟、預設值及範例,請參閱 AKS 中的 Node Hardening(預覽)。

為 AKS 節點池建立自訂節點設定檔

要更改作業系統和 Kubelet 設定,請建立一個新的設定檔,裡面有你想要的參數和設定。 如果你沒有指定參數值,就會使用預設值。

附註

以下範例展示了常見的設定設定。 調整設定以符合你的工作量需求。 欲了解完整支援的自訂設定參數清單,請參見 AKS 的自訂節點設定參數。

Kubelet 設定

建立含有下列內容的檔案 linuxkubeletconfig.json:

{
 "cpuManagerPolicy": "static",
 "cpuCfsQuota": true,
 "cpuCfsQuotaPeriod": "200ms",
 "imageGcHighThreshold": 90,
 "imageGcLowThreshold": 70,
 "topologyManagerPolicy": "best-effort",
 "allowedUnsafeSysctls": [
  "kernel.msg*",
  "net.*"
],
 "failSwapOn": false
}

若要自訂 Linux 節點集區的 Kube 保留資源與驅逐閾值,請參閱 「自訂節點強化設定」。

OS 設定

建立含有下列內容的檔案 linuxosconfig.json:

{
 "transparentHugePageEnabled": "madvise",
 "transparentHugePageDefrag": "defer+madvise",
 "swapFileSizeMB": 1500,
 "sysctls": {
  "netCoreSomaxconn": 163849,
  "netIpv4TcpTwReuse": true,
  "netIpv4IpLocalPortRange": "32000 60000"
 }
}

使用自訂設定檔建立 AKS 叢集

附註

在使用自訂設定檔建立新 AKS 叢集時,請留意以下資訊:

  • 如果你在建立叢集時指定配置,該配置只會適用於初始節點池中的節點。 叢集對於未在 JSON 檔案中設定的設定,會保留預設值。
  • CustomLinuxOsConfig 不支援 Windows 作業系統類型。
  • 預覽 kubeReserved 與驅逐閾值 kubelet 設定僅支援 Linux 節點集區,且需要 CustomNodeConfigPreview 功能旗標。 關於註冊步驟,請參見 AKS 中的 Node Hardening(預覽)。

透過執行 az aks create 指令,並為 --kubelet-config 和 --linux-os-config 參數指定您的設定檔,使用自訂設定檔建立新叢集。 下列範例命令會建立具有自訂 ./linuxkubeletconfig.json 和 ./linuxosconfig.json 檔案的新叢集:

az aks create --name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json

使用自訂設定檔新增節點池

附註

在使用自訂設定檔為現有 AKS 叢集新增節點池時,請留意以下資訊:

  • 當您將 Linux 節點集區新增至現有叢集時,可以指定 kubelet 設定、OS 設定或兩者。 當您將 Windows 節點集區新增至現有叢集時,僅能指定 kubelet 設定。 如果你在新增節點池時指定了設定,該配置只會適用於新節點池中的節點。 節點池對於未在 JSON 檔案中設定的設定,預設值會保留。
  • Linux 和 Windows 10 節點集區不支援 CustomKubeletConfig。
  • 預覽 kubeReserved 與驅逐閾值的 kubelet 設定僅支援 Linux 節點池,且需要 CustomNodeConfigPreview 功能旗標。 如需註冊步驟,請參閱 AKS 中的 Node Hardening(預覽)。

使用 az aks nodepool add 指令建立新的 Linux 節點集區,並為 --kubelet-config 和 --linux-os-config 參數指定組態檔。 以下範例指令會建立一個新的 Linux 節點池,並包含自訂 ./linuxkubeletconfig.json 檔案:

az aks nodepool add --name <node-pool-name> --cluster-name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json

確認設定已套用

套用自訂節點設定後,你可以透過 連接 主機並驗證 sysctl 或在檔案系統上進行設定變更,確認設定是否套用到節點上。

檢閱支援的自訂組態參數

關於支援的完整 kubelet 與 Linux OS 設定參數清單、允許值、預設值及描述,請參見 AKS 的自訂節點設定參數。

自訂節點配置的考量

在自訂節點配置時,請考慮以下幾點:

  • 節點映像升級會重新套用自訂節點設定。
  • 擴展作業會保留自訂節點設定。
  • AKS 不會對每個自訂節點設定參數或值進行飛行前驗證。 確保你指定的自訂節點設定參數和值是支援且有效的,以避免叢集節點可能出現的問題。
  • 預覽 kubeReserved 與驅逐閾值的 kubelet 設定僅在 Linux 節點池中提供。 如果你設定它們,請使用 自訂節點組態參數參考中支援的範圍、單位和配對規則。
  • 自訂節點設定參數的預設值常會隨著作業系統版本而改變。 套用自訂節點設定時,請檢視你設定參數的預設值,以確保自訂設定適合叢集節點的作業系統版本。
  • 限制有權限修改自訂節點設定的人數,以避免對叢集穩定性和效能造成意外影響。 考慮使用 Microsoft Entra ID 授權來限制對 Kubernetes API 叢集配置設定的存取。
  • 將有自訂配置的節點池與沒有自訂配置的節點池分開,以避免對可能敏感於某些組態變更的工作負載產生意外後果。 舉例來說,如果你有一個關鍵工作負載需要特定的 Kubelet 設定,可以考慮將該工作負載隔離到一個專用的節點池,並設定必要的自訂 Kubelet 設定。