協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定進階 Kubernetes 控制平面參數
本指南將逐步引導您使用 CLI 和 來設定和檢視進階 Kubernetes AWS 控制平面參數 AWS 管理主控台。如需每個參數的說明及其對叢集的影響,請參閱 進階 Kubernetes 控制平面組態。
先決條件
開始之前,請確定您具有下列先決條件:
-
執行 Kubernetes 1.31 版或更新版本的 Amazon EKS 叢集 – 執行 Kubernetes 1.31 版或更新版本的新叢集和現有叢集支援進階 Kubernetes 控制平面組態。本主題中的所有參數都會共用此最低版本。
-
AWS CLI – 用於使用 AWS 服務的命令列工具,包括 Amazon EKS。如需詳細資訊,請參閱《 AWS 命令列界面使用者指南》中的安裝。安裝 CLI AWS 之後,建議您也進行設定。如需詳細資訊,請參閱《 AWS 命令列界面使用者指南》中的具有 aws 設定的快速組態。
-
必要的 IAM 許可 – 您使用的 IAM 主體必須具有描述和更新 Amazon EKS 叢集的許可。若要檢查目前的委託人,請執行下列命令:
aws sts get-caller-identity
注意
建議您在 Bash shell 中完成本主題中的步驟。如果您不使用 Bash shell,則某些指令碼命令 (如行接續字元以及設定和使用變數的方式) 需要針對 shell 進行調整。此外,您的 Shell 的引用及轉義規則可能會有所不同。如需詳細資訊,請參閱《 AWS 命令列界面使用者指南》中的使用引號搭配 AWS CLI 中的字串。
執行本主題中的命令之前,請先設定您偏好的叢集名稱和區域:
export CLUSTER=my-eks-cluster export AWS_REGION=us-west-2
支援的值
Amazon EKS 會根據下列範圍驗證每個參數,並拒絕其外部的請求。
| 元件參數 | 支援的值 | 預設 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
這些值適用於發佈時可用的 Kubernetes 版本,並且可能會在更新版本中變更。若要擷取特定版本的目前值,請參閱下一節。
尋找 Kubernetes 版本的預設值和支援值
DescribeClusterVersions 操作會針對每個 Kubernetes 版本,報告每個控制平面參數的預設值和支援的值。讀取此操作中的值,而不是硬式編碼,尤其是在自動化叢集組態或管理多個 Kubernetes 版本的叢集時。
aws eks describe-cluster-versions --cluster-versions 1.35
回應包含controlPlaneComponentConfig物件,由控制平面元件組織。每個參數都會報告 defaultValue和 constraints 物件:
{ "clusterVersions": [ { "clusterVersion": "1.35", "clusterType": "eks", "defaultVersion": false, "releaseDate": "2026-01-23T00:00:00+00:00", "endOfStandardSupportDate": "2027-03-23T00:00:00+00:00", "endOfExtendedSupportDate": "2028-03-23T00:00:00+00:00", "status": "STANDARD_SUPPORT", "controlPlaneScalingTiers": [ { "tierName": "tier-xl", "apiRequestConcurrency": 2000, "podSchedulingRatePerSecond": 167, "clusterDatabaseSizeGb": 16 }, { "tierName": "tier-2xl", "apiRequestConcurrency": 4000, "podSchedulingRatePerSecond": 283, "clusterDatabaseSizeGb": 16 }, { "tierName": "tier-4xl", "apiRequestConcurrency": 8000, "podSchedulingRatePerSecond": 400, "clusterDatabaseSizeGb": 16 }, { "tierName": "tier-8xl", "apiRequestConcurrency": 16000, "podSchedulingRatePerSecond": 400, "clusterDatabaseSizeGb": 16 } ], "controlPlaneComponentConfig": { "kubeApiServerConfig": { "eventTtl": { "defaultValue": "60m", "constraints": { "min": "10m", "max": "60m" } }, "serviceNodePortRange": { "defaultValue": { "minPort": 30000, "maxPort": 32767 }, "constraints": { "minPort": {"min": 10260, "max": 32767}, "maxPort": {"min": 10260, "max": 32767} } } }, "kubeSchedulerConfig": { "nodeResourcesFit": { "scoringStrategy": { "defaultValue": { "type": "LeastAllocated", "resources": [ {"name": "cpu", "weight": 1}, {"name": "memory", "weight": 1} ] }, "constraints": { "scoringStrategy": { "allowedValues": ["LeastAllocated", "MostAllocated"] }, "resources": { "name": { "allowedValues": [ "cpu", "memory", "nvidia.com/gpu", "aws.amazon.com/neuron", "aws.amazon.com/neuroncore" ] }, "weight": {"min": 1, "max": 100} } } } } }, "kubeControllerManagerConfig": { "horizontalPodAutoscalerControllerConfig": { "horizontalPodAutoscalerSyncPeriod": { "defaultValue": "15s", "constraints": { "min": "10s", "max": "15s" } } }, "podGcControllerConfig": { "terminatedPodGcThreshold": { "defaultValue": 12500, "constraints": { "min": 10000, "max": 12500 } } } } } } ] }
上述回應顯示版本支援日期、佈建的控制平面擴展層,以及控制平面組態欄位。如需詳細資訊,請參閱《Amazon EKS API 參考》中的 DescribeClusterVersions。
若要僅傳回組態欄位,請使用 --query選項:
aws eks describe-cluster-versions --cluster-versions 1.35 \ --query 'clusterVersions[0].controlPlaneComponentConfig'
控制平面組態 - AWS CLI
每個控制平面元件都有自己的參數:--kube-scheduler-config、 --kube-controller-manager-config和 --kube-api-server-config。您只能指定要自訂的元件。每個參數接受內嵌 JSON。
使用控制平面參數建立叢集
下列命令會建立叢集,將新的 Kubernetes 事件保留 10 分鐘,而非預設的 60 分鐘。您未指定的參數會使用其預設值。
aws eks create-cluster \ --name "$CLUSTER" \ --kubernetes-version 1.35 \ --role-arn arn:aws:iam::111122223333:role/eks-service-role \ --resources-vpc-config subnetIds=subnet-abc123,subnet-def456,securityGroupIds=sg-xyz789 \ --kube-api-server-config '{ "eventTtl": "10m" }'
回應:
{ "cluster": { "name": "my-eks-cluster", "arn": "arn:aws:eks:us-west-2:111122223333:cluster/my-eks-cluster", "createdAt": 1709640000.0, "version": "1.35", "roleArn": "arn:aws:iam::111122223333:role/eks-service-role", "status": "CREATING", "kubeSchedulerConfig": { "nodeResourcesFit": { "scoringStrategy": { "type": "LeastAllocated" } } }, "kubeControllerManagerConfig": { "horizontalPodAutoscalerControllerConfig": { "horizontalPodAutoscalerSyncPeriod": "15s" } }, "kubeApiServerConfig": { "eventTtl": "10m", "serviceNodePortRange": { "minPort": 30000, "maxPort": 32767 } } } }
檢視叢集的控制平面組態
aws eks describe-cluster --name "$CLUSTER"
回應包含 kubeSchedulerConfig、 kubeControllerManagerConfig和 kubeApiServerConfig作為最上層欄位。這些欄位一律存在,並顯示在控制平面上執行的完整組態,包括您尚未自訂的參數及其預設值。
若要傳回單一元件的組態,請使用 --query選項:
aws eks describe-cluster --name "$CLUSTER" \ --query 'cluster.kubeSchedulerConfig'
回應:
{ "nodeResourcesFit": { "scoringStrategy": { "type": "LeastAllocated" } } }
設定排程器評分策略
根據預設,排程器會使用 LeastAllocated策略,將 Pod 分散到各個節點。下列命令會將其變更為 MostAllocated,這偏好具有較高資源配置的節點,並將 Pod 封裝到較少節點。
aws eks update-cluster-config \ --name "$CLUSTER" \ --kube-scheduler-config '{ "nodeResourcesFit": { "scoringStrategy": { "type": "MostAllocated" } } }'
回應:
{ "update": { "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "status": "InProgress", "type": "ControlPlaneComponentConfigUpdate", "params": [ { "type": "kubeSchedulerConfig", "value": "{\"nodeResourcesFit\":{\"scoringStrategy\":{\"type\":\"MostAllocated\"}}}" } ], "createdAt": 1709643600.0, "errors": [] } }
您也可以在評分計算中指定resources陣列來權重個別資源,當特定資源是叢集中的限制條件時,這會很有用。如需詳細資訊,請參閱進階 Kubernetes 控制平面組態。
其他控制平面參數遵循相同的模式,每個都具有自己的元件旗標:--kube-api-server-config適用於 eventTtl和 serviceNodePortRange,--kube-controller-manager-config適用於 Horizontal Pod Autoscaler 同步期間。如需了解每個參數的功能,以及在變更參數之前要考慮的內容,請參閱 進階 Kubernetes 控制平面組態。
一次更新多個元件
您可以在單一呼叫中指定多個元件參數:
aws eks update-cluster-config \ --name "$CLUSTER" \ --kube-scheduler-config '{"nodeResourcesFit":{"scoringStrategy":{"type":"MostAllocated"}}}' \ --kube-api-server-config '{"eventTtl":"30m"}'
更新會與您現有的組態合併。只有您指定的欄位會變更,而您省略的欄位會保留其目前值。上述命令會讓您的控制器管理員組態保持不變。
監控控制平面組態更新
update-cluster-config 傳回時,組態變更不會生效。Amazon EKS 透過控制平面的滾動更新來套用新組態,這需要幾分鐘的時間。若要封鎖 ,直到變更完成:
aws eks wait cluster-active --name "$CLUSTER"
此命令會在叢集達到ACTIVE狀態時傳回,通常在幾分鐘內。
若要列出叢集的更新:
aws eks list-updates --name "$CLUSTER"
回應:
{ "updateIds": [ "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" ] }
若要檢視特定更新的狀態:
aws eks describe-update --name "$CLUSTER" \ --update-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
當更新完成Successful時,狀態會從 InProgress 變更為 ,或在發生錯誤Failed時變更為 。errors 欄位指出失敗的原因。
控制平面組態 — AWS 管理主控台
若要在建立叢集時設定進階 Kubernetes 控制平面參數:
-
開啟 Amazon EKS 主控台
。 -
選擇 Create Cluster (建立叢集)。
-
在組態選項下,請選取自訂組態。
-
向下捲動至控制平面組態。
-
選擇啟用控制平面組態。
-
設定您要設定的參數。您保持不變的參數會使用其預設值。
-
視需要選取其他叢集組態選項。在最後一個步驟中,選擇建立叢集。叢集建立可能需要幾分鐘的時間才能完成。
若要在現有叢集上設定進階 Kubernetes 控制平面參數:
-
開啟 Amazon EKS 主控台
。 -
選擇您要更新的叢集。
-
選擇概觀索引標籤,然後向下捲動至控制平面組態。
-
選擇管理,然後選取啟用控制平面組態以設定您要變更的參數。接著選擇 Save changes (儲存變更)。