kubernetes - 根据标签更新多个 pod
问题描述
我有以下情况:
我有多个部署运行相同的映像,并且配置相同,但环境变量除外。
现在我的问题是,有没有一种简单的方法来更新所有这些部署的图像,而不是一个一个地更新?
我还没有找到解决方案,但我认为这应该可以通过使用标签来实现?
还是有更好的方法来部署仅具有不同环境变量的相同部署?
解决方案
是的,你可以,这就是标签的用途。它们适用于对相似对象进行分组。这是最小的可重现示例。
创建 2 个具有相同标签的部署app=nginx
:
$ 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
推荐阅读
- python - Python,Pandas,df 2 部分问题:1.如何根据特定条件将列添加到列表中 2.如何从 df 中删除这些列
- python - 创建新解释器和安装软件包时 Pycham 出现问题
- raster - 如何从 netcdf 文件中获取日期和深度并合并到数据框中?
- node.js - 在 Node.JS 中跨测功机保存对象的最佳方法
- mysql - 将 MySQL 查询复制并粘贴到命令行中不起作用
- google-colaboratory - 可视化对象检测图时 TensorBoard 挂起
- arrays - 如何将文件添加到 bash 数组
- spring - Crontab 无法启动 Maven 服务
- c++ - 连接变量时,目标特定变量定义不起作用
- prometheus - 总结一个已经是比率的指标