安装 Calico 的两种主流方式对比
方式1:使用 calico.yaml 的 Manifest 安装方式
方式2:使用 Tigera Operator(tigera-operator.yaml + custom-resources.yaml)安装方式
(Tigera Operator 通过将 Kubernetes API 封装为 CRD(Custom Resource Definition)对象,为 Calico 提供生命周期管理。)
方式一. 使用 Manifest 方式安装(直接部署 calico.yaml)
这是最基础也最常用的安装方式之一,官方会根据 Kubernetes 版本提供一个适配的 calico.yaml 文件,包含所有必要的组件(如 calico-node、typha、CNI 配置等)。
特点:
部署简单:只需一条命令即可快速部署
无需额外组件:不依赖 Operator 等控制器
适用于小型集群或快速测试
✅ 安装示例:
### 在Master控制节点执行 (二选一)
方法一:
# 下载最新版本编排文件
$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
方法二:
# 下载指定版本编排文件(可选)
curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml -O
# 部署calico
kubectl apply -f calico.yaml
calico-v3.26.0-aliyun 镜像(calico.yaml)-calico-v3.26.0-aliyun.yaml :连接
上边的文件已经修完了。
上传的时候一定要传文件,不要在xshell中 vim 粘贴,不然会文件有缺失。
修改点:
CALICO_IPV4POOL_IPIP
改成off

CALICO_IPV4POOL_CIDR

kubectl apply -f calico-v3.26.0-aliyun.yaml

检查:
kubectl get pod -n kube-system | grep calico

优点:
快速上手,适合新手或临时环境
可查看完整 YAML 文件结构,便于学习 Calico 的组件组成
❌ 缺点:
灵活性较差,定制配置需要手动修改大量 YAML 内容
不易升级、运维成本较高
方式二:使用 Tigera Operator(tigera-operator.yaml + custom-resources.yaml)安装方式
(Tigera Operator 通过将 Kubernetes API 封装为 CRD(Custom Resource Definition)对象
Tigera Operator 通过将 Kubernetes API 封装为 CRD(Custom Resource Definition)对象,为 Calico 提供生命周期管理。
【K8s】Kubernetes 网络之 Calico 插件安装、切换网络模式、卸载-腾讯云开发者社区-腾讯云
1、安装 Tigera Operator
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/tigera-operator.yaml
# 说明:由于 CRD 包较大,若使用 kubectl apply 可能会超出请求限制,需要使用 kubectl create 或 kubectl replace
2、安装 Calico
cat > custom-resources.yaml <<EOF
---
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
calicoNetwork:
ipPools:
- name: default-ipv4-ippool
cidr: 10.10.0.0/16
blockSize: 26 # 默认配置
encapsulation: IPIP # 默认配置
natOutgoing: Enabled # 默认配置
nodeSelector: all() # 默认配置
nodeAddressAutodetectionV4:
interface: "eth.*|en.*"
bgp: Enabled
hostPorts: Enabled
linuxDataplane: Iptables
multiInterfaceMode: None
---
apiVersion: operator.tigera.io/v1
kind: APIServer
metadata:
name: default
spec: {}
EOF
kubectl create -f custom-resources.yaml
# 说明:默认在 calico-system 命名空间中创建 Installation 类型、APIServer 类型对象
custom-resources.yaml 参数说明文档:
https://docs.tigera.io/calico/latest/reference/installation/api#operator.tigera.io/v1.Installation
https://docs.tigera.io/archive/v3.21/reference/installation/api#operator.tigera.io/v1.InstallationSpec
切换网络模式
1、切换为 IPIP 模式(默认模式)
# 修改 Calico 配置
kubectl edit ippool
1)将 ipipMode 改为 Always(即启用 IPIP 模式)
2)将 vxlanMode 改为 Never(即禁用 VXLAN 模式)
# 重启 calico-node
kubectl rollout restart deploy calico-node -n calico-system
# 效果验证
route -n # IPIP 模式下会出现 tunl0 设备
2、切换为 VXLAN 模式
# 修改 Calico 配置
kubectl edit ippool
1)将 ipipMode 改为 Never(即禁用 IPIP 模式)
2)将 vxlanMode 改为 Always(即启用 VXLAN 模式)
# 重启 calico-node
kubectl rollout restart deploy calico-node -n calico-system
# 效果验证
route -n # VXLAN 模式下会出现 vxlan.calico 设备
3、切换为 BGP 模式
# 修改 Calico 配置
kubectl edit ippool
1)将 ipipMode 改为 Always(即禁用 IPIP 模式)
2)将 vxlanMode 改为 Always(即禁用 VXLAN 模式)
# 重启 calico-node
kubectl rollout restart deploy calico-node -n calico-system
# 效果验证
route -n # BGP 模式下不会出现 tunl0 或 vxlan.calico 设备
4、切换为 CrossSubnet 模式
# 修改 Calico 配置
kubectl edit ippool
1)将 ipipMode 或 vxlanMode 改为 CrossSubnet
2)将 改为 Always(即启用 VXLAN 模式)
# 重启 calico-node
kubectl rollout restart deploy calico-node -n calico-system
🔔 CrossSubnet 模式:此为混合模式,同网段通信使用 BGP 模式,跨网段通信使用 IPIP 或 VXLAN 模式
卸载流程
1、删除资源对象
kubectl delete -f custom-resources.yaml
kubectl delete -f tigera-operator.yaml
2、删除虚拟网卡
# 在所有主机上执行
modprobe -r ipip # 删除 IPIP 模式虚拟网卡
modprobe -r vxlan # 删除 VXLAN 模式虚拟网卡
3、删除 CNI 配置文件
# 在所有主机上执行
rm -rf /var/lib/cni/ && rm -rf /etc/cni/net.d/*
4、重启 kubelet 服务
# 在所有主机上执行
systemctl restart kubelet
欢迎来撩 : 汇总all
