k8s离线环境下部署【calico】网络插件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

经常私有化部署项目的朋友们都知道,运维人员经常要私有化部署。

今天给大家带来的是私有化部署k8s网络插件calico


一、calico是什么,为什么选calico?

Calico 是一个开源的云原生网络和网络安全解决方案,专门为 Kubernetes、OpenShift 等容器编排平台设计。它不是一个传统意义上的网络插件,而是一个完整的网络策略引擎

Calico vs 其他网络插件对比

特性 Calico Flannel Weave Net Cilium
网络模型 三层路由/Overlay Overlay (VXLAN) Overlay eBPF 驱动
性能 ⭐⭐⭐⭐⭐ (三层路由) ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐
安全性 ⭐⭐⭐⭐⭐ (策略丰富) ⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐
复杂性 中等 简单 中等 复杂
策略能力 丰富 基础 中等 极其丰富
BGP 支持 ✅ ❌ ❌ ✅
适合场景 企业生产环境 简单小集群 中等规模 高性能要求

所以选calico

二、使用步骤

本文采用opeartor方法安装

1. 下载operator文件

复制代码
wget https://raw.githubusercontent.com/projectcalico/calico/v3.27.2/manifests/tigera-operator.yaml

将镜像仓库改为指定仓库:

c 复制代码
# 可以搜索一下image: 这个关键字
# 本文中使用的v3.27.2版本只要改一个位置,在25279 行
······
      containers:
        - name: tigera-operator
          # image: quay.io/tigera/operator:v1.32.5    # 改为指定仓库
          image: myharbor.com/tigera/operator:v1.32.5 
          imagePullPolicy: IfNotPresent
          command:
            - operator
······

2. 创建资源文件

代码如下(示例):

c 复制代码
tee custom-resources.yaml <<-'EOF'
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
  name: default
spec:
  calicoNetwork:
    bgp: Enabled
    containerIPForwarding: Enabled
    hostPorts: Enabled
    ipPools:
      - blockSize: 26
        cidr: 10.10.0.0/16
        disableBGPExport: false
        encapsulation: IPIP
        natOutgoing: Enabled
        nodeSelector: all()
    linuxDataplane: Iptables
    multiInterfaceMode: None
    nodeAddressAutodetectionV4:
      kubernetes: NodeInternalIP
  cni:
    ipam:
      type: Calico
    type: Calico
  controlPlaneReplicas: 2
  flexVolumePath: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/
  kubeletVolumePluginPath: /var/lib/kubelet
  logging:
    cni:
      logFileMaxAgeDays: 30
      logFileMaxCount: 10
      logFileMaxSize: 1024Mi
      logSeverity: Info
  nodeUpdateStrategy:
    rollingUpdate:
      maxUnavailable: 1
    type: RollingUpdate
  nonPrivileged: Disabled
  registry: myharbor.com  # 改为指定仓库
  variant: Calico
EOF

3. 应用

复制代码
kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml

4. 上传镜像到私有仓库

这边就是不断通过describe pod 查看pod创建需要哪些镜像,然后我们公网下载后传到内网仓库补齐所需镜像。

5. 验证效果

看到节点都处于ready状态说明网络插件正常运行

复制代码
[root@UOS-41-m1 ~]# kubectl get node
NAME        STATUS   ROLES           AGE   VERSION
uos-41-m1   Ready    control-plane   17d   v1.34.2
uos-42-m2   Ready    control-plane   16d   v1.34.2
uos-43-m3   Ready    control-plane   16d   v1.34.2

总结

以上就是今天要讲的内容,本文绍了离线部署Calico网络插件的方法,大家又学了一招。

相关推荐
PS测3 天前
centos安装K8s步骤
k8s
小白的码BUG之路7 天前
K8S -- 下载安装dashboard
k8s
切糕师学AI9 天前
K8s 滚动更新与 Spring Boot 优雅停机实战:如何做到真正的平滑发布?
spring boot·云原生·容器·kubernetes·k8s
fengkai454511 天前
7、Kubernetes的Ingress&Network&Scheduler
运维·kubernetes·k8s·ingress·network·scheduler
mengge.cloud15 天前
1022小白入门教程(番外筑基)— nerdctl 容器基本功 + K8s 资源编写
linux·网络·云原生·容器·kubernetes·云计算·k8s
上火的金鱼妹16 天前
节点调度优化 + redis 现有问题优化
k8s
fengkai454517 天前
3、Kubernetes的Namespace&Contexts&Pod&YAML格式
运维·容器·kubernetes·k8s·namespace·yaml·pod
meijinmeng17 天前
Karpenter + Keda 让Kuberntes实现动态扩缩容机制方案指南
k8s
.冰块.18 天前
VMware+Ubuntu24.04 kubeadm 部署 K8s 1.30.2 三节点集群
运维·云原生·容器·kubernetes·k8s·容器编排
我不会起名字32220 天前
K8s Ingress 返回 502 但后端日志正常:4 类上游断连与排查链
kubernetes·k8s·ingress·502·keepalive