根据标签更新多个pod

问题描述 投票:0回答:1

我有以下情况:

我有多个部署运行相同的映像,除环境变量外,配置相同。

现在我的问题是,是否有一种简单的方法来更新所有这些部署的图像,而不是一个一个地进行更新?

我还没有找到解决方案,但我认为使用标签应该可行吗?

或者是否有更好的方法来部署仅具有不同环境变量的相同部署?

kubernetes label kubernetes-pod kubernetes-deployment
1个回答
2
投票

是的,你可以,这就是标签的用途。它们适用于对类似对象进行分组。这是最小可重复的例子。 使用相同的标签app=nginx创建2个部署:

$ kubectl run --image=nginx --overrides='{ "metadata": {"labels": {"app": "nginx"}}, "spec":{"template":{"spec": {"containers":[{"name":"nginx-container", "image": "nginx"}]}}}}' nginx-1
deployment.apps/nginx-1 created
$ kubectl run --image=nginx --overrides='{ "metadata": {"labels": {"app": "nginx"}}, "spec":{"template":{"spec": {"containers":[{"name":"nginx-container", "image": "nginx"}]}}}}' nginx-2
deployment.apps/nginx-2 created

以下是我们的部署:

$ kubectl get deploy -o wide --show-labels 
NAME      READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS        IMAGES   SELECTOR      LABELS
nginx-1   1/1     1            1           20s   nginx-container   nginx    run=nginx-1   app=nginx,run=nginx-1
nginx-2   1/1     1            1           16s   nginx-container   nginx    run=nginx-2   app=nginx,run=nginx-2

然后我们可以使用set命令并使用标签app=nginx过滤所需的部署:

$ kubectl set image deployment -l app=nginx nginx-container=nginx:alpine
deployment.extensions/nginx-1 image updated
deployment.extensions/nginx-2 image updated

并看到结果:

$ kubectl get deploy -o wide --show-labels
NAME      READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS        IMAGES         SELECTOR      LABELS
nginx-1   1/1     1            1           6m49s   nginx-container   nginx:alpine   run=nginx-1   app=nginx,run=nginx-1
nginx-2   1/1     1            1           6m45s   nginx-container   nginx:alpine   run=nginx-2   app=nginx,run=nginx-2
© www.soinside.com 2019 - 2024. All rights reserved.