我正在使用eksctl
创建我们的EKS
集群。
对于第一次运行,效果很好,但是如果我以后想升级cluster-config
,它将无法正常工作。
我有一个cluster-config
文件,但是对其进行的任何更改都不会反映在update
/ upgrade
命令中。
我想念什么?
Cluster.yaml:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: supplier-service
region: eu-central-1
vpc:
subnets:
public:
eu-central-1a: {id: subnet-1}
eu-central-1b: {id: subnet-2}
eu-central-1c: {id: subnet-2}
nodeGroups:
- name: ng-1
instanceType: t2.medium
desiredCapacity: 3
ssh:
allow: true
securityGroups:
withShared: true
withLocal: true
attachIDs: ['sg-1', 'sg-2']
iam:
withAddonPolicies:
autoScaler: true
现在,如果将来我想对instance.type或副本进行更改,我必须销毁整个集群并重新创建...这变得非常麻烦。
如何对由EksCtl
创建的群集进行就地升级?谢谢。
答案 0 :(得分:1)
我正在调查与您完全相同的问题。
在互联网上进行了大量搜索后,我发现目前还无法在 EKS 中就地升级您现有的节点组。
首先,eksctl update
已被弃用。当我执行 eksctl upgrade --help
时,它给出了这样的警告:
DEPRECATED: use 'upgrade cluster' instead. Upgrade control plane to the next version.
第二,如this GitHub issue和eksctl document中提到的,到目前为止eksctl upgrade nodegroup
仅用于升级托管的版本强> 节点组。
很遗憾,您必须创建一个新的节点组来应用您的更改、迁移您的工作负载/将您的流量切换到新的节点组并停用旧的。在您的情况下,没有必要取消整个集群并重新创建。
如果您正在寻求以最少/零停机时间进行无缝升级/迁移,我建议您尝试managed node group,其中工作负载的正常排出似乎很有希望:
Node updates and terminations gracefully drain nodes to ensure that your applications stay available.
注意:在上面的配置文件中,如果您指定 nodeGroups
而不是 managedNodeGroups
,将提供一个非托管节点组。
但是,不要失去希望。 active issue 中的 eksctl GitHub repository 已提交以添加 eksctl apply
选项。在这个阶段,它还没有发布。如果这能成真,那就太好了。
答案 1 :(得分:0)
要使用eksctl升级群集,请执行以下操作:
如果您只想更新节点组并保持相同的配置,则可以只更改节点组名称,例如在名称后附加-v2。 [0]
如果要更改节点组配置“实例类型”,则只需创建一个新的节点组:eksctl create nodegroup --config-file=dev-cluster.yaml
[1]
[0] https://eksctl.io/usage/cluster-upgrade/#updating-multiple-nodegroups-with-config-file
[1] https://eksctl.io/usage/managing-nodegroups/#creating-a-nodegroup-from-a-config-file