Bootstrap

【K8s】专题十五(4):Kubernetes 网络之 Calico 插件安装、切换网络模式、卸载

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发、订阅专栏!


专栏订阅入口

| 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 |


往期精彩文章

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法(续)

【K8s】专题十五(3):Kubernetes 网络之 Calico 插件理论


目录

一、安装流程

1、安装 Tigera Operator

2、安装 Calico

二、切换网络模式

1、切换为 IPIP 模式(默认模式)

2、切换为 VXLAN 模式

3、切换为 BGP 模式

4、切换为 CrossSubnet 模式

三、卸载流程

1、删除资源对象

2、删除虚拟网卡

3、删除 CNI 配置文件

4、重启 kubelet 服务


前文【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

;