公告 - Eksctl 用户指南

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

公告

本主题涵盖了过去发布的 Eksctl 新功能。

托管节点组默认

eksctl v0.58.0 开始,当没有为和指定文件时,eksctl 会默认创建托管节点组。ClusterConfig eksctl create cluster eksctl create nodegroup要创建自我管理的节点组,请传递。--managed=false如果正在使用托管节点组中不支持的功能(例如 Windows 节点组),则可能会破坏不使用配置文件的脚本。要修复此问题,请使用创建自管理节点组的nodeGroups字段在ClusterConfig文件中传递--managed=false或指定您的节点组配置。

自定义节点组引导程序覆盖 AMIs

这一变化是在一期《Breaking:很 overrideBootstrapCommand 快...》中宣布的。现在,它已经在这个 PR 中实现了。请仔细阅读随附的问题,了解为什么我们决定不再支持 AMIs 没有引导脚本或部分引导脚本的自定义。

我们仍然提供帮手!希望迁移不会那么痛苦。 eksctl仍然提供了一个脚本,该脚本在获得源代码后将导出几个有用的环境属性和设置。此脚本位于此处

以下环境属性可供您使用:

API_SERVER_URL B64_CLUSTER_CA INSTANCE_ID INSTANCE_LIFECYCLE CLUSTER_DNS NODE_TAINTS MAX_PODS NODE_LABELS CLUSTER_NAME CONTAINER_RUNTIME # default is docker KUBELET_EXTRA_ARGS # for details, look at the script

重写 so eksctl 不会失败时需要使用的最低限度是标签! eksctl依赖于节点上的一组特定的标签,因此它可以找到它们。定义覆盖时,请提供以下最低限度的覆盖命令:

overrideBootstrapCommand: | #!/bin/bash source /var/lib/cloud/scripts/eksctl/bootstrap.helper.sh # Note "--node-labels=${NODE_LABELS}" needs the above helper sourced to work, otherwise will have to be defined manually. /etc/eks/bootstrap.sh ${CLUSTER_NAME} --container-runtime containerd --kubelet-extra-args "--node-labels=${NODE_LABELS}"

对于没有出站 Internet 访问权限的节点组,您需要按如下方式向引导脚本提供--apiserver-endpoint--b64-cluster-ca

overrideBootstrapCommand: | #!/bin/bash source /var/lib/cloud/scripts/eksctl/bootstrap.helper.sh # Note "--node-labels=${NODE_LABELS}" needs the above helper sourced to work, otherwise will have to be defined manually. /etc/eks/bootstrap.sh ${CLUSTER_NAME} --container-runtime containerd --kubelet-extra-args "--node-labels=${NODE_LABELS}" \ --apiserver-endpoint ${API_SERVER_URL} --b64-cluster-ca ${B64_CLUSTER_CA}

注意 “--nod e-labels” 设置。如果未定义此值,则该节点将加入集群,但在等待节点加入集群时,最终eksctl将在最后一步超时Ready。它正在进行 Kubernetes 查找带有标签的节点。alpha.eksctl.io/nodegroup-name=<cluster-name>这仅适用于非托管节点组。对于托管,它使用的是不同的标签。

如果可以切换到托管节点组以避免这种开销,那么现在是时候这样做了。使所有重写变得容易得多。