kubernetes系列之二十:Kubernetes Calico网络插件

K8s的网络——Underlay和Overlay网络 在网络7层协议基础里, 阅读详情

一、前言

Calico作为Kubernetes的CNI插件可以支持underlay和overlay模式的网络互联;在BGP信息的交互方式上也同时支持中心服务方式和grid mesh方式;但是Calico的基于underlay路由的网络模式要求网络基础设施对于BGP协议要有支持,所以在私有数据中心进行部署是最佳场景。当然由于在AWS也有Kubernetes的部署,AWS的技术人员也提到过AWS的虚拟路由器对BGP是有支持的,但有待验证。

由于calico是基于三层的解决方案,所以不要求所有节点在同一个大二层之内(当然BGP模式还是要求数据中心内部中间节点的路由器都支持BGP协议),也不存在随着容器增加而带来的大量mac广播风暴,数据中心mac地址广播流量只和k8s节点数目有关,和容器的多少无关。

转载自https://blog.youkuaiyun.com/cloudvtech

二、Calico的基本架构

 

Calico的基本组件:

  • Felix:运行在每个Calico节点上,根据容器的网络配置需求,配置Calico节点上的路由信息以及ACL等信息
  • etcd:存储Calico控制面网络状态
  • BIRD:将Felix维护的本地路由信息发放到Calico控制面网络中,保证跨节点的路由联通
  • BGP Router Relfector:中心化的路由控制中心,大规模部署情况下可以由多个RR完成集中式路由管理和分发;跨机房部署也可以借助BGP RR进行集中式路由同步

Calico依赖etcd进行状态存储和管理,所以一个高可用的etcd集群是必须的前提条件。

转载自https://blog.youkuaiyun.com/cloudvtech

三、Calico的部署和配置

Calico在部署的时候通过Kubernetes Daemonset的方式在每个Kubernetes node上部署一个Calico POD,在POD内部运行基本组件:

3.1 Calico工作模式及配置

Calico主要有两种互联模式,一种是基于IPIP封装的overlay模式,另外一种是基于BGP路由的underlay模式。

有两种方式可以修改/配置Calico的工作模式,一种是在初始安装的时候在部署Calico Daemonset的时候,设定POD的环境变量如下:

另外一种方式是部署之后通过calicoctl进行更改:

calicoctl get ippool -o json > calico.config

修改里面的配置如下:

        "ipipMode": "Always"

calicoctl apply -f calico.config

 Calico的配置一部分是在部署Kubernetes Daemonset的yaml里面指定的,另一部分是在ConfigMap里面指定的:

# This ConfigMap is used to configure a self-hosted Calico installation.
kind: ConfigMap
apiVersion: v1
metadata:
  name: calico-config
  namespace: kube-system
data:
  # The location of your etcd cluster.  This uses the Service clusterIP
  # defined below.
  etcd_endpoints: "http://10.96.232.136:6666"

  # Configure the Calico backend to use.
  calico_backend: "bird"

  # The CNI network configuration to install on each node.
  cni_network_config: |-
    {
      "name": "k8s-pod-network",
      "cniVersion": "0.3.0",
      "plugins": [
        {
          "type": "calico",
          "etcd_endpoints": "__ETCD_ENDPOINTS__",
          "log_level": "info",
          "mtu": 1500,
          "ipam": {
              "type": "calico-ipam"
          },
          "policy": {
              "type": "k8s",
               "k8s_api_root": "https://__KUBERNETES_SERVICE_HOST__:__KUBERNETES_SERVICE_PORT__",
               "k8s_auth_token": "__SERVICEACCOUNT_TOKEN__"
          },
          "kubernetes": {
              "kubeconfig": "/etc/cni/net.d/__KUBECONFIG_FILENAME__"
          }
        },
        {
          "type": "portmap",
          "snat": true,
          "capabilities": {"portMappings": true}
        }
      ]
    }

3.2 IPIP Tunnel模式

IPIP模式在每个node上创建一个tunnel接口,所有目标是集群内部其他节点的流量,都是经由tunnel接口进行封装、转发、解封、送达;而节点自身的正常的流量和容器到外部的流量都经过主机的网卡。

这种模式的优点在于对下层网络环境无依赖,节点可以跨网络分布,缺点在于存在封包和解包过程,导致性能下降。

3.3 BGP Routing模式 

这种模式下,每个节点主机被calico配置为一个虚拟路由器,负责将本主机上面的路由信息汇聚并且以BGP协议的形式向其他节点和网络发送路由信息:

这种模式的优点在于无overlay模式的封包和解包过程,可以接近主机native的性能;缺点在于要求网络联通的路由器支持BGP协议,并且由于这种方式随着节点数目的增加,路由表的数目也会大量增加,更适合中小规模部署。如需大规模部署BGP模式的Calico,则可以通过额外的BGP route reflector来完成。每个BGP RR负责一部分节点的接入,然后多个BGP RR之间再交互信息来达到整个网路路由信息的集中式分发。

美图的容器云就使用这个大规模部署方案:

每个机房作为一个 AS 部署一个 Kubernetes 集群,机房内部冗余有多个 BGP RR,各个AS的BPG RR 分别与机房内的网关建立 iBGP 连接,机房间的路由器通过 OSPF 同步彼此之间的路由。而对于混合云的场景,机房网关上配置相应网段的静态路由规则,同时在云端路由上也配置上相应路由规则进行打通。

3.4 BGP协议路由更新

在下面的例子中,一共有172.2.2.11/12/13/14四个node使用BGP模式进行互联,当172.2.2.14上的calico POD重启之后,172.2.2.12和172.2.2.14会通过BGP协议来交换自己所持有的路由信息:

172.2.2.12到172.2.2.14的BGP信息(包含子网10.244.44.192/26和10.244.45.0/26):

172.2.2.14到172.2.2.12的BGP信息(包含子网10.244.128.0/26和10.244.127.192/26):

转载自https://blog.youkuaiyun.com/cloudvtech

 

 

k8s-kubernetes--网络策略、flannel网络插件和calico网络插件 网络策略通过网络插件来实现。要使用网络策略,你必须使用支持 NetworkPolicy 的网络解决方案。 创建一个 NetworkPolicy 资源对象而没有控制器来使它生效的话,是没有任何作用的。(Flannel不支持 NetworkPolicy,所以使用Flannei网络插件是不会隔离pod的) 阅读详情

相关推荐

14. k8s二进制集群之集群网络插件calico部署

Calico作为k8s的网络插件,它支持多种网络模式(如 BGP、Overlay),并提供了强大的网络策略功能,适用于大规模 Kubernetes 集群。

孤独的狼 2224

【kubernetes系列】Calico原理及配置

Calico是针对容器,虚拟机和基于主机的本机工作负载的开源网络和网络安全解决方案。Calico支持广泛的平台,包括Kubernetes,OpenShift,Docker EE,OpenStack和裸机服务。Calico在每个计算节点都利用Linux Kernel实现了一个高效的vRouter来负责数据转发。每个vRouter都通过BGP协议把在本节点上运行的容器的路由信息向整个Calico网络广播,并自动设置到达其他节点的路由转发规则。

margu_168的博客 4633

k8s中的重要插件之一:Calico插件

容器内的数据包首先被发送到节点的 Calico 网络命名空间,然后根据网络路由规则转发到目标容器所在的网络命名空间,保证了容器之间的高性能通信。:Calico 使用 BGP 协议来实现容器间的路由。每个节点上的 Calico 代理将容器网络信息注册到 BGP 路由表中,然后通过 BGP 协议将这些路由信息传播给其他节点,确保每个节点都知道如何到达其他节点上的容器。:通过使用 Linux 内核中的网络隔离技术(例如 namespace 和 iptables),Calico 可以实现容器级别的网络隔离。

m0_73446532的博客 2093

Calico

calico

u011619480的专栏 3206

【kubernetes】二进制部署k8s集群之cni网络插件flannel和calico工作原理(中)

/在 master01 节点上操作#上传 calico.yaml 文件到 /opt/k8s 目录中,部署 CNI 网络#修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kube-controller-manager配置文件指定的cluster-cidr网段一样#等 Calico Pod 都 Running,节点也会准备就绪---------- node02 节点部署 ----------//在 node01 节点上操作cd /opt/

liu_xueyin的博客 2582

【Kubernetes】二进制部署k8s集群(中)之cni网络插件flannel和calico

失败就自暴自弃,无异于放弃人生

F12138X的博客 1958

kubernetes学习(9)---安装calico、coreDNS和Metrics Server

kubernetes学习(9)---安装calico、coreDNS和Metrics Server

weixin_60712169的博客 2143

Kubernetes — Calico

也就是说,Callico实现了从src-container经过src-hos经过IPFabric路由,然后到达dest-host和dest-container,整个过程中始终都是根据BGP协议进行Underlay得路由转发,并没有进行封包/解包过程,这样转发效率就会快得多,是Callico容器网络的技术优势。大规模部署时使用,通过一个或者多个BGPRouteReflector来完成集中式的路由分发,可以自建RR,也可以使用物理网络中的RR。............

烟云的计算 1658

K8s网络插件Flannel,Calico

文章目录k8s网络解决方案CNI 容器网络规范Kubernetes-基于flannel的集群网络不同Pod中容器之间的通信 k8s网络解决方案 我们说k8s的网络解决方案,其实指代的是k8s的pod网络解决方案,其本质呢就是在介绍docker的跨主机网络解决方案。 在讨论Kubernetes网络之前,让我们先来看一下Docker网络。Docker采用插件化的网络模式,默认提供bridge、host...

西京刀客 1万+

【K8S系列】深入解析k8s网络插件—Calico

Calico是一个强大的开源容器网络和网络安全解决方案,广泛应用于Kubernetes集群和其他容器编排平台。 它通过利用BGP(Border Gateway Protocol)协议和Linux网络命名空间来实现高性能的容器间通信和网络策略控制。

颜淡慕潇 2万+

K8s(六):网络插件之Calico安装与详解

🔴 K8s(六):网络插件之Calico安装与详解

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3万+

K8S Calico网络插件

0.前言 参考文档:https://github.com/containernetworking/cni Pod网络插件,为了实现Pod网络而需要的插件、组件。由于Kubernetes通过开放的CNI接口来允许插件的接入,所以它又称之为CNI网络插件。 为了解决跨主机容器间通信问题,市面上存在很多解决方案,为了兼容和规范这些解决方案,Kubernetes仅设计了网络模型,却将Pod网络的实现交给了CNI网络插件,并允许网络插件通过标准的CNI(Container Network Interface,容器网

dz45693的专栏 1万+

【K8S系列】深入解析k8s网络插件—Canal

Canal 提供了网络功能,使得 Kubernetes 集群中的 Pod 可以相互通信,并与集群外部的服务进行通信。它通过网络插件的方式,为每个 Pod 分配唯一的 IP 地址,并管理网络流量的路由和转发。此外,Canal 还支持网络策略,用于定义 Pod 之间的通信规则和安全策略。 Canal 基于 Calico 和 Flannel 项目,结合了二者的优点。它使用 Calico 的数据平面,提供高性能的网络转发和安全特性,同时使用 Flannel 的控制平面,实现 IP 地址管理和网络策略的配置。

颜淡慕潇 3万+

k8s安装calico网络插件

安装calico网络插件curl https://docs.projectcalico.org/manifests/calico.yaml -O 如果是kubeadm部署的k8s则对应项为--pod-network-cidr=10.244.0.0/16

m0_61237221的博客 8121

【K8S系列】深入解析k8s网络插件—Cilium

总结起来,Cilium是一个强大的Kubernetes网络插件,通过eBPF技术提供高性能和高级的网络功能。 尽管它可能具有一定的学习曲线和复杂性,但对于需要高性能和安全性的组织来说,它是一个有价值的选择。 通过了解其概念、优缺点、实现原理、使用场景、使用方法以及解决常见问题的方法,可以更好地利用Cilium来管理和保护Kubernetes集群中的网络通信。

颜淡慕潇 3万+

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法 在Windows的搜索框中输入Windows安全中心,搜索到后将其打开 点击病毒和威胁防护将鼠标移动到Microsoft Defender防病毒选项处,将定期扫描打开 下滑找到管理设置 先关闭篡改防护,再点击添加或删除排除项 先点击添加排除项,再点击文件,选择报出异常的文件,将其添加到排除项中,过程中会存在跳框确认,皆点击确定,完成后就可以运行报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件异常的文件

123 2万+

从零开始实现基于calico网络的k8s集群部署

master服务器插件部署 wget https://github.com/projectcalico/calicoctl/releases/download/v1.1.0/calicoctl chmod +x calicoctl mv calicoctl /usr/bin/ docker pull docker.io/calico/node:v1.1.0 docker tag docker....

chang_rj的博客 1万+

2025年11月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(二)

本文整理了2025年11月架构设计师考试的16-30题真题及解析,涵盖多个计算机系统知识领域。主要内容包括:Linux绝对路径以根目录开始(A);模块调用下层数量用扇出表示(B);游乐园问题通过集合运算得出10人未游玩(B);磁盘位示图计算为200字节(C);测试用例核心是输入与预期输出(D)。其他题目涉及软件可靠性测试概念(B错)、评价程序准确度排序(真实程序最高,A)、测试阶段顺序(单元→组装→系统,A)、Web服务器压力测试前置步骤(C)、分时系统响应时间影响因素(用户数量多,A)、逆向工程方法(基于

一几文的编程学习笔记。 221

k8s网络插件之Calico

Calico是一套开源的网络和网络安全解决方案,用于容器、虚拟机、宿主机之前的网络连接,它是一个纯三层的虚拟化网络解决方案,它把每个节点都作为一个虚拟路由器,并把每个节点上的Pod当作是节点路由器后的一个终端设备并为其分配一个IP地址。各节点路由器通过BGP协议生成路由规则,从而实现不通节点上Pod间的通信。如下图:与Flannel相比,Calico的一个显著优势是对网络策略的支持,它允许用户定义访问控制规则以管控进出Pod的数据报文,从而为Pod间的通信施加安全策略。

梵修 1万+

CKS-CN考试之路----03

这题不需要去生成image和生成deployment所以只需要去检测对应的值即可。编辑/cks/docker/Dockerfile,修改最后第二行的值。编辑/cks/docker/deployment.yaml。

Q先生 824

沁恒CH32V208GBU6读写芯片内部FLASH:代码空间;使用OTA时候的代码空间;保存结构体到FLASH

沁恒CH32V208GBU6读写芯片内部FLASH:代码空间;使用OTA时候的代码空间;保存结构体到FLASH

cheng___yi的博客 555
上一篇: Kubernetes与大数据之五:在Kubernetes运行hive
下一篇: 基于Kubernetes的框架和应用系列之一:Kubernetes无服务方案kubeless
cloudvtech
博客等级 码龄9年 533粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值