跳至内容

如何在 AL2023 Amazon EKS 节点上使用自定义用户数据?

2 分钟阅读
0

我在 Amazon Elastic Kubernetes Service (Amazon EKS) 的 Amazon Linux 2023 (AL2023) 亚马逊机器映像 (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-optimized Amazon Linux 2023 AMIs now available 中的升级到 AL2023 之前部分。

解决方法

**注意:**如果您在运行 AWS 命令行界面 (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 和标志 kubelet 选项传递给 kubelet。有关详细信息,请参阅 Kubernetes 网站上的 CredentialProviderConfigkubelet

用户数据配置示例:

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 无法启动。

AWS 官方已更新 9 个月前