本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发、订阅专栏!
专栏订阅入口
| 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 |
往期精彩文章
【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法
目录
前文【K8s】专题十五(3):Kubernetes 网络之 Calico 插件理论 对 Calico 插件的相关理论进行了精简介绍,本文将继续介绍通过 Tigera Operator 安装 Calico 插件的流程,以及 Calico 如何切换网络模式、Calico 卸载流程。
一、安装流程
1、安装 Tigera Operator
Tigera Operator 通过将 Kubernetes API 封装为 CRD(Custom Resource Definition)对象,为 Calico 提供生命周期管理。
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