【笔记】Helm-3 主题-17 弃用的Kubernetes API

2024-01-24 12:04

本文主要是介绍【笔记】Helm-3 主题-17 弃用的Kubernetes API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

弃用的Kubernetes API

Kubernetes是一个API驱动系统,且API会随着时间的推移而变化,以反映对问题理解的不断推移。这是系统及API的普遍做法。API推移的一个重要部分是良好的弃用策略和通知用户更改API是如何实现的。换句话说,您的API使用者需要提前知道要发布的API删除或更改了什么。这消除了重大改变对用户造成的恐惧。

Kubernetes弃用策略文档描述了如何处理API版本的变化。弃用策略声明了在弃用生命之后支持的API版本的时间范围。因此关注弃用声明并知道API何时被移除很重要。有助于将影响降到最低。

Kubernetes Deprecation Policy | Kubernetes

这是一个声明示例,针对Kubernetes 1.6弃用的API版本,而且是在版本发布的几个月之前发布。在这之前,这些API版本可能已经宣布不再使用了。这表明一个好的策略可以通知用户API的版本支持。

Deprecated APIs Removed In 1.16: Here’s What You Need To Know | Kubernetes

Chart Maintainers

您应该审核chart,检查Kubernetes中已弃用或已删除的Kubernetes API版本。如果API版本不再被支持,应该更新为支持版本并发布新的chart版本。API版本应该由kind和apiVersion字段定义。比如,Kubernetes 1.16中有个被移除的Deployment对象API版本:

apiVersion: apps/v1beta1

kind: Deployment

apiVersion: apps/v1beta1
kind: Deployment

Helm用户

您应该审视您使用的chart(类似于 chart维护者 ),并识别所有的chart中Kubernetes版本弃用或移除的API版本。针对确定的chart,需要检查(有支持的API版本的)chart最新的版本,或者手动更新。

Helm | 弃用的 Kubernetes API

另外,您还需要审核已经部署的chart(即Helm版本)还有没有弃用或移除的API版本。可以使用helm get manifest获取详细信息。

将Helm更新为支持的API取决于您通过以下方式找到的:

1、如果您只找到弃用的API版本,则:

1)执行helm upgrade升级Kubernetes API版本支持的chart版本

2)在升级中添加一个描述,在当前版本之前不执行Helm版本会滚

2、如果您发现了在Kubernetes版本中被移除的API版本,则:

1)如果您运行的Kubernetes版本中API版本依然可用(比如,您在Kubernetes 1.15 且您发现使用的API会在1.16中移除):

遵循第1步的步骤

2)否则(比如,您运行的Kubernetes版本中某些API版本通过helm get manifest显示不可用):

需要编辑存储在集群中的版本清单,更新API版本到支持的API。查看 更新版本清单的API版本

Helm | 弃用的 Kubernetes API

注意:在所有使用支持的API更新Helm版本的场景中,绝不应该将发布版本会滚到API版本支持的之前的版本

建议:最佳实践是将正在使用的弃用版本升级到支持的API版本,在升级Kubernetes集群之前删除这些API版本。

如果您没有按照之前的建议更新版本,当升级的Kubernetes版本中API的版本已经移除,会出现类似下面的错误:

Error: UPGRADE FAILED: current release manifest contains removed kubernetes api(s)
for this kubernetes version and it is therefore unable to build the kubernetes
objects for performing the diff. error from kubernetes: unable to recognize "":
no matches for kind "Deployment" in version "apps/v1beta1"

Helm在这个情况中会失败,因为试图它在当前部署的和您传了更新/支持的API版本的chart之间创建一个diff补丁(包含在这个Kubernetes版本中删除的Kubernetes API)。失败的根本原因是,当Kubernetes删除了一个API版本时,Kubernetes的Go客户端不再解析弃用的对象,所以Helm调用库时会失败。不幸的是,Helm无法从这种情况下恢复,且无法再管理这样的版本。查看 升级发布清单的API版本 获取更多如何从这种情况恢复的细节信息。

Helm | 弃用的 Kubernetes API

Updating API Version of a Release Manifest

清单manifest是Helm发布对象的一个特性,存储在集群中的密钥(默认)或配置映射的数据字段中。数据字段包含了一个base64编码的gzip压缩的对象(对于密钥是一个额外的base 64编码)。在版本的命名空间中每个版本或修订都对应一个密钥或配置映射。

可以使用Helm mapkubeapis 插件对支持API执行版本升级。查看readme获取更多信息。

https://github.com/helm/helm-mapkubeapis

或者,可以按照这些步骤手动执行发布清单的API版本升级。根据您的配置,应该遵循密钥或配置映射的后台步骤。

1、获取最近部署的版本密钥或配置映射:

1)Secrets后台:kubectl get secret -l owner=helm,status=deployed,name=<release_name> --namespace <release_namespace> | awk '{print $1}' | grep -v NAME

2)ConfigMap后台:kubectl get configmap -l owner=helm,status=deployed,name=<release_name> --namespace <release_namespace> awk '{print $1}' | grep -v NAME

2、获取最新部署版本细节:

1)Secrets后台:kubectl get secret <release_secret_name> -n <release_namespace> -o yaml > release.yaml

2)ConfigMap后台:kubectl get configmap <release_configmap_name> -n <release_namespace> -o yaml > release.yaml

3、备份版本以便出错时恢复:

1)cp release.yaml release.bak

2)在紧急情况下恢复:kubectl apply -f release.bak -n <release_namespace>

4、解码发布版本对象:
1)Secrets后台:cat release.yaml | grep -oP '(?<=release:).*' | base64 -d | base64 -d | gzip -d > release.data.decoded

cat release.yaml | grep -oP '(?<=release: ).*' | base64 -d | base64 -d | gzip -d > release.data.decoded

2)ConfigMap后台:cat release.yaml | grep -oP '(?<=release:).*' | base64 -d | gzip -d > release.data.decoded

cat release.yaml | grep -oP '(?<=release: ).*' | base64 -d | gzip -d > release.data.decoded

5、修改清单的API版本。可以使用任意工具(如编辑器)修改。在您解码的发布对象的manifest字段。

(release.data.decoded)

6、编码发布对象:

1)Secrets后台:cat release.data.decoded | gzip | base64 | base64

2)ConfigMap后台:cat release.data.decoded | gzip | base64

7、用新编码的发布对象替换部署的发布文件(release.yaml)中data.release的值

8、将文件部署到命名空间:kubectl apply -f release.yaml -n <release_namespace>

9、用支持Kubernetes API版本的chart执行helm upgrade

10、在升级中添加一个描述,不要执行回滚到当前版本之前的版本

————————————

仅用于本人学习

来源:Helm | Docs 

这篇关于【笔记】Helm-3 主题-17 弃用的Kubernetes API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/639624

相关文章

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

通过高德api查询所有店铺地址信息

通过高德api查询所有店铺地址电话信息 需求:通过高德api查询所有店铺地址信息需求分析具体实现1、申请高德appkey2、下载types city 字典值3、具体代码调用 需求:通过高德api查询所有店铺地址信息 需求分析 查询现有高德api发现现有接口关键字搜索API服务地址: https://developer.amap.com/api/webservice/gui

DDei在线设计器-API-DDeiSheet

DDeiSheet   DDeiSheet是代表一个页签,一个页签含有一个DDeiStage用于显示图形。   DDeiSheet实例包含了一个页签的所有数据,在获取后可以通过它访问其他内容。DDeiFile中的sheets属性记录了当前文件的页签列表。   一个DDeiFile实例至少包含一个DDeiSheet实例。   本篇最后提供的示例可以在DDei文档直接预览 属性 属性名说明数

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

API-环境对象

学习目标: 掌握环境对象 学习内容: 环境对象作用 环境对象: 指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境。 作用: 弄清楚this的指向,可以让我们代码更简洁。 函数的调用方式不同,this指代的对象也不同。【谁调用,this就是谁】是判断this指向的粗略规则。直接调用函数,其实相当于是window.函数,所以this指代window。

LVGL快速入门笔记

目录 一、基础知识 1. 基础对象(lv_obj) 2. 基础对象的大小(size) 3. 基础对象的位置(position) 3.1 直接设置方式 3.2 参照父对象对齐 3.3 获取位置 4. 基础对象的盒子模型(border-box) 5. 基础对象的样式(styles) 5.1 样式的状态和部分 5.1.1 对象可以处于以下状态States的组合: 5.1.2 对象

DDS信号的发生器(验证篇)——FPGA学习笔记8

前言:第一部分详细讲解DDS核心框图,还请读者深入阅读第一部分,以便理解DDS核心思想 三刷小梅哥视频总结! 小梅哥https://www.corecourse.com/lander 一、DDS简介         DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信