Kubectl 将部署应用到指定的节点组 - ​​AWS EKS

Ale*_*dro 5 amazon-web-services kubernetes amazon-eks

我在EKS 集群中创建了多个堆栈(节点组),每个组在不同的实例类型上运行(例如,一组在 GPU 实例上运行)。我在aws-auth-cm.yaml文件的mapRoles中为每个节点组添加了一个条目。现在我想在另一个部署上部署一些部署。部署文件看起来像这样:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-1
spec:
  replicas: 1
  selector:
    matchLabels:
      component: component-1
  template:
    metadata:
      labels:
        component: component-1
    spec:
      containers:
        - name: d1
          image: docker-container
          ports:
            - containerPort: 83
Run Code Online (Sandbox Code Playgroud)

文档显示我可以运行标准命令kubectl apply。有什么办法可以指定组吗?也许像

kubectl apply -f server-deployment.yaml -group node-group-1

FL3*_*3SH 4

遗憾的是,您提到的东西并不存在,但您可以阅读有关Affinity 的内容,它应该可以解决您的问题。

TL;DR 您必须添加标签或使用节点上的现有标签,并使用这些标签将 Pod 分配给正确的节点。

假设你有标签beta.kubernetes.io/instance-type=highmem

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-1
spec:
  replicas: 1
  selector:
    matchLabels:
      component: component-1
  template:
    metadata:
      labels:
        component: component-1
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: beta.kubernetes.io/instance-typ
                operator: In
                values:
                - highmem
      containers:
        - name: d1
          image: docker-container
          ports:
            - containerPort: 83
Run Code Online (Sandbox Code Playgroud)