【问题标题】:How to create deployments with more than one pod?如何创建具有多个 pod 的部署?
【发布时间】:2019-04-06 10:08:17
【问题描述】:

我正在通过 Kubernetes 在 Google Cloud Platform 上托管一个应用程序,并且我已经成功地设置了这个持续部署管道:

  1. 应用程序代码已更新
  2. 自动生成新的 Docker 镜像
  3. K8s 部署会自动更新以使用新映像

这很好用,除了一个问题 - 部署似乎总是只有一个 pod。正因为如此,当下一个更新周期到来时,整个应用程序就宕机了,这是不可接受的。

我尝试修改部署的 YAML 以增加副本的数量,并且它可以工作......直到下一次图像更新,它再次重置回一个 pod。

这是我用来更新映像部署的命令:

set image deployment foo-server gcp-cd-foo-server-sha256=gcr.io/project-name/gcp-cd-foo-server:$REVISION_ID

【问题讨论】:

    标签: kubernetes google-cloud-platform


    【解决方案1】:

    如果您不想编辑部署 yaml 文件,可以使用此命令:

    kubectl scale deployment foo-server --replicas=2
    

    另外,请查看具有 maxUnavailable 和 maxsurge 属性的更新策略。

    【讨论】:

    • 我知道更新策略,问题是每次更新时 pod 计数都会重置为 1,因此它们实际上并没有做任何事情。
    • 查看部署文件中的副本数。它源自那里。如果你没有找到它,然后将其指定为所需的计数。
    【解决方案2】:

    在您的 orgional deployment.yml 文件中,将副本保持在 2 个或更多,否则如果只有一个 pod 正在运行并且您要重新部署/升级等,您将无法避免停机时间。

    3 个副本的部署(示例):

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
    

    部署可以保证只有一定数量的Pods可能宕机 在更新它们时。默认情况下,它确保至少 25% 少于所需的 Pod 数量(最多 25% 不可用)。

    部署也可以保证只有一定数量的Pods 在所需数量的 Pod 之上创建。默认情况下,它确保 最多比所需的 Pod 数量多 25%(最多 25% 激增)。

    https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

    【讨论】:

      【解决方案3】:

      没关系,我刚刚错误地设置了我的部署 - 与使用 GCP 用户界面创建部署而不是控制台命令有关。我用kubectl run app --image ... 创建了部署,现在它可以工作了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-21
        • 2020-11-26
        • 1970-01-01
        • 2020-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多