Kubernetes中利用Kubectl set 让Deployment更新镜像
问题描述
我的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更新镜像的更多相关文章
- Kubernetes中如何让Deployment更新镜像
问题描述 我的deployment有单个pod,我的自定义docker镜像如下: 123 containers: - name: mycontainer image: myimage:latest 在 ...
- kubernetes 中遇见的一些坑(持续更新)
一.官网镜像无法下载 解决方法:需要翻墙 配置docker翻墙机: cat /usr/lib/systemd/system/docker.service [Service] Environment ...
- Kubernetes 系列(二):Deployment 扩容
(1)首先我们创建一个nginx的Deployment,采用官方的yaml: kubectl create -f https://kubernetes.io/docs/user-guide/nginx ...
- 利用Kubernetes中的leaderelection实现组件高可用
在Kubernetes中,通常kube-schduler和kube-controller-manager都是多副本进行部署的来保证高可用,而真正在工作的实例其实只有一个.这里就利用到 leaderel ...
- 在kubernetes中搭建harbor,并利用MinIO对象存储保存镜像文件
前言:此文档是用来在线下环境harbor利用MinIO做镜像存储的,至于那些说OSS不香吗?或者单机harbor的,不用看了.此文档对你没啥用,如果是采用单机的harbor连接集群MinIO,请看我的 ...
- Kubernetes中Deployment部署故障排除
Kubernetes中Deployment部署故障排除 字符型思维导图 排查pod状态(带标签):kubectl get pods,是否有等待处理的pod? 是?kubectl describe po ...
- [原创]MYSQL中利用外键实现级联删除和更新
MySQL中利用外键实现级联删除.更新 MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定 ...
- StatefulSet: Kubernetes 中对有状态应用的运行和伸缩
在最新发布的 Kubernetes 1.5 我们将过去的 PetSet 功能升级到了 Beta 版本,并重新命名为StatefulSet.除了依照社区民意改了名字之外,这一 API 对象并没有太大变化 ...
- kubernetes系列05—kubectl应用快速入门
本文收录在容器技术学习系列文章总目录 1.使用kubectl 1.1 介绍 kubectl用于运行Kubernetes集群命令的管理工具. 1.2 语法 kubectl [command] [TYPE ...
随机推荐
- cnblogs 日期错乱 bug
cnblogs 日期错乱 bug 时间错乱 bug archive/2004/01/13/ 什么鬼 呀默认时间戳 https://www.cnblogs.com/xgqfrms/archive/200 ...
- JavaScript & Atomics
JavaScript & Atomics Atomics 对象提供了一组静态方法对 SharedArrayBuffer 和 ArrayBuffer 对象进行原子操作. Atomics.add ...
- wifi IP address scanner on macOS
wifi IP address scanner on macOS Nmap Network Scanning https://nmap.org/book/inst-macosx.html https: ...
- 09、IO流—File类与IO流
目录 一.File类 基本认识 实用方法 获取功能 重命名功能(包含剪切) 判断功能 创建.删除文件 实际小案例 二.IO流 1.认识IO流 2.IO流基类介绍 字节流基类介绍 字符流基类介绍 三.节 ...
- 云服务器Centos7部署Tomcat服务器
目录 部署Tomcat服务器 1.安装JDK1.8 2.安装与启动tomcat 配置安全组(8080端口) 参考文章 部署Tomcat服务器 1.安装JDK1.8 JDK下载地址:https://ww ...
- Python爬虫_百度贴吧(title、url、image_url)
本爬虫以百度贴吧为例,爬取某个贴吧的[所有发言]以及对应发言详情中的[图片链接] 涉及: request 发送请求获取响应 html 取消注释 通过xpath提取数据 数据保存 思路: 由于各贴吧发言 ...
- vue-eahars生产编译报错
{ test: /\.js$/, loader: 'babel-loader', include: [resolve('src'), resolve('test'), resolve('node_mo ...
- 将项目加载到tomcat中的时候报错:Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
转自:http://jingwang0523.blog.163.com/blog/static/9090710320113294551497/ 最近在用eclipse做项目,新建项目时什么都贪新,用最 ...
- Vue学习笔记-基于CDN引入方式简单前后端分离项目学习(Vue+Element+Axios)
一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ...
- nodejs+express+mongodb实现登录注册
nodejs+express+mongodb实现登录注册 1 简介 登录注册功能使用nodejs+express+mongodb完成,其中对mongodb的操作使用mongoose完成,对mongod ...