Kubernetes Kubectl apply不更新POD或部署
每当对图像进行更新时,我都会使用CI来更新kubernetes集群。每当映像被推送并具有最新标记时,kubectl就会应用现有的部署,但不会更新任何内容 这就是我们要做的Kubernetes Kubectl apply不更新POD或部署,kubernetes,google-kubernetes-engine,kubectl,Kubernetes,Google Kubernetes Engine,Kubectl,每当对图像进行更新时,我都会使用CI来更新kubernetes集群。每当映像被推送并具有最新标记时,kubectl就会应用现有的部署,但不会更新任何内容 这就是我们要做的 $kubectl apply--record--filename/tmp/deployment.yaml 我的目标是在运行apply时执行滚动部署 apiVersion:extensions/v1beta1 种类:部署 元数据: 名称:api 规格: 副本:1份 模板: 元数据: 标签: 应用程序:api 规格: 容器: -名
$kubectl apply--record--filename/tmp/deployment.yaml
我的目标是在运行apply时执行滚动部署
apiVersion:extensions/v1beta1
种类:部署
元数据:
名称:api
规格:
副本:1份
模板:
元数据:
标签:
应用程序:api
规格:
容器:
-名称:api
图片:us.gcr.io/joule-eed41/api:最新版本
imagePullPolicy:始终
端口:
-集装箱港口:1337
args:
-/bin/sh
--c
-echo运行api;npm启动
环境:
-名称:名称空间
价值来源:
configMapKeyRef:
名称:config
键:名称空间
正如其他人所建议的,有一个特定的标签。
使用以下命令设置新图像
kubectl设置映像部署/部署\名称部署\名称=映像\名称:映像\标记
在你的情况下是这样的
kubectl set image deployment/api api=us.gcr.io/joule-eed41/api:0.1As@ksholla20使用
kubectl set image
对于许多(大多数?)情况是一个很好的选择
但如果不能更改图像标签,请考虑使用:
1)kubectl卷展栏重新启动部署/
()
2)kubectl补丁部署-p“{”spec\“:{”template\“:{”metadata\“:{”labels\“:{”version\“:“$CURRENT\u BUILD\u HASH\u OR\u DATE\”}}”
()
(*)请注意,
patch
命令允许您更改部署中的特定属性(或选择的任何其他对象)例如标签选择器和pod标签或其他属性,如示例中的名称空间
环境变量的值。YAML文件中有什么?@kichik添加了YAML问题是k8s不知道实际标记的图像已更改。您有两种解决方案:1)删除现有的POD,然后将拉取新版本2)每次使用新版本。@uthark您每次使用新版本是什么意思?@HannanRhodes您的docker图像应该在严格版本下发布,而不是浮动最新版本。e、 g.0.1、0.2、0.3等。