运行Pulumi报错kubeconfig使用废弃v1alpha1认证API如何解决
问题根因
运行Pulumi命令时持续返回Kubeconfig user entry is using deprecated API version client.authentication.k8s.io/v1alpha1. Run 'aws eks update-kubeconfig' to update.报错,且手动修改本地kubeconfig文件无效,核心原因有三个:
- 你修改的kubeconfig文件不是Pulumi实际读取的配置源。Pulumi Kubernetes Provider支持从栈配置、显式传参、环境变量、本地默认路径多个位置加载kubeconfig,多数场景下本地手动修改的
~/.kube/config根本不是Provider实际调用的配置,部分场景下Provider甚至会读取AWS EKS资源动态生成的临时配置,完全不依赖本地文件。 - 手动替换为
v1beta1版本仍不符合要求。EKS 1.24及以上版本已经同时弃用v1alpha1、v1beta1两个旧版客户端认证API,要求必须使用client.authentication.k8s.io/v1版本,仅替换到v1beta1依然会触发弃用告警。 - Pulumi插件或栈状态存在旧配置缓存。旧版本的kubeconfig内容可能被持久化存在栈状态、本地插件缓存中,本地文件修改后Provider不会自动同步更新,依然调用缓存里的旧配置。
可行解决方案
按优先级依次操作即可:
- 先确认Pulumi加载的kubeconfig源:在项目目录执行
pulumi config get kubernetes:kubeconfig查看栈配置中是否存储了硬编码的旧kubeconfig内容,如果有就执行pulumi config rm kubernetes:kubeconfig删除该配置,让Provider重新从本地默认路径加载配置。如果Kubernetes Provider初始化代码中显式传入了kubeconfig参数,直接检查代码中传入的配置内容是否为旧版本。 - 不要手动修改kubeconfig字段,直接执行AWS CLI命令重新生成合规配置:
aws eks update-kubeconfig --name <你的EKS集群名称> --region <集群所在AWS区域>,执行完成后打开生成的kubeconfig文件,确认用户条目下exec.apiVersion字段值为client.authentication.k8s.io/v1。 - 如果你使用对应语言的Pulumi EKS依赖包自动对接EKS集群、没有手动指定kubeconfig,直接把项目依赖的EKS、Kubernetes相关包升级到最新稳定版,旧版本EKS组件生成kubeconfig时会硬编码v1alpha1的API版本,升级后会自动适配v1版本的认证接口。
- 重装本地Kubernetes Provider插件清缓存:执行
pulumi plugin install resource kubernetes --reinstall,完成后重新运行Pulumi命令验证报错是否消失。
注意:如果你的EKS集群版本低于1.23,v1版本认证API不兼容,需要先将EKS集群升级到1.24及以上版本再执行上述操作,否则会出现集群认证失败问题。
内容的提问来源于stack exchange,提问作者Kaizendae
相关产品推荐
相关产品推荐

