當我在 Amazon Elastic Kubernetes Service (Amazon EKS) 中的 Amazon Linux 2023 AMI 中使用自訂指令碼、自我管理節點或自訂啟動範本時,我想要提供自訂使用者資料。
簡短說明
Amazon Linux 2023 使用採用 YAML 設定結構描述的 nodeadm 節點初始化程序。如需詳細資訊,請參閱現已推出的針對 Amazon EKS 最佳化的 Amazon Linux 2023 AMI 中的升級至 AL2023 前一節。
解決方法
按照以下格式將最少的必要參數新增至使用者資料:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="//"
--//
Content-Type: application/node.eks.aws
---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
cluster:
apiServerEndpoint: https://example.com
certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
cidr: 10.100.0.0/16
name: my-cluster
--//--
修改 kubelet 或 containerd 元件,格式如下:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
--==MYBOUNDARY==
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:
maxPods: 17
clusterDNS:
- 10.100.0.10
flags:
- "--node-labels=eks.amazonaws.com/nodegroup-image=ami-0cc04929616d2c6ba,eks.amazonaws.com/capacityType=ON_DEMAND,eks.amazonaws.com/nodegroup=al23"
containerd: {}
instance:
localStorage: {}
--==MYBOUNDARY==--
以以下格式傳遞自訂指令碼或命令:
MIME-Version: 1.0
Content-Type: multipart/mixed; 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
--//
Content-Type: text/x-shellscript; charset="us-ascii"
#!/bin/bash
echo "Hello AL2023!"
--//
相關資訊
Amazon EKS AMI API 參考