

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定進階 Kubernetes 控制平面參數
<a name="control-plane-configuration-getting-started"></a>

本指南將逐步引導您使用 CLI 和 來設定和檢視進階 Kubernetes AWS 控制平面參數 AWS 管理主控台。如需每個參數的說明及其對叢集的影響，請參閱 [進階 Kubernetes 控制平面組態](control-plane-configuration.md)。

## 先決條件
<a name="_prerequisites"></a>

開始之前，請確定您具有下列先決條件：
+  **執行 Kubernetes 1.31 版或更新版本的 Amazon EKS 叢集** – 執行 Kubernetes 1.31 版或更新版本的新叢集和現有叢集支援進階 Kubernetes 控制平面組態。本主題中的所有參數都會共用此最低版本。
+  ** AWS CLI** – 用於使用 AWS 服務的命令列工具，包括 Amazon EKS。如需詳細資訊，請參閱《 * AWS 命令列界面使用者指南*》中的[安裝](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)。安裝 CLI AWS 之後，建議您也進行設定。如需詳細資訊，請參閱《 * AWS 命令列界面使用者指南*》中的[具有 aws 設定的快速組態](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)。
+  **必要的 IAM 許可** – 您使用的 IAM 主體必須具有描述和更新 Amazon EKS 叢集的許可。若要檢查目前的委託人，請執行下列命令：

  ```
  aws sts get-caller-identity
  ```

**注意**  
建議您在 Bash shell 中完成本主題中的步驟。如果您不使用 Bash shell，則某些指令碼命令 (如行接續字元以及設定和使用變數的方式) 需要針對 shell 進行調整。此外，您的 Shell 的引用及轉義規則可能會有所不同。如需詳細資訊，請參閱《 * AWS 命令列界面使用者指南*[》中的使用引號搭配 AWS CLI 中的字串](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-quoting-strings.html)。

執行本主題中的命令之前，請先設定您偏好的叢集名稱和區域：

```
export CLUSTER=my-eks-cluster
export AWS_REGION=us-west-2
```

## 支援的值
<a name="_supported_values"></a>

Amazon EKS 會根據下列範圍驗證每個參數，並拒絕其外部的請求。


| 元件參數 | 支援的值 | 預設 | 
| --- | --- | --- | 
|  `kubeSchedulerConfig.nodeResourcesFit.scoringStrategy.type`  |  `LeastAllocated`, `MostAllocated`  |  `LeastAllocated`  | 
|  `kubeSchedulerConfig.nodeResourcesFit.scoringStrategy.resources[].weight`  |  `1` 至 `100`  |  `cpu: 1`, `memory: 1`  | 
|  `kubeControllerManagerConfig.horizontalPodAutoscalerControllerConfig.horizontalPodAutoscalerSyncPeriod`  |  `10s` 至 `15s`  |  `15s`  | 
|  `kubeControllerManagerConfig.podGcControllerConfig.terminatedPodGcThreshold`  |  `10000` 至 `12500`  |  `12500`  | 
|  `kubeApiServerConfig.eventTtl`  |  `10m` 至 `60m`  |  `60m`  | 
|  `kubeApiServerConfig.serviceNodePortRange.minPort`  |  `10260` 至 `32767`  |  `30000`  | 
|  `kubeApiServerConfig.serviceNodePortRange.maxPort`  |  `10260` 至 `32767`  |  `32767`  | 

這些值適用於發佈時可用的 Kubernetes 版本，並且可能會在更新版本中變更。若要擷取特定版本的目前值，請參閱下一節。

## 尋找 Kubernetes 版本的預設值和支援值
<a name="_find_the_defaults_and_supported_values_for_a_kubernetes_version"></a>

`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](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeClusterVersions.html)。

若要僅傳回組態欄位，請使用 `--query`選項：

```
aws eks describe-cluster-versions --cluster-versions 1.35 \
--query 'clusterVersions[0].controlPlaneComponentConfig'
```

## 控制平面組態 - AWS CLI
<a name="control_plane_configuration_shared_aws_cli"></a>

每個控制平面元件都有自己的參數：`--kube-scheduler-config`、 `--kube-controller-manager-config`和 `--kube-api-server-config`。您只能指定要自訂的元件。每個參數接受內嵌 JSON。

### 使用控制平面參數建立叢集
<a name="_create_a_cluster_with_control_plane_parameters"></a>

下列命令會建立叢集，將新的 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
            }
        }
    }
}
```

### 檢視叢集的控制平面組態
<a name="_view_the_control_plane_configuration_for_a_cluster"></a>

```
aws eks describe-cluster --name "$CLUSTER"
```

回應包含 `kubeSchedulerConfig`、 `kubeControllerManagerConfig`和 `kubeApiServerConfig`作為最上層欄位。這些欄位一律存在，並顯示在控制平面上執行的完整組態，包括您尚未自訂的參數及其預設值。

若要傳回單一元件的組態，請使用 `--query`選項：

```
aws eks describe-cluster --name "$CLUSTER" \
--query 'cluster.kubeSchedulerConfig'
```

回應：

```
{
    "nodeResourcesFit": {
        "scoringStrategy": {
            "type": "LeastAllocated"
        }
    }
}
```

### 設定排程器評分策略
<a name="_configure_the_scheduler_scoring_strategy"></a>

根據預設，排程器會使用 `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 控制平面組態](control-plane-configuration.md)。

其他控制平面參數遵循相同的模式，每個都具有自己的元件旗標：`--kube-api-server-config`適用於 `eventTtl`和 `serviceNodePortRange`，`--kube-controller-manager-config`適用於 Horizontal Pod Autoscaler 同步期間。如需了解每個參數的功能，以及在變更參數之前要考慮的內容，請參閱 [進階 Kubernetes 控制平面組態](control-plane-configuration.md)。

### 一次更新多個元件
<a name="_update_more_than_one_component_at_a_time"></a>

您可以在單一呼叫中指定多個元件參數：

```
aws eks update-cluster-config \
--name "$CLUSTER" \
--kube-scheduler-config '{"nodeResourcesFit":{"scoringStrategy":{"type":"MostAllocated"}}}' \
--kube-api-server-config '{"eventTtl":"30m"}'
```

更新會與您現有的組態合併。只有您指定的欄位會變更，而您省略的欄位會保留其目前值。上述命令會讓您的控制器管理員組態保持不變。

### 監控控制平面組態更新
<a name="_monitor_a_control_plane_configuration_update"></a>

`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 管理主控台
<a name="control_plane_configuration_shared_consolelong"></a>

若要在建立叢集時設定進階 Kubernetes 控制平面參數：

1. 開啟 [Amazon EKS 主控台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 選擇 **Create Cluster** (建立叢集)。

1. 在*組態選項*下，請選取**自訂組態**。

1. 向下捲動至**控制平面組態**。

1. 選擇**啟用控制平面組態**。

1. 設定您要設定的參數。您保持不變的參數會使用其預設值。

1. 視需要選取其他叢集組態選項。在最後一個步驟中，選擇**建立叢集**。叢集建立可能需要幾分鐘的時間才能完成。

若要在現有叢集上設定進階 Kubernetes 控制平面參數：

1. 開啟 [Amazon EKS 主控台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 選擇您要更新的叢集。

1. 選擇**概觀**索引標籤，然後向下捲動至**控制平面組態**。

1. 選擇**管理**，然後選取**啟用控制平面組態**以設定您要變更的參數。接著選擇 **Save changes (儲存變更)**。