我正在尝试在 centos 上设置 kubernetes 集群,安装 calico 是其中一步。我的控制平面已准备就绪,但coredns
仍处于待处理状态。
我从互联网上获得了以下命令来在网络上安装 calico
curl https://docs.projectcalico.org/manifests/calico.yaml -O
但当我打开文件时它说Redirecting to https://docs.tigera.io/calico/latest/manifests/calico.yaml
然后我运行了curl https://docs.tigera.io/calico/latest/manifests/calico.yaml -O
这个下载了一个文件,但是当我运行时kubectl apply -f calico.yaml
出现以下错误
error: error parsing calico.yaml: error converting YAML to JSON: yaml: line 19: mapping values are not allowed in this context
所以我从这个链接粘贴了 calico 文件https://docs.projectcalico.org/manifests/calico.yaml
并运行kubectl apply -f calico.yaml
,结果出现了这个错误
error: resource mapping not found for name: "calico-kube-controllers" namespace: "kube-system" from "calico.yaml": no matches for kind "PodDisruptionBudget" in version "policy/v1beta1"
ensure CRDs are installed first
我从哪里以及如何获取正确的 calico 文件。
答案1
您可能会找到正确的文件 - 具体取决于您使用的版本 -github。
看看文档对于“为本地部署安装 Calico 网络和网络策略”,第一步是在您的集群上安装操作员:
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml
然后下载自定义资源:
curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml -O
kubectl create -f custom-resources.yaml
watch kubectl get pods -n calico-system
或者,calico 松弛通道也许能有所帮助。
答案2
你运行的是哪个版本的 Kubernetes?PodDisruptionBudget
Kubernetes 中引入了 v1 API v1.21
,因此至少需要该版本。
只需运行以下命令即可轻松修复:
sudo apt-get update
sudo apt-get install -y kubelet kubectl kubeadm
sudo apt-mark hold kubelet kubeadm kubectl