You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vagrant/VirtualBox环境部署Calico时DaemonSet对应extensions版本咨询

解决Vagrant/VirtualBox部署Calico时DaemonSet API版本不匹配的问题

这个错误的核心原因是你的Kubernetes集群版本和Calico YAML中使用的DaemonSet API版本不兼容——Kubernetes在迭代过程中逐步废弃了旧的API组,extensions/v1beta2、apps/v1beta1这些版本已经被移除或不再被新版本集群支持。下面是具体的排查和解决步骤:

1. 先确认你的Kubernetes集群版本

首先执行命令查看集群的具体版本:

kubectl version --short

重点看Server Version的版本号,比如v1.20.0就属于1.16+的范围。

2. 匹配对应的DaemonSet API版本和Calico版本

Kubernetes对DaemonSet的API版本支持规则如下:

  • Kubernetes 1.16及以后:仅支持apps/v1版本,且要求DaemonSet的spec中必须包含selector字段(旧版本YAML可能缺失这个字段)。对应的Calico版本需要是3.8及以上,这些版本的官方YAML已经默认使用apps/v1。
  • Kubernetes 1.9~1.15:支持apps/v1beta2或apps/v1beta1,可以选择Calico 3.7及以前的版本,或者手动修改YAML的API版本。
  • Kubernetes 1.8及更早:只能使用extensions/v1beta1,需要对应更老旧的Calico版本(比如3.6及以下)。

3. 手动修复Calico YAML文件

如果不想更换Calico版本,可以直接修改calico.yaml中的DaemonSet配置:

  1. 找到文件中所有kind: DaemonSet的段落(通常是calico-node这个DaemonSet)
  2. 将apiVersion改成你的集群支持的版本,比如1.16+集群就改成apiVersion: apps/v1
  3. 若使用apps/v1,必须在spec下添加selector字段,且要和template.metadata.labels匹配,示例如下:
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: calico-node
  namespace: kube-system
spec:
  selector:
    matchLabels:
      k8s-app: calico-node  # 这个标签要和下面template里的labels一致
  template:
    metadata:
      labels:
        k8s-app: calico-node
    spec:
      # 其他原有配置...

4. 验证修复

修改完成后,重新执行部署命令:

kubectl apply -f /vagrant/calico/calico.yaml

再重新运行vagrant up应该就能正常启动了。

内容的提问来源于stack exchange,提问作者Paul Rousseau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:03:27