前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【K8s】Kubernetes 网络之 Calico 插件安装、切换网络模式、卸载

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

作者头像
行者Sun
发布2024-11-26 16:09:21
发布2024-11-26 16:09:21
2.1K00
代码可运行
举报
文章被收录于专栏:Kubernetes
运行总次数:0
代码可运行

基本介绍

前文【K8s】Kubernetes 网络之 Calico 插件理论 对 Calico 插件的相关理论进行了精简介绍,本文将继续介绍通过 Tigera Operator 安装 Calico 插件的流程,以及 Calico 如何切换网络模式、Calico 卸载流程。

安装流程

1、安装 Tigera Operator

Tigera Operator 通过将 Kubernetes API 封装为 CRD(Custom Resource Definition)对象,为 Calico 提供生命周期管理。

代码语言:javascript
代码运行次数:0
复制
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

代码语言:javascript
代码运行次数:0
复制
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 模式(默认模式)

代码语言:javascript
代码运行次数:0
复制
# 修改 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 模式

代码语言:javascript
代码运行次数:0
复制
# 修改 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 模式

代码语言:javascript
代码运行次数:0
复制
# 修改 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 模式

代码语言:javascript
代码运行次数:0
复制
# 修改 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、删除资源对象

代码语言:javascript
代码运行次数:0
复制
kubectl delete -f custom-resources.yaml
kubectl delete -f tigera-operator.yaml

2、删除虚拟网卡

代码语言:javascript
代码运行次数:0
复制
# 在所有主机上执行
modprobe -r ipip      # 删除 IPIP 模式虚拟网卡
modprobe -r vxlan     # 删除 VXLAN 模式虚拟网卡

3、删除 CNI 配置文件

代码语言:javascript
代码运行次数:0
复制
# 在所有主机上执行
rm -rf /var/lib/cni/ && rm -rf /etc/cni/net.d/*

4、重启 kubelet 服务

代码语言:javascript
代码运行次数:0
复制
# 在所有主机上执行
systemctl restart kubelet
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 实施运维知识交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档