我在 Amazon Elastic Kubernetes Service (Amazon EKS) 中的 Amazon Linux 2023 (AL2023) Amazon Machine Image (AMI) 中使用自訂指令碼、自我管理節點或自訂啟動範本。我想提供自訂使用者資料。
簡短描述
AL2023 使用採用 YAML 組態結構描述的 nodeadm 節點初始化程序。對於自我管理節點群組或具有自訂啟動範本的受管節點群組,您必須在建立新節點群組時提供額外的叢集中繼資料。YAML 組態結構描述中必須包含的最低中繼資料需求是叢集名稱、API 伺服器端點、憑證授權單位和服務 CIDR。
具有最低必要參數的組態範例:
---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
cluster:
name: EKS-CLUSTER-NAME
apiServerEndpoint: API-SERVER-ENDPOINT
certificateAuthority: CERTIFICATE-AUTHORITY
cidr: SERVICE-IPv4-RANGE
如需詳細資訊,請參閱現已推出的針對 Amazon EKS 最佳化的 Amazon Linux 2023 AMI 中的升級至 AL2023 前一節。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
您必須使用在 AL2023 上執行的 Amazon EKS AMI。若要查看 AMI ID,請執行下列 get-parameter AWS CLI 命令:
aws ssm get-parameter --name /aws/service/eks/optimized-ami/kubernetes-version/ami-type/recommended/image_id \
--region region-code --query "Parameter.Value" --output text
**注意:**將 kubernetes-version 替換為支援的 Amazon EKS 版本,並將 region-code 替換為您的 AWS 區域。此外,對於 x86 型執行個體,請將 ami-type 替換為 amazon-linux-2023/x86_64/standard;對於 ARM 型執行個體,請將其替換為 amazon-linux-2023/arm64/standard。
按照以下格式將最少的必要參數新增至使用者資料:
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--
**注意:**您也可以將參數嵌入到 MIME 分段文件中。如需詳細資訊,請參閱 cloud-init 網站上的 Mime 分段封存。
使用 DescribeCluster API 尋找 ClusterDetails,並查看所需的最少參數。例如,當您使用 NodeConfigSpec 時,您可以將 config 和 flag kubelet 選項傳遞給 kubelet。如需詳細資訊,請參閱 Kubernetes 網站上的 CredentialProviderConfig 和 kubelet。
使用者資料組態範例:
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:
cluster:
apiServerEndpoint: API_SERVER_ENDPOINT
certificateAuthority: CERTIFICATE
cidr: SERVICE_IPv4_RANGE
name: CLUSTER_NAME
kubelet:
config:
maxPods: 17
flags:
- "--node-labels=key=value"
--BOUNDARY
Content-Type: text/x-shellscript;
#!/bin/bash
set -o xtrace
yum install htop -y
--BOUNDARY--
**注意:**在啟動範本中輸入使用者資料時,請確定程式碼中未包含多餘的空格或縮排。當存在間距問題時,節點將無法加入叢集,因為 nodeadm 無法啟動。