跳至內容

如何將自訂使用者資料與 AL2023 Amazon EKS 節點一起使用?

2 分的閱讀內容
0

我在 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 無法啟動。