【问题标题】:Distribute the services across all nodes将服务分发到所有节点
【发布时间】:2021-10-06 02:48:39
【问题描述】:

我有一个 2 个工作节点的 kube 集群,并且我有一个副本为 2 的部署,如下所示的部署

最初,部署分布在每个节点上。但是一个节点出现故障,另一个节点每次部署有 2 个 pod。这是正确和预期的。但是当关闭的节点启动并运行时。我希望分发部署。我怎样才能做到这一点。


apiVersion: apps/v1
kind: Deployment
metadata:
  name: kub-homenet-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: kub-homenet
  template:
    metadata:
      labels:
        app: kub-homenet
    spec:
      containers:
        - name: kub-homenet
          image: naveeenzone/img-kub-homenet:latest
          volumeMounts:
            - mountPath: /app
              name: nfs-vol
      securityContext:
        fsGroup: 1000
      volumes:
        - name: nfs-vol
          persistentVolumeClaim:
            claimName: nfs-pvc

【问题讨论】:

    标签: kubernetes-deployment


    【解决方案1】:

    使用 topologySpreadConstraints 和 topologyKey 等于节点,因此 pod 将分布在节点之间。 maxSkew 用于设置一个节点可以调度的最大 pod 数。

    spec:
      topologySpreadConstraints:
      - maxSkew: 1
        topologyKey: node
        whenUnsatisfiable: DoNotSchedule
    

    您可以在其中查看如何配置所有内容的链接:

    https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/

    【讨论】:

      【解决方案2】:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: kub-starnet-deployment
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: kub-starnet
        template:
          metadata:
            labels:
              app: kub-starnet
          spec:
            topologySpreadConstraints:
              - maxSkew: 1
                topologyKey: node
                whenUnsatisfiable: ScheduleAnyway
            containers:
              - name: kub-starnet
                image: naveeenzone/img-kub-starnet:latest
                volumeMounts:
                  - mountPath: /app
                    name: nfs-vol
            securityContext:
              fsGroup: 1000
            volumes:
              - name: nfs-vol
                persistentVolumeClaim:
                  claimName: nfs-pvc
      

      我应用了上面的更改,两个 pod 只在一个节点上运行,而不是两个。

      节点信息:

      kubectl get nodes
      
      kubmst01.homenet.n4softsol.ca   Ready    master   162d   v1.18.1
      kubwrk01.homenet.n4softsol.ca   Ready    <none>   161d   v1.18.1
      kubwrk02.homenet.n4softsol.ca   Ready    <none>   161d   v1.18.1
      
      
       kubectl get pods --all-namespaces -o wide| grep star
      default       kub-starnet-deployment-77fd84df46-gwpjf                 1/1     Running   0          38m     10.10.97.177    kubwrk02.homenet.n4softsol.ca   <none>           <none>
      default       kub-starnet-deployment-77fd84df46-wtsgf                 1/1     Running   0          38m     10.10.97.178    kubwrk02.homenet.n4softsol.ca   <none>           <none>
      
      

      【讨论】:

        猜你喜欢
        • 2021-12-19
        • 1970-01-01
        • 2021-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        • 2015-05-16
        相关资源
        最近更新 更多