首页 > 解决方案 > EKS:在特定 AWS 自动缩放组上运行特定服务(pod)

问题描述

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

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

标签: amazon-web-serviceskubernetesautoscalingamazon-eks

解决方案


我认为使用Kops工具将适合您的情况。Kops 提供了很多管理 AWS Kubernetes 集群的功能,基本上也可以用于AutoScalingGroup (ASG)AWS 中的维护。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

并在先前创建的 Pod 上安排InstanceGroup

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

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


推荐阅读