轻松检测 Kubernetes 上已弃用的资源
Easily detect deprecated resources on Kubernetes
我们刚刚收到一封来自 GCP 的电子邮件,通知我们我们的集群目前正在使用已弃用的 Beta APIs,我们需要升级到最新的 API 版本。
我们在多个命名空间中有 3 个集群 运行 多个资源,因此必须遍历所有资源来检测哪些已过时会有点痛苦。
我们控制的那些,例如服务、部署、horizontalpodautoscalers、poddisruptionbudgets 等,那些已经更新了。
但是我们有很多服务的清单文件是自动生成的,例如Halyard生成的Spinnaker服务,或者Elastic Operator生成的ElasticSearch等
有没有什么方法可以按 API 版本过滤所有资源,或者有什么方法可以检测所有命名空间中已弃用的资源?
为了查看您的集群API支持哪些
# Print out supported API's in the cluster
kubectl api-versions
为了查看已弃用的 API,您可以使用此工具。
这正是您所要求的,它将打印包含已弃用 API 的资源列表。
https://github.com/doitintl/kube-no-trouble
# sample output from the official docs:
$./kubent
6:25PM INF >>> Kube No Trouble `kubent` <<<
6:25PM INF Initializing collectors and retrieving data
6:25PM INF Retrieved 103 resources from collector name=Cluster
6:25PM INF Retrieved 132 resources from collector name="Helm v2"
6:25PM INF Retrieved 0 resources from collector name="Helm v3"
6:25PM INF Loaded ruleset name=deprecated-1-16.rego
6:25PM INF Loaded ruleset name=deprecated-1-20.rego
_____________________________________________________________________
>>> 1.16 Deprecated APIs <<<
---------------------------------------------------------------------
KIND NAMESPACE NAME API_VERSION
Deployment default nginx-deployment-old apps/v1beta1
Deployment kube-system event-exporter-v0.2.5 apps/v1beta1
Deployment kube-system k8s-snapshots extensions/v1beta1
Deployment kube-system kube-dns extensions/v1beta1
_____________________________________________________________________
>>> 1.20 Deprecated APIs <<<
---------------------------------------------------------------------
KIND NAMESPACE NAME API_VERSION
Ingress default test-ingress extensions/v1beta1
正在安装kubent
# install `kubent`
sh -c "$(curl -sSL 'https://git.io/install-kubent')"
运行 kubent
kubent
其他类似工具:
kdave 检查集群中任何已弃用或删除的 apiVersions 并以 Prometheus 指标格式导出它们。它从部署的 helm 版本中收集这些 apiVersions
它可以让你有知名度并回答这些问题
- 集群中有多少应用程序使用已弃用的 apiVersions
- 集群中有多少应用程序使用已删除的 apiVersions
- 是否会在下一个版本中删除已弃用的 apiVersions 或
接下来的两个版本
- 这些已弃用或删除的替换 apiVersions 是什么
api版本
kdave https://github.com/wayfair-incubator/kdave 和 k8s-used-api-versionshttps://github.com/wayfair-incubator/k8s-used-api-versions
https://www.linkedin.com/pulse/kubernetes-used-api-versions-operator-ahmed-elbakry/
https://www.linkedin.com/pulse/kubernetes-deprecated-api-versions-exporter-ahmed-elbakry/
我们刚刚收到一封来自 GCP 的电子邮件,通知我们我们的集群目前正在使用已弃用的 Beta APIs,我们需要升级到最新的 API 版本。
我们在多个命名空间中有 3 个集群 运行 多个资源,因此必须遍历所有资源来检测哪些已过时会有点痛苦。
我们控制的那些,例如服务、部署、horizontalpodautoscalers、poddisruptionbudgets 等,那些已经更新了。
但是我们有很多服务的清单文件是自动生成的,例如Halyard生成的Spinnaker服务,或者Elastic Operator生成的ElasticSearch等
有没有什么方法可以按 API 版本过滤所有资源,或者有什么方法可以检测所有命名空间中已弃用的资源?
为了查看您的集群API支持哪些
# Print out supported API's in the cluster
kubectl api-versions
为了查看已弃用的 API,您可以使用此工具。
这正是您所要求的,它将打印包含已弃用 API 的资源列表。
https://github.com/doitintl/kube-no-trouble
# sample output from the official docs:
$./kubent
6:25PM INF >>> Kube No Trouble `kubent` <<<
6:25PM INF Initializing collectors and retrieving data
6:25PM INF Retrieved 103 resources from collector name=Cluster
6:25PM INF Retrieved 132 resources from collector name="Helm v2"
6:25PM INF Retrieved 0 resources from collector name="Helm v3"
6:25PM INF Loaded ruleset name=deprecated-1-16.rego
6:25PM INF Loaded ruleset name=deprecated-1-20.rego
_____________________________________________________________________
>>> 1.16 Deprecated APIs <<<
---------------------------------------------------------------------
KIND NAMESPACE NAME API_VERSION
Deployment default nginx-deployment-old apps/v1beta1
Deployment kube-system event-exporter-v0.2.5 apps/v1beta1
Deployment kube-system k8s-snapshots extensions/v1beta1
Deployment kube-system kube-dns extensions/v1beta1
_____________________________________________________________________
>>> 1.20 Deprecated APIs <<<
---------------------------------------------------------------------
KIND NAMESPACE NAME API_VERSION
Ingress default test-ingress extensions/v1beta1
正在安装kubent
# install `kubent`
sh -c "$(curl -sSL 'https://git.io/install-kubent')"
运行 kubent
kubent
其他类似工具:
kdave 检查集群中任何已弃用或删除的 apiVersions 并以 Prometheus 指标格式导出它们。它从部署的 helm 版本中收集这些 apiVersions 它可以让你有知名度并回答这些问题
- 集群中有多少应用程序使用已弃用的 apiVersions
- 集群中有多少应用程序使用已删除的 apiVersions
- 是否会在下一个版本中删除已弃用的 apiVersions 或 接下来的两个版本
- 这些已弃用或删除的替换 apiVersions 是什么 api版本
kdave https://github.com/wayfair-incubator/kdave 和 k8s-used-api-versionshttps://github.com/wayfair-incubator/k8s-used-api-versions
https://www.linkedin.com/pulse/kubernetes-used-api-versions-operator-ahmed-elbakry/ https://www.linkedin.com/pulse/kubernetes-deprecated-api-versions-exporter-ahmed-elbakry/