【K8s】Kubernetes 网络之 Calico 插件安装、切换网络模式、卸载

文摘   科技   2024-11-26 07:00   北京  

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

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~





基本介绍

前文【K8s】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/v1kind: Installationmetadata:  name: defaultspec:  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/v1kind: APIServermetadata:  name: defaultspec: {}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 ippool1)将 ipipMode 改为 Always(即启用 IPIP 模式)2)将 vxlanMode 改为 Never(即禁用 VXLAN 模式) # 重启 calico-nodekubectl rollout restart deploy calico-node -n calico-system # 效果验证route -n         # IPIP 模式下会出现 tunl0 设备


2、切换为 VXLAN 模式

# 修改 Calico 配置kubectl edit ippool1)将 ipipMode 改为 Never(即禁用 IPIP 模式)2)将 vxlanMode 改为 Always(即启用 VXLAN 模式) # 重启 calico-nodekubectl rollout restart deploy calico-node -n calico-system # 效果验证route -n         # VXLAN 模式下会出现 vxlan.calico 设备


3、切换为 BGP 模式

# 修改 Calico 配置kubectl edit ippool1)将 ipipMode 改为 Always(即禁用 IPIP 模式)2)将 vxlanMode 改为 Always(即禁用 VXLAN 模式) # 重启 calico-nodekubectl rollout restart deploy calico-node -n calico-system # 效果验证route -n         # BGP 模式下不会出现 tunl0 或 vxlan.calico 设备


4、切换为 CrossSubnet 模式

# 修改 Calico 配置kubectl edit ippool1)将 ipipMode 或 vxlanMode 改为 CrossSubnet2)将 改为 Always(即启用 VXLAN 模式) # 重启 calico-nodekubectl rollout restart deploy calico-node -n calico-system 🔔 CrossSubnet 模式:此为混合模式,同网段通信使用 BGP 模式,跨网段通信使用 IPIP 或 VXLAN 模式




卸载流程

1、删除资源对象

kubectl delete -f custom-resources.yamlkubectl 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 感兴趣或刚开始学习的读者。


实施运维知识交流
专注于运维、实施交付领域,持续分享个人笔记、学习心得,欢迎关注,共同交流、成长!
 最新文章