使用client-go连接minikube集群报错:找不到auditregistration/v1alpha1包
这个报错的核心原因是你使用的k8s.io/client-go版本(v11.0.0)和自动拉取的k8s.io/api版本(v0.19.0)严重不匹配,两者对应的Kubernetes版本差距过大,导致旧版client-go依赖的k8s.io/api/auditregistration/v1alpha1包在新版api模块中已经不存在(或者被重构、废弃)。
下面是具体的修复步骤:
1. 确认你的Minikube集群版本
先搞清楚本地Minikube对应的Kubernetes版本,执行命令:
kubectl version --short
输出里的Server Version就是你集群的K8s版本,比如v1.19.0。
2. 统一client-go与api模块的版本
client-go和k8s.io/api的版本必须严格对应Kubernetes集群版本,否则必然出现兼容性问题:
如果你的集群是v1.19.x:
执行以下命令,将client-go和相关api包统一升级到对应版本:go get k8s.io/client-go@v0.19.0这个命令会自动拉取与v0.19.0 client-go匹配的所有api子模块,解决包缺失问题。
如果你想继续使用旧版client-go(不推荐,因为和集群版本差距大可能有其他兼容问题):
你需要强制将k8s.io/api版本降到与client-go v11.0.0匹配的K8s 1.11.x版本:go get k8s.io/api@v1.11.10
3. 检查代码中的导入(可选)
如果你的代码里并没有实际用到auditregistration/v1alpha1相关功能,只是不小心导入了这个包,直接删除代码中的import "k8s.io/api/auditregistration/v1alpha1"语句,也能快速解决报错。
补充说明
Kubernetes的API版本迭代很快,auditregistration/v1alpha1在较新的版本中已经被废弃或升级为v1beta1(甚至更高版本),所以建议尽量让client-go版本和你的Minikube集群版本保持一致,避免不必要的兼容问题。
内容的提问来源于stack exchange,提问作者Rajat Singh

