Kubernetes中利用Kubectl set 让Deployment更新镜像

摘要:
问题描述:My Deployment只有一个pod。我定制的Docker图像如下:containers:-name:mycontaineimage:myimage:latest。在开发过程中,我希望推送最新版本并更新部署。不可能清楚地定义标记/版本并为每个构建添加它,并了解如何做到这一点:kubectlsetimagedeployment/my deployment my

问题描述

我的deployment有单个pod,我的自定义docker镜像如下:

containers:  
  - name: mycontainer    
    image: myimage:latest

在开发过程中,我想推送新的最新版本并更新Deployment。无法明确定义tag/version并为每个构建增加它,并且无法找到如何做到这一点:

kubectl set image deployment/my-deployment mycontainer=myimage:1.9.1

问题回答

配置标签更新触发Deployment更新

您可以使用grace period(例如30秒或更长时间,根据容器启动时间和镜像大小)配置您的pod,并设置“imagePullPolicy:”Always“。并使用kubectl delete pod pod_name。将创建一个新容器并且最新镜像自动下载,然后旧容器终止。

例子:

spec:  
  terminationGracePeriodSeconds: 30  
  containers:  
  - name: my_container    
    image: my_image:latest    
    imagePullPolicy: "Always"

我目前正在使用Jenkins进行自动构建和打镜像标签,它看起来像这样:

kubectl --user="kube-user" --server="https://kubemaster.example.com"  --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"

Kubectl set 命令设置触发Deployment更新

另一个技巧是最初运行:

kubectl set image deployment/my-deployment mycontainer=myimage:latest

然后:

kubectl set image deployment/my-deployment mycontainer=myimage

它实际上会触发滚动更新,但请确保您还有imagePullPolicy:“Always”设置。

我发现的另一个技巧是,您不必更改镜像名称,更改将触发滚动更新的字段的值,例如terminationGracePeriodSeconds。您可以使用kubectl编辑部署your_deployment或kubectl apply -f your_deployment.yaml或使用如下补丁:

kubectl patch deployment your_deployment -p   '{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'

只需确保始终更改数值。

使用kubectl rollout 命令也可以让pod 优雅滚动重启

kubectl rollout restart deployment xxxx

使用这条命令将重新启动对应的资源。

参考:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#rollout

免责声明:文章转载自《Kubernetes中利用Kubectl set 让Deployment更新镜像》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用Flask 实现文件服务器(包含docker版本)linux下操作PostgreSQL的常用命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker使用技巧小记

1、在使用docker的时候有很多人习惯使用官方镜像、有的人喜欢自己制作镜像,有的时候都是使用默认的配置启动的服务,或者自己在制作镜像的时候直接将配置文件打包到镜像里面了。有的时候会碰到要修改配置文件的情况,而又不想麻烦去创建一次镜像,可以直接进入到docker container里面去修改文件。但是这样会有种情况就是修改错了配置文件导致container...

Composer 更换为国内镜像源(Packagist 镜像)

安装lavavel步骤: 安装composer (需要开启php_openssl扩展,否则报错) (https://getcomposer.org/) 到github下载laravel的最新发行版 (https://github.com/laravel/laravel/releases) 把下载的laravel-*.zip 解压缩到项目目录 通过comp...

kubernetes 强制删除istio-system空间,强制删除pod

加上这个选项 --grace-period=0 --force--grace-period=0 --force 先删除deployment,pod,svc再删除namespace > kubectl get pod -n istio-system NAME READY S...

Kubernetes 多集群在开源项目 KubeSphere 的应用

Kubernetes 多集群使用场景 随着容器的普及和 Kubernetes 的日渐成熟,企业内部运行多个 Kubernetes 集群已变得颇为常见。概括起来,多个集群的使用场景主要有以下几种。 多集群使用场景 高可用 可以将业务负载分布在多个集群上,使用一个全局的 VIP 或者 DNS 域名将请求发送到对应的后端集群,当一个集群发生故障无法处理请求时,将...

LVS实现Kubernetes集群高可用

一、环境说明 1.操作系统:centos 7.5 x86_64 2.三台k8s-master                                                 3.两台lvs                                       k8s01:10.10.10.206                    ...

Qt使用镜像源快速安装与更新

一、前言 虽然Qt官方提供了两种安装方式一种是在线安装,另一种是离线安装。离线安装是分版本打包好了的,但如果我要安装PC端的又要安装Android的,那么就要安装两个版本,显得特别臃肿。若是我们选择在线安装的模式,更是麻烦,因为下载速度不是一般的慢。其实在中国,有很多的Qt镜像源,但是基本没多少人用,原因是Qt的镜像源做的并不好,如果我们导入的话会自动链接...