这是一篇水文,很水的那种
最近要换项目,部署环境时需要用到k8s,本地直接运行如下代码报错:
kubectl create -f nginx.yaml
错误如下:
unable to recognize "in-proxy.yml": no matches for kind "Deployment" in version "apps/v1beta2"
问题分析
k8s用api version管理配置中的各种对象,例如Deployment等,可以在Which Kubernetes apiVersion Should I Use?中查阅相关api对应的api version。
也可以在本机利用如下命令查询,当前K8s所支持的api-version:
kubectl api-versions
查询后发现当前K8s不支持"apps/v1beta2"。启动minikube时可以看到本机kubernates版本为1.16.2,也可以直接用kubectl version
查看client和server的版本。
> $ minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
🙄 Darwin 10.15.1 上的 minikube v1.5.2
✅ 正在使用映像存储库 registry.cn-hangzhou.aliyuncs.com/google_containers
💡 Tip: Use 'minikube start -p <name>' to create a new cluster, or 'minikube delete' to delete this one.
🏃 Using the running parallels "minikube" VM ...
⌛ Waiting for the host to be provisioned ...
🐳 正在 Docker '18.09.9' 中准备 Kubernetes v1.16.2…
🔄 Relaunching Kubernetes using kubeadm ...
解决问题
在k8s官方文档中发现v1beta2.Deployment已经被标记为DEPRECATED, 应该使用api/v1代替。将apiVersions改为api/v1,pod起动成功。
deployment等资源在1.6版本时放在extensions/v1beta1中,后迁入到apps/v1beta2,再到apps/v1中统一管理
网友评论