AKS集群CronJob的kubectl与Dashboard API版本显示不一致问题咨询
核心结论
kubectl输出的batch/v1是正确的,Kubernetes Dashboard的显示属于UI适配问题,不影响集群实际资源状态。
具体分析
kubectl输出的权威性:
你的AKS集群是1.24版本,Kubernetes从1.21起就将CronJob的稳定API版本定为batch/v1,batch/v1beta1已被废弃。kubectl api-resources的输出明确显示cronjobs对应的API版本为batch/v1,说明集群API Server仅支持该稳定版本。kubectl直接从API Server获取资源数据,其返回的YAML是集群实际存储的资源版本,具有最高可信度。Dashboard显示异常的原因:
Dashboard显示batch/v1beta1是因为其版本未适配Kubernetes 1.24的API版本映射逻辑,UI层仍沿用旧版本字段展示,但集群内实际存储的资源已经是batch/v1。可以通过kubectl describe cronjob cronjob-name进一步验证,输出中的API版本会是batch/v1。未迁移Terraform资源却显示
batch/v1的原因:
你使用的Terraform Kubernetes Provider v2.24.0中,旧的kubernetes_cron_job资源已经默认使用batch/v1API与集群交互,即使未切换到kubernetes_cron_job_v1,provider也会自动采用稳定版本创建资源,因此kubectl显示的是正确版本。
升级建议
- 可以放心执行AKS集群到1.25版本的升级,因为现有CronJob实际已经是
batch/v1版本,1.25仅移除batch/v1beta1的API入口,不会影响现有资源运行。 - 尽快将Terraform配置中的CronJob资源切换为
kubernetes_cron_job_v1,确保配置与实际资源版本一致,避免后续provider更新带来的兼容性问题。
内容的提问来源于stack exchange,提问作者Pascal Paulis

