下内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~
基本介绍
前文【K8s】Kubernetes 网络之 Calico 插件理论 对 Calico 插件的相关理论进行了精简介绍,本文将继续介绍通过 Tigera Operator 安装 Calico 插件的流程,以及 Calico 如何切换网络模式、Calico 卸载流程。
安装流程
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.0/manifests/tigera-operator.yaml
# 说明:由于 CRD 包较大,若使用 kubectl apply 可能会超出请求限制,需要使用 kubectl create 或 kubectl replace
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
ipipMode 改为 Always(即启用 IPIP 模式)
vxlanMode 改为 Never(即禁用 VXLAN 模式)
# 重启 calico-node
kubectl rollout restart deploy calico-node -n calico-system
# 效果验证
route -n # IPIP 模式下会出现 tunl0 设备
2、切换为 VXLAN 模式
# 修改 Calico 配置
kubectl edit ippool
ipipMode 改为 Never(即禁用 IPIP 模式)
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
ipipMode 改为 Always(即禁用 IPIP 模式)
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
ipipMode 或 vxlanMode 改为 CrossSubnet
改为 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
书籍推荐
最后推荐一本笔者从 Docker 进阶到 Kubernetes 自学过程中,受益较深的书籍。笔者经常复读,并结合工作实践不断加深理解和体会,可谓常读常新。希望这本书可以帮助到更多对 Kubernetes 感兴趣或刚开始学习的读者。