我正在通过Kubernetes在Google Cloud Platform上托管应用程序,并且设法建立了这个连续的部署管道:
这很好用,除了一个问题-部署似乎总是只有一个Pod。因此,当下一个更新周期到来时,整个应用程序将关闭,这是不可接受的。
我尝试修改部署的YAML以增加副本的数量,并且该方法一直有效……直到下一个映像更新为止,在此映像再次重置为一个pod。
这是我用来更新映像部署的命令:
set image deployment foo-server gcp-cd-foo-server-sha256=gcr.io/project-name/gcp-cd-foo-server:$REVISION_ID
答案 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 ...
创建了部署,现在可以使用了。