如何用kubectl查询EKS集群中使用v1beta1 API的资源?
检测EKS集群中使用v1beta1 API版本的资源方法
我们的应用运行在EKS 1.21集群上,该版本将于2023年2月停止支持,目前正推进升级至EKS 1.22。需要排查集群中所有使用已废弃且被GA v1替代的v1beta1 API版本的资源,以下是可行的检测方法:
一、使用kubectl命令直接检测
1. 批量扫描多类资源
kubectl get的all参数仅覆盖部分核心资源,需补充1.22版本中从v1beta1升级到v1的常见资源类型,执行以下命令可批量扫描并过滤出使用v1beta1的资源:
kubectl get all,ingresses,roles,rolebindings,clusterroles,clusterrolebindings,cronjobs --all-namespaces -o yaml | grep -B2 -A2 'apiVersion:.*v1beta1'
该命令会输出包含v1beta1 API版本的资源片段,方便定位具体资源。
2. 精准查询特定v1beta1资源类型
先列出集群中所有注册的v1beta1类型资源:
kubectl api-resources | grep v1beta1
根据输出的资源类型,针对性查询所有实例,例如查询所有v1beta1版本的Ingress:
kubectl get ingresses.v1beta1.extensions --all-namespaces -o yaml
二、专用工具提升检测效率
对于更全面、自动化的检测,可使用专门的Kubernetes废弃API检测工具:
- pluto:专门识别集群中使用废弃API版本的资源,安装后执行:
# 检测集群所有命名空间的资源 pluto detect cluster --all-namespaces # 若使用Helm部署应用,可检测Helm release中的废弃API pluto detect-helm --all-namespaces
内容的提问来源于stack exchange,提问作者Ashley
相关产品推荐
相关产品推荐

