k8s:通过 kubectl 插件 Kubepug 实现集群升级检查(废弃API资源检查)

发布时间 2023-12-09 12:01:27作者: MhaiM

背景:k8s 的版本迭代很快,虽然主要版本一直没有变化,但是次要版本一直在迭代,2022年一年就发布了三个次要版本,同时不同的次要版本之间 API 资源一直在变化,有新加入的,也有废弃删除的。不同版本的 api 资源版本也有不同,往往不是向下兼容的,比如在低版本中 API 资源版本为 v1beta1,而高版本可能升级为 v1。但是在高版本中不能运行低版本的API资源。
所以在 k8s 版本升级的时候,需要对之前废弃的和删除的 API 资源 做出清理,需要升级的做升级,或者替换为其他的 API 资源。 在这之前,需要一个工具来检查 API 资源对象,那些事已经废弃的,那些将要废弃。
Kubepug 即是这样一个工具,一个升级前检查器,可帮助在迁移到新的主要版本之前在 Kubernetes 资源中找到已弃用和已删除的 API

1、kubepug 安装

wget  https://github.com/rikatz/kubepug/releases/download/v1.4.0/kubepug_linux_amd64.tar.gz

2、配置为 kubectl 插件

tar -zxvf kubepug_linux_amd64.tar.gz

mv kubepug kubectl-kubepug

mv ./kubectl-kubepug  /usr/local/bin/

3、查看版本测试

kubectl kubepug version

4、获取集群当前 API 状态

kubectl kubepug --k8s-version=v1.21.1

如果链接不上,会报上面的错误,可以把 对应的 swagger 文件下载下来上传。然后在检查的时候指定 swagger 文件目录

curl -o swagger-v1.21.1.json https://raw.githubusercontent.com/kubernetes/kubernetes/v1.21.1/api/openapi-spec/swagger.json

通过 --swagger-dir= 指定 对应的 swagger 文件位置,--k8s-version=v1.21.1 指定要检测的版本

mkdir -p /home/check_k8s

mv swagger-v1.21.1.json /home/check_k8s

再次检查:kubectl kubepug --k8s-version=v1.21.1 --swagger-dir=./home/check_k8s