0

我在 US-EAST-2 中创建了一个 EKS 托管节点集群,配置如下:

managedNodeGroups:
  - name: eks-worker-nodegroup
    instanceType: m5.xlarge
    desiredCapacity: 2
    minSize: 2
    maxSize: 3
    volumeSize: 200
    instanceName: eks-worker-node
    ebsOptimized: true
    volumeEncrypted: true
    labels: {mynodegroup: qa-a}
    tags:
      mynodegroup: qa-a
    iam:
      withAddonPolicies:
        imageBuilder: true
        autoScaler: true
        albIngress: true
        cloudWatch: true
        ebs: true
        efs: true

我想使用 Cluster Autoscaling 并一直在查看文档here,但需要一些指导来准确理解如何实现它。

create cluster 命令使用我在上面的配置中指定的大小在 AWS中eksctl创建了一个 Autoscaling Group。此 ASG 跨越 US-EAST-2 的所有三个可用区。但是,来自 Amazon 的文档建议为每个可用区设置一个 ASG

我正在寻找的行为是这样的:

  • 从两个节点开始,运行一系列应用程序和服务。(目前没有一个是有状态的,但将来可能会改变 - 这就是为什么我认为每个 AZ 一个 ASG 路由实际上是更好的方法)
  • 随着需求的增加,Kubernetes 将通过我的部署清单中定义的额外副本水平扩展我的 Pod。
  • 当节点组中的可用资源耗尽时,Cluster Autoscaler 会启动其他节点并将它们临时添加到节点组中以支持增加的需求。Pod 被优雅地添加和/或重新平衡,随着需求的下降,额外的节点将被关闭。

我的问题是多方面的...

  1. 我是否应该以不同的方式设计集群配置文件以支持每个 AZ 一个 ASG(因此应该拆除我已经创建的基础架构并重新开始)?

  2. 这样做是否像为每个 AZ 手动创建新的 ASG 一样简单,然后将每个 ASG 标记为与eksctl为我创建的默认 ASG 相同的标签?如果是这样,那么在这样做之后部署 Cluster Autoscaler 应该可以自动检测手动创建的 ASG - 但这是正确的方法吗?

根据我正在寻求的行为实现集群自动缩放的最合适方法是什么?

编辑: 根据下面的评论之一并重新阅读 AWS 的文档,我现在想知道拥有单个托管节点组然后手动创建特定于 AZ 的 ASG 的方法是否错误。

是创建多个托管节点组的更好方法,每个托管节点组都限制在自己的可用区吗?这将产生为每个可用区创建一个 ASG 的效果。

4

0 回答 0