k8s安装recognize “calico.yaml“: no matches for kind “PodDisruptionBudget“ in version “policy/v1“

一:具体报错

serviceaccount/calico-kube-controllers unchanged
serviceaccount/calico-node unchanged
configmap/calico-config unchanged
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/caliconodestatuses.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/ipreservations.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org configured
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org configured
clusterrole.rbac.authorization.k8s.io/calico-kube-controllers unchanged
clusterrole.rbac.authorization.k8s.io/calico-node unchanged
clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers unchanged
clusterrolebinding.rbac.authorization.k8s.io/calico-node unchanged
daemonset.apps/calico-node configured
deployment.apps/calico-kube-controllers unchanged
error: unable to recognize "calico.yaml": no matches for kind "PodDisruptionBudget" in version "policy/v1"

报错内容

error: unable to recognize "calico.yaml": no matches for kind "PodDisruptionBudget" in version "policy/v1"

二:报错原因

calico版本 与 k8s版本不匹配

查看k8s的版本

kubectl version

26e66b45fd8a4ffb982d626d18e689b7.png

 

查看k8s对应的calico的版本 https://projectcalico.docs.tigera.io/archive/v3.20/getting-started/kubernetes/requirements

22fe9fd5e55447c8a616992dd38d06f6.png

 查看需要v3.2.0的版本的calico

三.解决方案

重新下载正确版本calico

curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O

72b62ab27f64487095c79d3c059bf8ad.png

再执行

kubectl apply -f calico.yaml

可以看到以下效果,代表成功了

77ff0f912db64d4bac93d1b5d56e2bfc.png

 

 

  • 14
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: 错误:无法识别“calico.yaml”:在版本“policy/v1”中没有与“poddisruptionbudget”匹配的种类。 这个错误通常是由于Kubernetes集群的版本太旧,不支持PodDisruptionBudget资源。您可以尝试升级Kubernetes集群或使用较旧版本的Calico YAML文件。 ### 回答2: 这个错误提示出现的原因是因为Kubernetes API服务器不能识别或匹配calico.yaml文件中定义的资源类型。在这种情况下,相信calico.yaml中定义的资源对象版本与当前Kubernetes集群的API服务器版本不兼容,导致API服务器无法识别资源对象。 其中,错误信息中指出资源类型为"poddisruptionbudget",版本为"policy/v1",提示意味着Kubernetes API服务器的当前版本不支持policy/v1poddisruptionbudget资源类型。这意味着calico.yaml文件中的poddisruptionbudget配置无法在该版本中使用。 要解决这个问题,可以通过以下两种方式之一来解决这个问题: 1.升级Kubernetes集群的API服务器:如果您的Kubernetes版本太老,不支持poddisruptionbudget的policy/v1版本,则需要升级到支持它的版本。一旦升级完成,您应该能够上传calico.yaml文件成功并使用其中定义的资源类型。 2.降低calico.yaml文件中定义对象的版本:如果您不想升级Kubernetes集群,也可以通过修改calico.yaml文件中的资源版本来解决问题。通过降低版本至Kubernetes支持的版本,例如,将poddisruptionbudget资源类型的版本从policy/v1更改为extensions/v1beta1或升级到可接受的版本,此时API服务器就可以识别并匹配该资源类型了。 综上,此错误是由calico.yaml文件中定义的不支持的资源类型或版本引起的。您需要更新Kubernetes集群或修改calico.yaml文件中的资源对象版本,以使它们与Kubernetes API服务器兼容。 ### 回答3: 该错误提示表示在尝试使用“calico.yaml”文件时,Kubernetes无法识别该文件中“poddisruptionbudget”资源的版本“policy/v1”,因此导致了错误的发生。 这个错误的发生可能由于以下原因导致: 1. YAML文件中的资源版本与目标Kubernetes集群版本不匹配。可能您使用的YAML文件是在较早的版本上编写的,但您正在使用的Kubernetes集群版本大于该文件中定义的版本。 2. 在您的Kubernetes集群中未安装或启用适当的API版本。如果您的Kubernetes集群中不存在“policy/v1”版本的API,则将无法识别包含此API版本的资源的YAML文件。 3. 文件名或文件路径错误。检查文件名或路径,确保它们是正确的,并且在Kubernetes集群上的相应位置上才能找到。 为修复此错误,您可以尝试以下解决方法: 1. 检查Kubernetes集群版本:在使用YAML文件之前,请确定您使用的Kubernetes集群与YAML文件中定义的资源版本兼容。 2. 检查使用的API版本:确保在您的Kubernetes集群中启用了正确的API版本,以便Kubernetes可以识别相应资源。 3. 检查文件名或路径:确认文件名和路径与YAML文件的位置匹配,以便在Kubernetes集群上正确加载并使用此文件。 总之,通过检查Kubernetes版本、API版本和文件路径,可以修复“unable to recognize”错误。如果一切都正确,那么可能是您的YAML文件中有其他错误。在这种情况下,您将需要调试YAML文件以了解更多问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码海兴辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值