k8s滚动更新

2023-10-27

1.编写一个yaml文件

vi deployment-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata: 
  labels:
    app: nginx
  name: nginx
  namespace: default
spec:
  replicas: 3
  progressDeadlineSeconds: 600  #表示在这个时间段内,如果 Deployment 的 Pod 没有完成更新,则认为更新失败。默认值为 600 秒。这个参数主要用于控制 Deployment 更新的超时时间,避免更新过程中出现问题导致一直处于更新中的状态
  minReadySeconds: 10     #表示 Deployment 的 Pod 至少需要在这个时间段内处于 Ready 状态,才会被认为是更新成功。默认值为 0 秒。这个参数主要用于控制 Deployment 更新的稳定性。在更新过程中,如果 Pod 的状态不稳定,可能会导致服务不可用。通过设置 minReadySeconds,可以确保更新后的 Pod 状态稳定后再将其纳入服务
  strategy:
    rollingUpdate:
      maxSurge: 1   #参数定义了在滚动更新过程中,允许同时处于正在部署状态的Pod数量与原有多少Pod数量的比例。例如,如果maxSurge设置为50%,则在进行滚动更新时,可以同时部署50%的新版本Pod,剩余的50%仍为旧版本Pod。默认值为25%,也可以使用准确的个数
      maxUnavailable: 0  #参数定义了在滚动更新过程中,允许同时处于不可用状态的Pod数量与原有多少Pod数量的比例。例如,如果maxUnavailable设置为25%,则在进行滚动更新时,最多允许25%的Pod处于不可用状态。这个参数可以用来控制滚动更新时对应用程序可用性的影响。默认值为25%,最安全的滚动更新是设置此项为0,maxSurge设置为1,即生成一个新版本的pod之后,再删除一个老版本的pod,所以在更新过程中会存在4个pod,但是这个配置的更新速度是最慢的
    type: RollingUpdate  #更新模式的配置,一共有两种更新模式,分别是RollingUpdate、Recreate,前者采用滚动更新的方式更新pod,后者则是直接删除所有旧版本的pod,再重建新版本的pod
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec: 
      containers:
      - name: nginx
        image: nginx:1.17
        imagePullPolicy: IfNotPresent  #拉取镜像的策略,表示本地有这个镜像时,直接使用本地镜像,没有时才从镜像源拉取
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: 50Mi
            cpu: 0.5
          limits:
            memory: 100Mi
            cpu: 1

2.使用yaml文件

kubectl create -f  deployment-nginx.yaml --record

 --record表示记录此版本到deployment的history中,回滚时可以使用

查看一下deployment和pod

kubectl get deployment -o wide -n default

kubectl get pod -n default

现在我们来更新一下nginx的镜像版本,做一个滚动升级,并且查看一下pod和deployment

kubectl set image deployment nginx nginx=nginx:1.18 --record

kubectl get deployment -o wide -n default

kubectl get pod -n default -l app=nginx

可以看到在滚动更新的过程中pod的个数变成了4个,当更新完成后pod的数量恢复成了3个

 再来查看一下deployment使用的镜像版本

kubectl get deployment nginx -o wide

 接下来介绍一下有关滚动更新的rollout命令

kubectl rollout history deployment nginx -n default

查看历史版本,可以通过历史版本中的revision恢复成指定的版本

 

 kubectl rollout pause deployment nginx -n default

暂停滚动更新

kubectl rollout resume deployment nginx -n default

恢复滚动更新

kubectl rollout status deployment nginx -n default

查看滚动更新的状态

 

kubectl rollout undo deployment nginx -n defaulre --to-revision=1

恢复到指定的版本

 

也可以使用以下命令查看

kubectl rollout --help

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s滚动更新 的相关文章

随机推荐

  • 获取url中的参数

    获取url 后的参数 location对象 含有当前URL的信息 属性 href 整个URL字符串 protocol 含有URL第一部分的字符串 如http host 包含有URL中主机名 端口号部分的字符串 如 www cenpok ne
  • 使用openssl_encrypt方法替代mcrypt_encrypt做AES加密

    mcrypt encrypt在php7 1中已被废弃 需要使用openssl encrypt代替 mdecrypt generic版 public function encrypt cbc str iv encryptKey module
  • java8中stream()的使用案例

    Test public void t1 List
  • VS2008中的 fatal error C1902: 程序数据库管理器不匹配

    因为VC Bin 下没有 msobj80 dll mspdb80 dll mspdbcore dll mspdbsrv exe 这四个文件 解决的方法 1 gt 直接从Common7 IDE 下复制这四个文件到VC Bin 下即可解决 2
  • Android-四大应用组件之Activity

    一 理论概述 Activity的理解 二 Intent和IntentFilter的理解 显示意图 当目标组件是当前应用的 则用显示意图 隐式意图 当目标组件是其他应用的 则用隐式意图 三 相关API 四 Activity的启动流程 通过Ac
  • 网络安全工具——Wireshark抓包工具

    文章目录 一 Wireshark抓包介绍 1 WireShark简介 2 WireShark的应用 3 WireShark抓数据包技巧 二 Wireshark抓包入门操作 1 常见协议包 2 查看本机要抓包的网络 3 混杂模式介绍 4 如何
  • stratascratch刷题1 salaries difference && Finding Updated Records

    1 解题 select select max salary from db employee join db dept on db employee department id db dept id where department mar
  • 接口测试的基础(网络传输知识与协议篇)

    接口测试的基础 测试人员对于接口测试的理解总是停留在工具使用层面 很多情况下 测试人员会花很大的 代价去学习一个工具 而测试工具本身的局限性 又导致测试人员陷入想直接用现成的测试框架 却又无法进行扩展的僵局 最后由于项目的特殊性等客观因素
  • ping命令中ICMP协议包的分析

    UDP收发以及所需要的ARP协议已经全部实现 接下来让咱们的协议栈支持ping 俗称能ping通 ping的请求和发送实际是ICMP协议的一个子集 ICMP可以参考ICMP数据包结构 Focus 新浪博客 在IP头中ICMP协议的标识是01
  • springboot项目读取 resource下面的json文件,并且解析

    在Spring Boot项目中 如果要读取src main resources目录下的JSON文件 可以使用ResourceLoader来加载文件 并使用Jackson库将JSON文件解析成Java对象 以下是一个简单的示例代码 impor
  • Type-C协议简介(CC检测原理)

    1 简介 越来越多的手机开始采用Type C作为充电和通信端口 Type C连接器实物和PIN定义如下图 目录 1 简介 Type C连接器中有两个管脚CC1和CC2 他们用于识别连接器的插入方向 以及不同的插入设备 本文介绍CC的基本识别
  • Bootrom概述

    1 Bootrom 是指on chip bootrom 在CPU芯片内部 内嵌有小的boot程序 bootloader 类似于PC机主板上的BIOS的存储区域 2 Bootloader怎么得到 如果对开发板有些改动 还能使用开发板的boot
  • solidity学习过程---msg

    solidity 5 0 remix测试 个人学习 欢迎指正 msg 研究了好一会 感觉还是有点困惑 msg sender 当前合约的调用者 1 部署合约的地址 2 调用该合约的地址 msg value 随消息发送的 wei 的数量 其实并
  • 【Spark NLP】第 15 章:聊天机器人

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • sonarQube详细安装

    目录 安装前提 将zip包scp到服务器 解压sonar的zip包 修改配置 创建用户sonar 将sonar目录授权给sonar用户 执行命令 查看日志 遇到的问题 今天学习了一下sonar 想看看代码质量检查工具的使用 安装前提 需要j
  • python笔记9--socket初步使用

    python笔记9 socket初步使用 1 介绍 2 源码案例 2 1 tcp c s 案例 2 2 udp c s 案例 3 说明 最近需要写个c s小应用 因此看了下socket编程 把学习的笔记贴在此处以便于后续查阅 1 介绍 本文
  • Mysql服务的安装

    本文适用于新手 小白 而且专业术语不到位 本文内容可能无法解决教程外其他问题 望多包涵 多图警告 此教程适用于windows系统 教程流程 安装时 1 下载安装包 这个是下载链接 MySQLhttps www mysql com 打开界面后
  • ubuntu连接mysql命令_远程服务器 ubuntu 安装 mysql 及连接使用

    远程服务器 ubuntu 安装 mysql 及连接使用 MySQL是最流行的开源关系数据库管理系统 它速度快 容易使用 容易扩展 并且流行的LAMP和LEMP的一部分 这篇指南讲解了如何在 Ubuntu 20 04上安装和保护 MySQL
  • SQL 取数值小数后两位,但不四舍五入。

    例 1 67789 结果要显示为 1 67 select round 1 67789 2 1 1 67 语法 ROUND numeric expression length function 参数 numeric expression 精确
  • k8s滚动更新

    1 编写一个yaml文件 vi deployment nginx yaml apiVersion apps v1 kind Deployment metadata labels app nginx name nginx namespace