kubernetes - 将 Pod 分配给节点组

标签 kubernetes amazon-eks

有没有一种方法可以将 Pod 分配给特定节点组中的节点,而无需标记节点组中的每个节点?

例如:

假设我有两个节点组 NG1NG2,并且我有两个应用程序 A1A2

我想将应用程序 A1 的 pod 分配给节点组 NG1,并将应用程序 A2 的 pod 分配给节点组 A2 。 (我不想手动为节点组中的每个节点分配标签然后使用节点选择器)

最佳答案

如果两个节点池中的默认标签不同,您可以使用一些默认标签

failure-domain.beta.kubernetes.io/zone
failure-domain.beta.kubernetes.io/region
beta.kubernetes.io/instance-type
beta.kubernetes.io/os
beta.kubernetes.io/arch

例如,如果您的两个节点池运行不同类型的实例,则可以使用 beta.kubernetes.io/instance-type

示例

apiVersion: v1
kind: Pod
metadata:
  name: with-node-affinity
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: beta.kubernetes.io/instance-type
            operator: In
            values:
            - Node Type
            - Node Type
  containers:
  - name: with-node-affinity
    image: registry.k8s.io/pause:2.0

如果存在差异,您还可以使用 topology.kubernetes.io/zone if zone。

apiVersion: v1
kind: Pod
metadata:
  name: with-node-affinity
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: topology.kubernetes.io/zone
            operator: In
            values:
            - antarctica-east1
            - antarctica-west1
  containers:
  - name: with-node-affinity
    image: registry.k8s.io/pause:2.0

更新

如果所有标签都相同,您可以尝试以下命令,该命令将列出特定节点组的标签alpha.eksctl.io/nodegroup-name=ng-1:

kubectl label nodes -l alpha.eksctl.io/nodegroup-name=ng-1 new-label=foo

关于kubernetes - 将 Pod 分配给节点组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73539419/

相关文章:

java - 使用 Java Kubernetes 客户端 API 部署 Pod 并为其分配节点

kubernetes - 在 EKS 上安装 apache superset 时出现问题

docker - Kubernetes:Frontend-Pod 无法解析 Backend-Service 的 dns(使用 Minikube)

amazon-web-services - 节点组和托管节点组之间的 AWS 比较

amazon-web-services - 在任何地方使用 eks 创建集群时出错

java - 如何使用 Java SDK 访问受 IAM 角色保护的 S3 存储桶?

kubernetes - 如何在裸机安装上从外部访问 kubernetes 服务

linux - 使用 runAsNonRoot 运行容器并添加功能

amazon-web-services - AWS角色和用户没有任何政策,为什么我仍然可以访问K8s集群?

amazon-web-services - 加载命名空间时出错。未授权 : Verify you have access to the Kubernetes cluster