如何使用多个Pod创建部署?

时间:2019-04-05 15:31:50

标签: kubernetes google-cloud-platform

我正在通过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

3 个答案:

答案 0 :(得分:1)

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

kubectl scale deployment foo-server --replicas=2

还要查看具有maxUnavailable和maxsurge属性的更新策略。

答案 1 :(得分:0)

在您的orgement 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
  

部署可以确保仅关闭一定数量的Pod   在更新它们时。默认情况下,它确保至少25%   少于所需的Pod数量增加(最大25%不可用)。

     

部署还可以确保只能容纳一定数量的Pod   在所需数量的Pod上方创建。默认情况下,它确保   最多增加25%超出所需的Pod数量(最多25%   激增)。

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

答案 2 :(得分:0)

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