EKS:在特定 AWS 自动缩放组上运行特定服务(pod)

Posted

技术标签:

【中文标题】EKS:在特定 AWS 自动缩放组上运行特定服务(pod)【英文标题】:EKS : Running a particular service (pods) on particular AWS autoscaling group 【发布时间】:2019-05-14 07:00:13 【问题描述】:

我有一个 EKS 集群,并且我有多个 AWS 自动缩放组,用于向 EKS 主节点注册的工作程序节点。现在我有一个场景,我想在特定的 AWS 自动缩放组上运行特定的服务(部署 pod)。

对于在节点上运行特定的部署 pod 可以使用 nodeSelector 和节点标签来实现,但是在 AWS 自动缩放组的情况下,自动缩放组将向上和向下缩放,因此节点标签和节点选择器的概念在这里并不合适。我怎样才能实现这种情况?

【问题讨论】:

请检查 statefullset kubernetes.io/docs/concepts/workloads/controllers/statefulset 这可以帮助你 【参考方案1】:

我认为使用Kops 工具将适合您的情况。 Kops 提供了很多管理 AWS Kubernetes 集群的功能,基本上也可以用来维护 AWS 中的AutoScalingGroup (ASG)。 Kops 最初将 Instance group 作为 ASG 的等价物提供服务,因此可以处理集群中真正的 Autoscaling 组的所有操作。

您可以创建InstanceGroup并匹配nodeLabels:

apiVersion: kops/v1alpha2
kind: InstanceGroup
metadata:
  creationTimestamp: 2017-11-12T07:25:23Z
  labels:
    kops.k8s.io/cluster: cluster.k8s.local
  name: p2
spec:
  image: kope.io/k8s-1.7-debian-jessie-amd64-hvm-ebs-2017-07-28
  machineType: p2.xlarge
  maxSize: 2
  minSize: 2
  nodeLabels:
    type: p2-ig
  role: Node
  subnets:
  - us-east-1d
  - us-east-1e

并在之前创建的 InstanceGroup 上安排 Pod:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    type: p2-ig

您可以找到有关使用 Kops 实例组 here 的更多信息。

【讨论】:

以上是关于EKS:在特定 AWS 自动缩放组上运行特定服务(pod)的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes AWS Cloudwatch 适配器未获取 EKS HPA 自动缩放的自定义指标值

AWS 中的 Kubernetes 自动缩放

如何在 EMR 中的特定实例组上运行脚本

AWS-CLI:如何过滤自动缩放组

使用 EKS 中的流利位在 AWS cloudwatch 中自动创建日志组

使用 AWS 自动缩放自动启动 java 服务器程序