本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建和管理集群
本主题介绍如何使用 Eksctl 创建和删除 EKS 集群。您可以使用 CLI 命令创建集群,也可以通过创建集群配置 YAML 文件来创建集群。
创建简单集群
使用以下命令创建一个简单的集群:
eksctl create cluster
这将在您的默认区域(由您的 AWS CLI 配置指定)中创建一个 EKS 集群,其中一个托管节点组包含两个 m5.large 节点。
现在,当不使用配置文件时,eksctl 会默认创建托管节点组。要创建自我管理的节点组,请传递--managed=false
到或。eksctl create cluster
eksctl create nodegroup
注意事项
-
在中创建集群时
us-east-1
,您可能会遇到UnsupportedAvailabilityZoneException
。如果发生这种情况,请复制建议的区域并传递--zones
标志,例如:eksctl create cluster --region=us-east-1 --zones=us-east-1a,us-east-1b,us-east-1d
。此问题可能发生在其他地区,但不太常见。在大多数情况下,您不需要使用标--zone
志。
使用配置文件创建集群
您可以使用配置文件而不是标志来创建集群。
首先,创建cluster.yaml
文件:
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: basic-cluster region: eu-north-1 nodeGroups: - name: ng-1 instanceType: m5.large desiredCapacity: 10 volumeSize: 80 ssh: allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key - name: ng-2 instanceType: m5.xlarge desiredCapacity: 2 volumeSize: 100 ssh: publicKeyPath: ~/.ssh/ec2_id_rsa.pub
接下来,运行以下命令:
eksctl create cluster -f cluster.yaml
这将按所述创建集群。
如果您需要使用现有 VPC,则可以使用如下配置文件:
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster-in-existing-vpc region: eu-north-1 vpc: subnets: private: eu-north-1a: { id: subnet-0ff156e0c4a6d300c } eu-north-1b: { id: subnet-0549cdab573695c03 } eu-north-1c: { id: subnet-0426fb4a607393184 } nodeGroups: - name: ng-1-workers labels: { role: workers } instanceType: m5.xlarge desiredCapacity: 10 privateNetworking: true - name: ng-2-builders labels: { role: builders } instanceType: m5.2xlarge desiredCapacity: 2 privateNetworking: true iam: withAddonPolicies: imageBuilder: true
集群名称或节点组名称必须仅包含字母数字字符(区分大小写)和连字符。它必须以字母字符开头且不能超过 128 个字符,否则您将收到验证错误。有关更多信息,请参阅 AWS Formati CLoud on 用户指南中的通过 CloudFormation 控制台创建堆栈。
为新集群更新 kubeconfig
创建集群后,相应的 kubernetes 配置将添加到您的 kubeconfig 文件中。这是您在环境变量中KUBECONFIG
或~/.kube/config
默认配置的文件。使用该标志可以覆盖 kubeconfig 文件的路径。--kubeconfig
其他可以改变 kubeconfig 文件写入方式的标志:
标记 | type | use | 默认值 |
---|---|---|---|
--kubeconfig |
字符串 |
写入 kubeconfig 的路径(与--auto-kubeconfig 不兼容) |
$KUBECONFIG 或 ~/.kube/config |
--set-kubeconfig-context |
布尔 |
如果为 true 则将在 kubeconfig 中设置当前上下文;如果已经设置了上下文,则它将被覆盖 |
true |
--auto-kubeconfig |
布尔 |
按集群名称保存 kubeconfig 文件 |
true |
--write-kubeconfig |
布尔 |
切换 kubeconfig 的写入 |
true |
删除集群
要删除此集群,请运行:
eksctl delete cluster -f cluster.yaml
警告
在删除操作中使用该--wait
标志,以确保正确报告删除错误。
如果没有该--wait
标志,eksctl 只会向集群的 CloudFormation 堆栈发出删除操作,而不会等待其删除。在某些情况下,使用集群或其 VPC 的 AWS 资源可能会导致集群删除失败。如果删除失败或者忘记了等待标志,则可能需要转到 CloudFormation GUI 并从那里删除 eks 堆栈。
警告
PDB 策略可能会阻止在集群删除期间移除节点。
删除带有节点组的集群时,Pod 中断预算 (PDB) 策略可能会阻止成功删除节点。例如,aws-ebs-csi-driver
安装了的集群通常有两个 pod,它们的 PDB 策略允许一次只能有一个 pod 不可用,这使得另一个 Pod 在删除期间无法被驱逐。要在这些情况下成功删除集群,请使用该disable-nodegroup-eviction
标志绕过 PDB 策略检查:
eksctl delete cluster -f cluster.yaml --disable-nodegroup-eviction
有关更多示例配置文件,请参阅 eksc GitHub tl 存储库中的examples/
试跑
dry-run 功能允许生成一个跳过集群创建的 ClusterConfig 文件,并输出一个表示所提供的 CLI 选项并包含 eksctl 设置的默认值的 ClusterConfig 文件。
更多信息可以在 D ry Run 页面上找到。