kubernetes - kubectl rollout 重启部署没有得到最新的图像
问题描述
为什么kubectl rollout restart <deployment-name>
没有得到我的最新图像?我已经重建了我的镜像,但似乎 kubernetes 没有用最新的镜像更新我的部署。
解决方案
tl;博士
我只是想在这里添加一个关于kubectl rollout restart deployment [my-deployment-name]
. 我的问题是我更改了图像名称,而没有kubectl apply -f [my-deployment-filename>.yaml
先运行。
长答案
所以我之前的图像名称是microservices/posts
在我的本地,看起来像这样。
# This is a file named `posts-depl.yaml`
apiVersion: apps/v1
kind: Deployment
metadata:
name: posts-depl
spec:
replicas: 1
selector:
matchLabels:
app: posts
template:
metadata:
labels:
app: posts
spec:
containers:
- name: posts
image: microservices/posts
但是,由于我需要将其推送到 Docker Hub,因此我使用新名称重建映像,[my docker hub username]/microservices_posts
然后再推送。然后我更新了posts-depl.yaml
看起来像这样。
# Still same file `posts-depl.yaml` but updated
apiVersion: apps/v1
kind: Deployment
metadata:
name: posts-depl
spec:
replicas: 1
selector:
matchLabels:
app: posts
template:
metadata:
labels:
app: posts
spec:
containers:
- name: posts
image: [my docker hub username]/microservices_posts # Notice that I only change this part
显然,当我运行时kubectl rollout restart deployment posts-depl
,它没有更新。然后我终于决定去 StackOverflow。我只是以为我犯了一个错误,或者可能遇到了 kubernetes 错误或其他什么。
但事实证明我不得不kubectl apply -f <your deployment filename>.yaml
再次运行。然后它运行良好。
只是分享,可能会改变一个人的生活。;)
所以在这里回顾一下..
似乎我过去的部署是posts-depl
用我之前的图像的图像名称缓存的microservices/posts
,因为我构建了一个名为的新图像[my docker hub username]/microservices_posts
,所以它不承认这一点。所以当我跑步时kubectl rollout restart deployment <deployment name>
。它所做的是寻找microservices/posts
我本地的图像!但是由于它没有更新,所以它没有做任何事情!
因此,我应该做的是再次重新运行kubectl apply -f <my deployment filename>.yaml
,它已经用新的图像名称更新为 [my docker hub username]/microservices_posts
!
然后,我从此过上了幸福的生活。
希望对您有所帮助,愿您从此过上幸福的生活。
推荐阅读
- mime-types - 如何使用 com.filenet.wcm.api 更改 Filenet 文档 MimeType
- java - Hashmap 中一个键的值被设置为另一个键的值
- php - 比较字符串并删除部分字符串
- php - 循环遍历目录和子目录
- config - 为网络浏览器设置鱼而不是文本编辑器
- javascript - 在带有 {} 的 map() 中使用时反应不渲染元素
- android - 陀螺仪在三星和 Google Pixel 之间的行为不同
- vue.js - Vue JS路由用户角色,重载时丢失用户和数据
- laravel - 上下文感知本地化
- javascript - 如何使条件语句中的条件语句起作用?