首页 > 其他分享 >kubectl 命令 --save-config 将部署信息添加到注解,防止deploy或webhook通过注释添加到集群 --record 记录下当前的版本信息为了回滚

kubectl 命令 --save-config 将部署信息添加到注解,防止deploy或webhook通过注释添加到集群 --record 记录下当前的版本信息为了回滚

时间:2023-04-24 17:49:43浏览次数:52  
标签:kubectl -- record 添加 apply save config

1、--save-config

为什么需要使用kubctl apply保存配置?

kubectl apply <file.yaml> --save-config创建或更新部署,并将部署另存为元数据。

文件上说
--save-config[=false]:如果为true,则当前对象的配置将保存在其注释中。当您将来要对此对象执行kubectl apply时,这非常有用。

为什么我需要save-config?如果不使用--save-config,我仍然可以使用kubectl apply更新部署。

 

kubectl apply

kubectl apply使用注解kubectl.kubernetes.io/last-applied-configuration中的数据来查看自上次应用以来是否有任何字段被删除。这是必要的,因为某些字段或注释可能已通过控制器或变异的webhook实时添加到集群中。

例如,请参见了解Kubectl Apply命令

如果我不--save-config,我仍然可以使用kubectl apply更新部署

是的,--save-config仅在从命令式工作流迁移时使用。详见下文。以下kubectl apply命令不需要--save-config标志,因为注释已经存在。

kubectl工作流

使用Kubernetes的配置时,可以通过多种方式完成,它们都是命令式或声明式的:

  • Managing Kubernetes Objects Using Imperative Commands
  • Kubernetes Objects Using配置文件的强制管理
  • Kubernetes Objects Using配置文件的声明式管理

kubectl apply用于声明性配置管理。

从命令式到声明式配置管理的迁移

kubectl--save-config标志一起使用是一种向kubectl apply使用的注释kubectl.kubernetes.io/last-applied-configuration写入配置的方法。这在从命令式工作流迁移到声明式工作流时非常有用。

  • 从命令式命令管理迁移到声明式对象配置
  • 从命令式对象配置迁移到声明式对象配置

 

2、--record

k8s的应用回滚--record

kubectl apply 每次更新应用时 Kubernetes 都会记录下当前的配置,保存为一个 revision(版次),这样就可以回滚到某个特定 revision。
默认配置下,Kubernetes 只会保留最近的几个 revision,可以在 Deployment 配置文件中通过 revisionHistoryLimit 属性增加 revision 数量。
使用也很简单,在更新的时候加上--record就可以了。

命令

记录版本
kubectl apply -f xxx.yaml --record
查看 revison
kubectl rollout history deployment $dp_name -n $namespaces
回滚
kubectl rollout undo deployment $dp_name --to-revision=1
注意:
record类似一个栈,先执行的apply会放到记录的最下端。也就是说你的上一个版本一定是2.
record记录的是apply的命令,所以如果每次执行的命令是一样的话,会覆盖掉。

实验

1、如下做三个httpd的yaml,分别为httpd.v1.yml,httpd.v2.yml 和 httpd.v3.yml,分别对应不同的 httpd 镜像 2.4.16,2.4.17 和 2.4.18:

2、通过 kubectl apply 更新应用

  1.   kubectl apply -f httpd.v1.yml --record
  2.   kubectl apply -f httpd.v2.yml --record
  3.   kubectl apply -f httpd.v3.yml --record

3、查看版本

kubectl rollout history deployment httpd

4、回滚
kubectl rollout undo deployment httpd --to-revision=1

标签:kubectl,--,record,添加,apply,save,config
From: https://www.cnblogs.com/gaoyuechen/p/17350287.html

相关文章

  • 4.24趣味百题2.7
    一问题描述一条长阶梯,若每步跨2阶则剩1阶,若每步跨3步则最后剩2阶,每步跨5阶,剩4阶,每步跨6阶,剩5阶每次跨7阶1阶不剩。请问在1~N内有多少个数满足。二设计思路利用穷举法寻找符合条件的例子选择结构来构造条件。剩几阶可以用取余操作三流程图四c++代码实现#include<io......
  • idea 常用插件
    1.git忽略文件设置File-->setting-->Plugins-->搜索.ignore-->安装后重启然后你的项目右键点击:new-->.ignore-->..(git)-->Exampletemplate创建2.常用插件plugins1.JBLSpringBootAppGen生成启动类和配置yml2.JavaToWeb3.PKXSpringBootCodeGen自动生成代......
  • ElementUI: Uncaught (in promise) cancel 报错
    场景:使用element confirm组件时,点击【取消】按钮,提示错误 Uncaught(inpromise)cancel 代码如下:open(){this.$confirm('此操作将永久删除该文件,是否继续?','提示',{confirmButtonText:'确定',cancelButtonText:'取消',......
  • property
    property使用property相当于把这个函数作为一个属性而不是方法,调用的时候获得的是一个只读的属性一般用于外部访问内部参数,并保护内部参数不被外部更改(只读)既然有只读的方法,当然也有对应的setter方法setter的前面必须要先property得先有属性才能做setter这种的另一个好处......
  • Windows更新失败(0x8007000d)
    “管理员:命令提示符”窗口中,键入以下命令。在每项命令后按Enter键:DISM.exe/Online/Cleanup-image/ScanhealthDISM.exe/Online/Cleanup-image/Restorehealth要关闭“管理员:命令提示符”窗口,请键入Exit,然后按Enter。再次运行Windows更新。......
  • 一款全面又开源的区块链开发者工具箱
    开源区块链开发者工具箱https://ChainTool.tech今天可以正式上线了。ChainTool使用完全开源的方式编写一些开发者日常经常使用的工具。关于ChainToolDAO大约在两个月前,ChainToolDAO成立了,成立ChainToolDAO的来由是这样的:我是一名区块链开发者,经常要遇到一些琐碎的工作,......
  • 产品推荐丨智慧水利行业应用终端+云平台
    智慧水利是我国智慧城市建设的重要延伸,是新时代水利现代化的战略目标,贯穿于防汛抗旱减灾、水资源合理配置和高效利用、水资源和河湖健康保障等体系。随着水利技术的集成发展与场景的成熟应用,我国水利现已完成从自动化阶段到信息化阶段的过渡,逐渐迈向智慧化阶段。基于水利部提出的......
  • if控制器使用说明
    目录一、IF控制器的运用场景二、举例说明(一)添加If控制器”(二)函数助手使用(三)运行效果一、IF控制器的运用场景在做接口测试过程中,部分场景的接口是否请求取决于上一个接口的返回结果比如:现在一些网站,用户去登录的时候,先走登录的流程,如果是网站用户就登录成功;如果不是网站......
  • STM32HAL库常用指令速查手册
    STM32HAL库常用指令速查手册持续更新中GPIOHAL_GPIO_InitvoidHAL_GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_Init);//功能:GPIO初始化HAL_GPIO_DeInitvoidHAL_GPIO_DeInit(GPIO_TypeDef*GPIOx,uint32_tGPIO_Pin);//功能:在函数初始化之后的引脚恢......
  • 《C和指针》第一章
    1第一章C标准库中几个常用的IO函数intputs(void*str):从str中提取字符直到遇到第一个'\0'为止,将这些字符串加上'\n'后发送给stdout。intmain(void){charinput[100];input[0]='a';input[1]='b';input[2]='c';input[3]=......