Docker 在不同的节点上运行两个kubernetes吊舱

Docker 在不同的节点上运行两个kubernetes吊舱,docker,kubernetes,high-availability,Docker,Kubernetes,High Availability,有没有办法告诉Kubernetes永远不要在同一个节点上运行两个POD,例如我有两个POD副本,我希望它们始终分布在zone1/zone2上,并且永远不要在同一个区域中 apiVersion: app/v1 kind: Deployment metadata: name: testApp labels: app: testApp-front namespace: spec: replicas: 2 selector: matchLabels: a

有没有办法告诉Kubernetes永远不要在同一个节点上运行两个POD,例如我有两个POD副本,我希望它们始终分布在
zone1/zone2
上,并且永远不要在同一个区域中

apiVersion: app/v1
kind: Deployment
metadata:
  name: testApp
  labels:
    app: testApp-front
  namespace: 
spec:
  replicas: 2
  selector:
    matchLabels:
      app: testApp-front
  template:
    metadata:
      labels:
        app: testApp-front
    spec:      
      nodeSelector:
        failure-domain.beta.kubernetes.io/zone: zone1

似乎可以通过Interpod Affinity完成,您可以看到:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-server
spec:
  selector:
    matchLabels:
      app: testApp-front
  replicas: 3
  template:
    metadata:
      labels:
        app: testApp-front
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - testApp-front
            topologyKey: "kubernetes.io/hostname"
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - store
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: web-testApp-front
        image: nginx:1.12-alpine

你可以看到完整的

我认为你需要pod反亲和力的概念。这在一个集群内,以确保POD不驻留在一个工作节点上。

非常简单您可以使用deamon set运行不同节点中的每个pod,或者正如其他人所说,您可以使用pod anti-affinity

k8s调度程序是一款智能软件

  • kubernetes调度程序将首先根据您的亲缘关系/反亲缘关系/资源限制等确定可以部署pod的所有可能节点

  • 之后,调度器将找到可以部署pod的最佳节点。 当然,如果可能的话,调度器会自动将POD安排在单独的可用性区域和单独的节点上

  • 附言。
    如果您不希望pod的两个副本位于同一节点上,请定义反关联规则。

    您可以创建两个
    部署
    对象吗?每个节点都使用不同的节点选择器,但我更喜欢让kubernetes动态管理pods位置的调度