Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >kubectl更新镜像和回滚命令

kubectl更新镜像和回滚命令

作者头像
Ryan-Miao
发布于 2020-06-12 00:33:07
发布于 2020-06-12 00:33:07
5.5K00
代码可运行
举报
文章被收录于专栏:Ryan MiaoRyan Miao
运行总次数:0
代码可运行

目录

使用kubernetes 进行升级的时候并不需要停止业务,kubectl 支持滚动升级的方式,每次更新一个pod,而不是同时删除整个服务。

准备实验素材

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-nginx
spec:
  selector:
    matchLabels:
      name: nginx
  replicas: 3
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
        - name: hello-nginx
          image: nginx:1.7.9
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl apply -f hello-nginx.yml --record

更新镜像的语法

可以不用使用yml配置文件, 直接替换镜像版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# kubectl set image deployment  <deploymentName> <containerName>=<image>

 kubectl --kubeconfig config-lego-test  set image deployment/hello-nginx hello-nginx=nginx:1.9.2

我们可以通过设置docker:lastTag的方式, 回滚到上一个镜像. 但k8s本身也支持版本记录和回滚.

查看发布历史

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost .kube]# kubectl --kubeconfig config-my  rollout history deployment hello-nginx
deployment.extensions/hello-nginx 
REVISION  CHANGE-CAUSE
1         kubectl apply --kubeconfig=config-lego-test --filename=hello-nginx.yml --record=true
2         kubectl apply --kubeconfig=config-lego-test --filename=hello-nginx.yml --record=true
3         kubectl apply --kubeconfig=config-lego-test --filename=hello-nginx.yml --record=true
4         kubectl apply --kubeconfig=config-lego-test --filename=hello-nginx.yml --record=true

[root@localhost .kube]# kubectl --kubeconfig config-my  rollout history deployment hello-nginx --revision=4
deployment.extensions/hello-nginx with revision #4
Pod Template:
  Labels:       app=hello-nginx
        pod-template-hash=6d5c95fcc5
  Annotations:  kubernetes.io/change-cause: kubectl apply --kubeconfig=config-lego-test --filename=hello-nginx.yml --record=true
  Containers:
   hello-nginx:
    Image:      nginx:1.9.2
    Port:       8080/TCP
    Host Port:  0/TCP
    Requests:
      cpu:      250m
      memory:   512Mi
    Environment:        <none>
    Mounts:     <none>
  Volumes:      <none>

回滚到上一个版本

比如, 刚才查看了最近的几条发布历史记录, 现在回滚到上一个版本, 即revision=3.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost .kube]# kubectl --kubeconfig config-lego-test  rollout undo deployment hello-nginx
deployment.extensions/hello-nginx rolled back

[root@localhost .kube]# 
[root@localhost .kube]# kubectl --kubeconfig config-lego-test  rollout history deployment hello-nginx
deployment.extensions/hello-nginx 
REVISION  CHANGE-CAUSE
1         kubectl apply --kubeconfig=config-lego-test --filename=hello-nginx.yml --record=true
2         kubectl apply --kubeconfig=config-lego-test --filename=hello-nginx.yml --record=true
4         kubectl apply --kubeconfig=config-lego-test --filename=hello-nginx.yml --record=true
5         kubectl apply --kubeconfig=config-lego-test --filename=hello-nginx.yml --record=true

可以发现, revision=3没了, 多个了一个revison=5. describe一下, 可以看到, 确实是第3个版本的镜像.

回滚指定版本

除了上面直接回滚到上一次, 也可以指定具体某个版本. 比如回滚到revision=1.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 kubectl rollout undo deployment/hello-nginx --to-revision=1

ps: deployment/hello-nginx 表示 deployment hello-nginx

查看回滚状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost .kube]# kubectl --kubeconfig config-lego-test  rollout status deployment hello-nginx       
deployment "hello-nginx" successfully rolled out

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
备战CKA每日一题——第7天
官方中set image命令: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#set
我的小碗汤
2019/12/10
5230
K8S的名称空间创建&&版本的升级、回滚操作
2、在master节点,自定义一个镜像,基于nginx镜像,默认界面内容改为:Version:v1,版本2内容为:Version:v2.版本3内容为:Version:v3
小手冰凉
2020/08/28
4900
K8S的名称空间创建&&版本的升级、回滚操作
kubernetes常用控制器之Deployment
Deployment实现了Kubernetes项目中非常重要的功能: (1)、水平扩展 (2)、水平收缩
极客运维圈
2020/03/23
8290
kubernetes常用控制器之Deployment
Kubernates之Deployment滚动升级和回滚
从上面的结果可以看出在执行Deployment升级的时候最好带上record参数,便于查看历史版本信息
克虏伯
2020/08/02
7730
Kubernetes的Rolling Update实战
版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢
耕耘实录
2018/12/20
4110
Kubernetes:Pod 升级、回滚
本篇主要讨论如何实现滚动更新和回滚,任意更换版本并且回滚以前的版本(版本更新),而下一章会讨论到 Pod 缩放,根据机器资源自动拓展和收缩应用(自动扩容实例)。
痴者工良
2021/12/05
1.5K0
Kubernetes:Pod 升级、回滚
Kubernetes的Deployment与ReplicaSet了解与基础操作
Deployment是新一代用于Pod管理的对象,与Replication Controller相比,它提供了更加完善的功能,使用起来更加简单方便。
马凌鑫
2018/09/26
9.6K2
Kubernetes滚动更新及回滚
当集群中的某个服务需要升级时,我们需要停止目前与该服务相关的所有Pod,然后重新拉取镜像并启动。如果集群规模比较大,则这个工作就变成了一个挑战,而且先全部停止然后逐步升级的方式会导致长时间的服务不可用。Kubernetes提供了rolling-update滚动升级功能来解决上述问题。
胡齐
2020/06/23
1.6K0
Kubectl Rollout 回滚Autoscale自动扩容
Kubernetes 中采用ReplicaSet(简称RS)来管理Pod。如果当前集群中的Pod实例数少于目标值,RS 会拉起新的Pod,反之,则根据策略删除多余的Pod。Deployment正是利用了这样的特性,通过控制两个RS里面的Pod,从而实现升级。
kubernetes中文社区
2019/06/24
1K0
Kubectl Rollout 回滚Autoscale自动扩容
k8s 实践经验(四):实操中学 k8s 五种资源(2)deployment
接上一篇,上一篇的 pod 占的篇幅有点多,但是我感觉才讲了一点,pod 真要拿出来讲能讲好几节课。
看、未来
2022/05/06
3030
k8s 实践经验(四):实操中学 k8s 五种资源(2)deployment
k8s实践(三):pod常用操作
Pod是kubernetes中你可以创建和部署的最小也是最简单位。一个Pod代表着集群中运行的一个进程。
loong576
2019/09/10
3.7K0
k8s实践(三):pod常用操作
k8s 资源管理之 deployment
在kubernetes中,Pod是最小的控制单元,但是kubernetes很少直接控制Pod,一般都是通过Pod控制器来完成的。Pod控制器用于Pod的管理,确保Pod资源符合预期的状态,当pod的资源出现故障时,会尝试进行重启或重建Pod。
看、未来
2022/08/11
6900
k8s 资源管理之 deployment
k8s工作负载资源之deployment
首先我们要理解:一个应用跑在k8s集群上了,那么这个应用就是一个工作负载(workloads)。
你大哥
2021/10/11
9050
k8s工作负载资源之deployment
kubectl命令备忘单,收藏备用!
您还可以为 kubectl 使用一个速记别名,该别名也可以与 completion 一起使用:
DevOps持续交付
2021/01/28
9200
Kubernetes集群之熟悉kubectl基础命令
管理K8S资源的三种基本方法 陈述式管理方法——命令行CLI工具 声明式管理方法——统一资源配置清单(mainfest) GUI式管理方法——web页面(dashboard) kubectl命令行 kubernetes集群管理集群资源的唯一入口式通过相应的方法调用apiserver的接口 kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理K8S各种资源的一种有效途径 陈述式资源管理方法 基础管理 查看名
王先森sec
2023/04/24
3530
浅入Kubernetes(12):Deployment 的升级、回滚
打开 https://hub.docker.com/_/nginx 可以查询 nginx 的镜像版本,我们可以先选择一个旧一点的版本。
痴者工良
2021/04/26
1.1K0
Deployment 原理
每一个 Deployment 都会和它的依赖组成以下的拓扑结构,在这个拓扑结构中的子节点都是『稳定』的,任意节点的删除都会被 Kubernetes 的控制器重启:
看、未来
2022/08/11
5850
Deployment 原理
【赵渝强老师】K8s中的Deployment控制器
K8s的Deployment将Pod部署成无状态的应用程序,它只关心Pod的数量、Pod更新方式、使用的镜像和资源限制等。由于是无状态的管理方式,因此Deployment中没有角色和顺序的概念,换句话说:Deployment中没有状态。
赵渝强老师
2024/09/20
770
【赵渝强老师】K8s中的Deployment控制器
第3课 Kubectl常用命令详解
通过配置文件名或stdin创建一个集群资源对象。 支持JSON和YAML格式的文件。
辉哥
2021/11/24
2.7K0
第3课 Kubectl常用命令详解
基于k8s Deployment的弹性扩缩容及滚动发布机制详解
k8s第一个重要设计思想:控制器模式。k8s里第一个控制器模式的完整实现:Deployment。它实现了k8s一大重要功能:Pod的“水平扩展/收缩”(horizontal scaling out/in)。该功能从PaaS时代开始就是一个平台级项目必备编排能力。
JavaEdge
2024/01/12
7390
基于k8s Deployment的弹性扩缩容及滚动发布机制详解
相关推荐
备战CKA每日一题——第7天
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验