協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用啟動範本自訂受管節點
如需最高層級的自訂,您可以根據此頁面上的步驟,使用自己的啟動範本來部署受管節點。使用啟動範本可讓 等功能在部署節點期間提供引導引數 (例如,額外的 kubelet
如果您在第一次建立受管節點群組期間提供自己的啟動範本,稍後也會得到更出色的靈活性。只要使用自己的啟動範本部署受管節點群組,您就可以使用不同版本的相同啟動範本來反覆更新。將節點群組更新為不同版本的啟動範本時,群組中的所有節點都會回收,以符合指定啟動範本版本的新組態。
一律使用 Amazon EC2 Auto Scaling 群組所使用的啟動範本部署受管節點群組。如果未提供啟動範本,Amazon EKS API 會使用帳戶中的預設值自動建立此啟動範本。然而,我們不建議您修改自動產生的啟動範本。此外,未使用自訂啟動範本的現有節點群組無法直接更新。相反,您必須建立具有自訂啟動範本的新節點群組,才能執行此動作。
啟動範本組態基礎知識
您可以使用 、 AWS 管理主控台 AWS CLI 或 AWS SDK 建立 Amazon EC2 Auto Scaling 啟動範本。如需詳細資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的建立 Auto Scaling 群組的啟動範本。啟動範本中的某些設定與用於受管理節點組態的設定類似。使用啟動範本部署或更新節點群組時,必須在節點群組組態或啟動範本其中一個位置中指定某些設定。請勿同時在兩個位置指定設定。如果設定存在於不應該的地方,則建立或更新節點群組之類的動作會失敗。
下表會列出啟動範本中禁止的設定。該表也會列出受管節點群組組態中需要的類似設定 (如果有)。列出的設定是顯示在主控台中的設定。它們在 CLI 和 SDK AWS 中可能有類似但不同的名稱。
| 啟動範本:禁止 | Amazon EKS 節點群組組態 |
|---|---|
|
Network interfaces (網路介面) (Add network interface (新增網路介面)) 下的 Subnet (子網) |
Specify networking (指定聯網) 頁面上 Node Group network configuration (節點群組網路組態) 下的 Subnets (子網) |
|
Advanced details (進階詳細資訊) 下的 IAM instance profile (IAM 執行個體描述檔) |
Configure Node Group (設定節點群組) 頁面上 Node Group configuration (節點群組組態) 下的 Node IAM Role (節點 IAM 角色) |
|
Advanced details (進階詳細資訊) 下的 Shutdown behavior (關機行為) 和 Stop - Hibernate behavior (停用 – 休眠行為)。為兩種設定在啟動範本中保留預設請勿包含在啟動範本設定中。 |
無同等。Amazon EKS 必須控制執行個體生命週期,而非 Auto Scaling 群組。 |
下表會列出受管節點群組組態中禁止的設定。該表也會列出類似的設定 (如果有),這些設定在啟動範本中是必要設定。列出的設定是顯示在主控台中的設定。它們在 CLI 和 SDK AWS 中可能會有類似的名稱。
| Amazon EKS 節點群組組態設定:禁止 | 啟動範本 |
|---|---|
|
(僅當您在啟動模板中指定了自訂 AMI 時) 在 Set compute and scaling configuration (設定運算和擴展組態) 頁面上 Node Group compute configuration (節點群組運算組態) 下的 AMI type (AMI 類型) – 主控台顯示 Specified in launch template (在啟動範本中指定) 以及指定的 AMI ID。 如果未在啟動範本中指定應用程式和作業系統映像 (Amazon Machine Image),您可在節點群組組態中選取 AMI。 |
Launch template contents (啟動範本內容) 下的 Application and OS Images (Amazon Machine Image) (應用程式和作業系統映像 (Amazon Machine Image)):如果您有下列任一要求,則必須指定 ID:
|
|
Set compute and scaling configuration (設定運算和擴展組態) 頁面上 Node Group compute configuration (節點群組運算組態) 下的 Disk size (磁碟大小):主控台顯示 Specified in launch template (在啟動範本中指定)。 |
Storage (Volumes) (儲存 (磁碟區)) (Add new volume (新增磁碟區)) 下的 Size (大小)。您必須在啟動範本中指定此選項。 |
|
Specify Networking (指定聯網) 頁面上 Node Group configuration (節點群組組態) 下的 SSH key pair (SSH 金鑰對) – 主控台會顯示在啟動範本中指定的金鑰,或顯示 Not specified in launch template (未在啟動範本中指定)。 |
Key pair (login) (金鑰對 (登入)) 下的 Key pair name (金鑰對名稱)。 |
|
使用啟動範本時,您無法指定允許遠端存取的來源安全群組。 |
針對執行個體的 Network settings (網路設定) 下的 Security groups (安全群組) 或 Network interfaces (網路介面) 下的 Security groups (安全群組) (Add network interface (新增網路介面)),但不能兩者同時選擇。如需詳細資訊,請參閱使用自訂安全群組。 |
注意
-
如果使用啟動範本部署節點群組,請在啟動範本的 Launch template contents (啟動範本內容) 中指定零或一個 Instance type (執行個體類型)。您也可以在主控台上的 Set compute and scaling configuration (設定運算和擴展組態) 頁面中,為 Instance types (執行個體類型) 指定 0 到 20 個執行個體類型。您還可以使用其他使用 Amazon EKS API 的工具來執行這項操作。如果在啟動範本中指定執行個體類型,並使用該啟動範本來部署節點群組,則無法在主控台中指定任何執行個體類型,或使用其他使用 Amazon EKS API 的工具。如果未在啟動範本、主控台中或使用其他使用 Amazon EKS API 的工具指定執行個體類型,請使用
t3.medium執行個體類型。如果您的節點群組正在使用 Spot 容量類型,則建議使用主控台指定多個執行個體類型。如需詳細資訊,請參閱受管節點群組容量類型。 -
如果您部署到節點群組的任何容器使用執行個體中繼資料服務版本 2,請確定在啟動範本中將 Metadata response hop limit (中繼資料回應躍點限制) 設定為
2。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的執行個體中繼資料與使用者資料。 -
啟動範本不支援允許靈活的執行個體類型選取的
InstanceRequirements功能。
標記 Amazon EC2 執行個體
您可以使用啟動範本的 TagSpecification 參數,以指定要將哪些標籤套用至節點群組中的 Amazon EC2 執行個體。IAM 實體呼叫 CreateNodegroup 或 UpdateNodegroupVersion API 必須擁有 ec2:RunInstances 和 ec2:CreateTags 許可,而且標籤必須新增至啟動範本。
使用自訂安全群組
您可以使用啟動範本來指定自訂 Amazon EC2 安全群組以套用至節點群組中的執行個體。這可以是在執行個體層級安全群組參數中,也可以是網路介面組態參數的一部分。不過,您無法建立同時指定執行個體層級和網路介面安全群組的啟動範本。請考慮下列適用於搭配受管節點群組使用之自訂安全群組的條件:
-
使用 時 AWS 管理主控台,Amazon EKS 僅允許具有單一網路介面規格的啟動範本。
-
預設情況下,Amazon EKS 將叢集安全群組套用至節點群組中的執行個體,以促進節點與控制平面之間的通訊。如果使用先前提到的任一選項在啟動範本中指定自訂安全群組,則 Amazon EKS 不會新增叢集安全群組。因此,您必須確保安全群組的傳入和傳出規則可啟用與叢集端點的通訊。如果安全群組規則不正確,工作節點便無法加入叢集。如需安全群組規則的詳細資訊,請參閱 檢視叢集的 Amazon EKS 安全群組要求。
-
如需 SSH 存取節點群組中的執行個體,請包含允許該存取的安全群組。
Amazon EC2 使用者資料
啟動範本包含自訂使用者資料的區段。您可以在此區段中指定節點群組的組態設定,無需手動建立個別自訂 AMI。如需有關 Bottlerocket 可用設定的詳細資訊,請參閱 GitHub 上的使用使用者資料
您可以在啟動執行個體時使用 cloud-init 提供啟動範本中的 Amazon EC2 使用者資料。如需詳細資訊,請參閱 cloud-init 文件
與受管節點群組搭配使用的啟動範本中的 Amazon EC2 使用者資料,必須為 Amazon Linux AMI 的 MIME 分段封存kubelet 的使用者資料中指定任何命令。這會作為 Amazon EKS 合併使用者資料的一部分執行。某些 kubelet 參數 (例如在節點上設定標籤) 可以透過受管節點群組 API 直接設定。
注意
如果有關進階 kubelet 自訂 (包括手動啟動或傳入自訂組態參數) 的詳細資訊,請參閱 指定 AMI。如果在啟動範本中指定自訂 AMI ID,Amazon EKS 不會合併使用者資料。
下列詳細資訊提供有關使用者資料區段的詳細資訊。
- Amazon Linux 2 使用者資料
-
您可以將多個使用者資料區塊組合在一起成為單一 MIME 分段檔案。例如,您可以將設定 Docker 常駐程式的雲端 Boothook 與安裝自訂套件的使用者資料 Shell 指令碼合併。MIME 分段檔案包含下列元件:
-
內容類型和部分邊界宣告:
Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" -
MIME 版本宣告:
MIME-Version: 1.0 -
包含以下元件的一或多個使用者資料區塊:
-
開啟邊界,表示使用者資料區塊的開始 –
--==MYBOUNDARY== -
區塊的內容類型宣告:
Content-Type: text/cloud-config; charset="us-ascii"。如需內容類型的詳細資訊,請參閱 cloud-init文件。 -
使用者資料的內容 (例如,Shell 命令或
cloud-init指令的清單)。 -
結束邊界,表示 MIME 分段檔案的結束:
--==MYBOUNDARY==--
以下是您可以用來建立自己的 MIME 分段檔案的範例。
-
MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash echo "Running custom user data script" --==MYBOUNDARY==-- -
- Amazon Linux 2023 使用者資料
-
Amazon Linux 2023 (AL2023) 推出了新的節點初始化程序
nodeadm,該程序會使用 YAML 組態結構描述。如果您使用自我管理節點群組或具有啟動範本的 AMI,則在建立新節點群組時,需要明確提供額外的叢集中繼資料。以下連結展示了一個包含最低必要參數的範例,其中 apiServerEndpoint、certificateAuthority和服務cidr現在是必需的:--- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-cluster apiServerEndpoint: https://example.com certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk= cidr: 10.100.0.0/16您通常會在使用者資料中設定此組態,可以依原狀設定,也可以內嵌在 MIME 分段文件中:
MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: application/node.eks.aws --- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: [...] --BOUNDARY--在 AL2 中,這些參數的中繼資料是透過 Amazon EKS
DescribeClusterAPI 呼叫自動發現的。在 AL2023 中,此行為已改變,因為額外的 API 呼叫在大規模節點擴展時有被限流的風險。如果您使用沒有啟動範本的受管節點群組,或使用 Karpenter,則此變更不會對您造成影響。如需有關certificateAuthority和服務cidr的更多資訊,請參閱《Amazon EKS API 參考》中的DescribeCluster。以下是 AL2023 使用者資料的完整範例,其中結合用於自訂節點的 Shell 指令碼 (例如安裝套件或預先快取容器映像) 與所需的
nodeadm組態。此範例顯示常見的自訂,包括:* 安裝其他系統套件 * 預先快取容器映像,以改善 Pod 啟動時間 * 設定 HTTP 代理組態 * 設定節點標籤的kubelet旗標MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash set -o errexit set -o pipefail set -o nounset # Install additional packages yum install -y htop jq iptables-services # Pre-cache commonly used container images nohup docker pull public.ecr.aws/eks-distro/kubernetes/pause:3.2 & # Configure HTTP proxy if needed cat > /etc/profile.d/http-proxy.sh << 'EOF' export HTTP_PROXY="http://proxy.example.com:3128" export HTTPS_PROXY="http://proxy.example.com:3128" export NO_PROXY="localhost,127.0.0.1,169.254.169.254,.internal" EOF --BOUNDARY Content-Type: application/node.eks.aws apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-cluster apiServerEndpoint: https://example.com certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk= cidr: 10.100.0.0/16 kubelet: config: clusterDNS: - 10.100.0.10 flags: - --node-labels=app=my-app,environment=production --BOUNDARY-- - Bottlerocket 使用者資料
-
Bottlerocket 會以 TOML 格式建構使用者資料。您可以提供要與 Amazon EKS 提供的使用者資料合併的使用者資料。例如,您可以提供額外的
kubelet設定。[settings.kubernetes.system-reserved] cpu = "10m" memory = "100Mi" ephemeral-storage= "1Gi"如需有關受支援設定的詳細資訊,請參閱 Bottlerocket 文件
。您可以在使用者資料中設定節點標籤和污點。不過,建議您改為在節點群組內設定。在執行這項操作時,Amazon EKS 會套用這些組態。 合併使用者資料時,不會保留格式設定,但內容保持不變。您在使用者資料中提供的組態會覆寫 Amazon EKS 所設定的任何設定。所以,如果您設定
settings.kubernetes.max-pods或settings.kubernetes.cluster-dns-ip,則使用者資料中的值會套用至節點。Amazon EKS 不支援所有有效的 TOML。以下是已知不支援格式的清單:
-
引號鍵內的引號:
'quoted "value"' = "value" -
值中的溢出引號:
str = "I’m a string. \"You can quote me\"" -
混合浮點數和正整數:
numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ] -
陣列中的混合類型:
contributors = ["foo@example.com", { name = "Baz", email = "baz@example.com " }] -
帶引號鍵的括號標題:
[foo."bar.baz"]
-
- Windows 使用者資料
-
Windows 使用者資料會使用 PowerShell 命令。建立受管節點群組時,您的自訂使用者資料會與 Amazon EKS 受管使用者資料結合。您的 PowerShell 命令為優先,然後是受管的使用者資料命令,所有這些命令都在一個
<powershell></powershell>標籤中。重要
建立 Windows 節點群組時,Amazon EKS 會更新
aws-authConfigMap,以允許 Linux 型節點加入叢集。服務不會自動設定 Windows AMI 的許可。如果您使用的是 Windows 節點,您將需要透過存取項目 API 或直接更新aws-authConfigMap來管理存取。如需詳細資訊,請參閱在 EKS 叢集上部署 Windows 節點。注意
如果啟動範本中未指定任何 AMI ID,請勿在使用者資料中使用 Windows Amazon EKS 引導指令碼來設定 Amazon EKS。
範例使用者資料如下。
<powershell> Write-Host "Running custom user data script" </powershell>
指定 AMI
如果有下列其中一項要求,請在啟動範本 ImageId 欄位中指定 AMI ID。選取您對其他資訊的要求。
引導是一個術語,用於描述新增在執行個體啟動時可以執行的命令。例如,引導允許使用額外的 kubeleteksctl 將引數傳遞給 bootstrap.sh 而不指定啟動範本。您也可以在啟動範本的使用者資料區段中指定資訊來執行此動作。
- eksctl,無需指定啟動範本
-
使用下列內容,建立名為
my-nodegroup.yaml的檔案。使用您自己的值取代每一個範例值。--apiserver-endpoint、--b64-cluster-ca,和--dns-cluster-ip引數為選用。但是,定義引述會允許bootstrap.sh指令碼避免進行describeCluster呼叫。這在經常縮減和擴增節點的私有叢集設定或叢集中非常有用。如需bootstrap.sh指令碼的詳細資訊,請參閱 GitHub 上的 bootstrap.sh檔案。 -
唯一需要的引數是叢集名稱 (
my-cluster)。 -
若要擷取
ami-的最佳化 AMI ID,您請參閱下列章節:1234567890abcdef0 -
若要擷取您的叢集的
certificate-authority,請執行下列命令。aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code -
若要擷取您的叢集的
api-server-endpoint,請執行下列命令。aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code -
--dns-cluster-ip的值是結尾處為.10的服務 CIDR。若要擷取您的叢集的service-cidr,請執行下列命令。例如,如果傳回的值是ipv4 10.100.0.0/16,則您的值是10.100.0.10。aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code -
此範例使用其中包含 Amazon EKS 最佳化 AMI 的
bootstrap.sh指令碼提供kubelet引數來設定自訂max-pods值。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。如需選取my-max-pods-value的說明,請參閱 Amazon EKS 為每種 Amazon EC2 執行個體類型建議 Pod 數量上限。如需使用受管節點群組時如何maxPods決定 的詳細資訊,請參閱 maxPods的判斷方式。--- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code managedNodeGroups: - name: my-nodegroup ami: ami-1234567890abcdef0 instanceType: m5.large privateNetworking: true disableIMDSv1: true labels: { x86-al2-specified-mng } overrideBootstrapCommand: | #!/bin/bash /etc/eks/bootstrap.sh my-cluster \ --b64-cluster-ca certificate-authority \ --apiserver-endpoint api-server-endpoint \ --dns-cluster-ip service-cidr.10 \ --kubelet-extra-args '--max-pods=my-max-pods-value' \ --use-max-pods false針對每一個可用的
eksctlconfig檔案選項,請參閱eksctl文件中的 Config file schema(組態檔案結構描述)。此 eksctl公用程式仍會為您建立啟動範本,並使用在config檔案提供的資料來填入其使用者資料。使用下列命令來建立節點群組。
eksctl create nodegroup --config-file=my-nodegroup.yaml
-
- 啟動範本中的使用者資料
-
在啟動範本的使用者資料區段中指定下列資訊。使用您自己的值取代每一個
範例值。--apiserver-endpoint、--b64-cluster-ca,和--dns-cluster-ip引數為選用。但是,定義引述會允許bootstrap.sh指令碼避免進行describeCluster呼叫。這在經常縮減和擴增節點的私有叢集設定或叢集中非常有用。如需bootstrap.sh指令碼的詳細資訊,請參閱 GitHub 上的 bootstrap.sh檔案。 -
唯一需要的引數是叢集名稱 (
my-cluster)。 -
若要擷取您的叢集的
certificate-authority,請執行下列命令。aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code -
若要擷取您的叢集的
api-server-endpoint,請執行下列命令。aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code -
--dns-cluster-ip的值是結尾處為.10的服務 CIDR。若要擷取您的叢集的service-cidr,請執行下列命令。例如,如果傳回的值是ipv4 10.100.0.0/16,則您的值是10.100.0.10。aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code -
此範例使用其中包含 Amazon EKS 最佳化 AMI 的
bootstrap.sh指令碼提供kubelet引數來設定自訂max-pods值。如需選取my-max-pods-value的說明,請參閱 Amazon EKS 為每種 Amazon EC2 執行個體類型建議 Pod 數量上限。如需使用受管節點群組時如何maxPods決定 的詳細資訊,請參閱 maxPods的判斷方式。MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash set -ex /etc/eks/bootstrap.sh my-cluster \ --b64-cluster-ca certificate-authority \ --apiserver-endpoint api-server-endpoint \ --dns-cluster-ip service-cidr.10 \ --kubelet-extra-args '--max-pods=my-max-pods-value' \ --use-max-pods false --==MYBOUNDARY==--
-
引導是一個術語,用於描述新增在執行個體啟動時可以執行的命令。您可以使用 eksctl 將引數傳遞給 Start-EKSBootstrap.ps1 而不指定啟動範本。您也可以在啟動範本的使用者資料區段中指定資訊來執行此動作。
如果您想指定自訂 Windows AMI ID,請注意下列考量事項:
-
您必須使用啟動範本,並在使用者資料區段中提供所需引導命令。若要擷取所需的 Windows ID,您可以使用使用最佳化的 Windows AMI 建立節點中的資料表。
-
您需滿足幾個限制和條件。例如,您必須將
eks:kube-proxy-windows新增至 IAM Authenticator AWS 組態映射。如需詳細資訊,請參閱指定 AMI ID 時的限制和條件。
在啟動範本的使用者資料區段中指定下列資訊。使用您自己的值取代每一個範例值。-APIServerEndpoint、-Base64ClusterCA,和 -DNSClusterIP 引數為選用。但是,定義引述會允許 Start-EKSBootstrap.ps1 指令碼避免進行 describeCluster 呼叫。
-
唯一需要的引數是叢集名稱 (
my-cluster)。 -
若要擷取您的叢集的
certificate-authority,請執行下列命令。aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code -
若要擷取您的叢集的
api-server-endpoint,請執行下列命令。aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code -
--dns-cluster-ip的值是結尾處為.10的服務 CIDR。若要擷取您的叢集的service-cidr,請執行下列命令。例如,如果傳回的值是ipv4 10.100.0.0/16,則您的值是10.100.0.10。aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code -
如需其他引數,請參閱 引導指令碼組態參數。
注意
如果您使用的是自訂服務 CIDR,則需要使用
-ServiceCIDR參數來對其進行指定。否則,叢集中 Pod 的 DNS 解析將會失敗。
<powershell> [string]$EKSBootstrapScriptFile = "$env:ProgramFiles\Amazon\EKS\Start-EKSBootstrap.ps1" & $EKSBootstrapScriptFile -EKSClusterName my-cluster ` -Base64ClusterCA certificate-authority ` -APIServerEndpoint api-server-endpoint ` -DNSClusterIP service-cidr.10 </powershell>
如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的 Amazon Machine Images (AMI)。Amazon EKS AMI 建置規範包含用於建置基於 Amazon Linux 的自訂 Amazon EKS AMI 的資源和組態指令碼。如需詳細資訊,請參閱 GitHub 上的 Amazon EKS AMI 建置規範
在與受管節點群組搭配使用的啟動範本中,您無法使用 AMI ID 的動態參數參考。
重要
-
指定 AMI 時,Amazon EKS 不會針對叢集的控制平面版本驗證 AMI 中內嵌的 Kubernetes 版本。您有責任確保自訂 AMI 的 Kubernetes 版本符合 Kubernetes 版本扭曲政策
: -
節點上的
kubelet版本不得比叢集版本更新 -
節點上的
kubelet版本必須等於或最多 3 個次要版本 (適用於 Kubernetes 版本1.28或更高版本),或最多 2 個次要版本 (適用於 Kubernetes 版本1.27或更低版本)建立具有版本扭曲違規的受管節點群組可能會導致:
-
節點無法加入叢集
-
未定義的行為或 API 不相容
-
叢集不穩定或工作負載失敗
-
-
指定 AMI 時,Amazon EKS 不會合併任何使用者資料。相反,您必須負責提供所需的
bootstrap命令,讓節點加入叢集。如果節點無法加入叢集,則 Amazon EKSCreateNodegroup和UpdateNodegroupVersion動作也會失敗。
指定 AMI ID 時的限制和條件
以下是使用受管節點群組指定 AMI ID 所涉及的限制和條件:
-
您必須建立新的節點群組,才能在指定啟動範本的 AMI ID 與不指定 AMI ID 之間切換。
-
有較新的 AMI 版本可用時,您不會在主控台中收到通知。若要將節點群組更新為較新的 AMI 版本,您需要使用更新的 AMI ID 來建立新版本的啟動範本。然後,您需要使用新的啟動範本版本更新節點群組。
-
如果指定 AMI ID,則無法在 API 中設定下列欄位:
-
amiType -
releaseVersion -
version
-
-
如果您指定 AMI ID,則 API 的任何
taints集合都會以非同步方式套用。若要在節點加入叢集之前套用污點,您必須使用--register-with-taints命令列旗標將污點傳遞給使用者資料的kubelet。如需詳細資訊,請參閱 Kubernetes 文件中的 kubelet。 -
為 Windows 受管節點群組指定自訂 AMI ID 時,請將
eks:kube-proxy-windows新增至您的 AWS IAM Authenticator 組態映射。必須要有這項,DNS 才能正常運作。-
開啟 AWS IAM Authenticator 組態映射以進行編輯。
kubectl edit -n kube-system cm aws-auth -
將此項目新增至與 Windows 節點關聯的每個
rolearn下的groups清單中。您的組態映射看起來應該類似於 aws-auth-cm-windows.yaml。 - eks:kube-proxy-windows -
儲存檔案並結束您的文字編輯器。
-
-
對於任何使用自訂啟動範本的 AMI,受管節點群組的預設
HttpPutResponseHopLimit已設定為2。