首页 > 其他分享 >K8S-Calico 网络插件

K8S-Calico 网络插件

时间:2022-11-08 10:22:50浏览次数:49  
标签:插件 Kubernetes 网络 节点 BGP Pod K8S Calico

Calico 是一个三层的虚拟网络解决方案,它把每个节点都当作虚拟路由器(vRouter),并把每个节点上的 Pod 都当作是“节点路由器”后的一个终端设备并为其分配一个 IP 地址。各节点路由器通过 BGP 协议学习生成路由规则,从而实现不同节点上 Pod 间的互联互通。

 

Calico 把 Kubernetes 集群环境中的每个节点上的 Pod 所组成的网络视为一个自治系统,而每个节点也就自然由各自的 Pod 对象组成虚拟网络,进而形成自治系统的边界网关。各节点间通过 BGP 协议交换路由信息并生成路由规则。但考虑到并非所有网络都能支持 BGP,而且 BGP 路由模型要求所有节点必须要位于同一个二层网络,Calico 还支持基于 IPIP 和 VXLAN 的 Overlay 网络模型,它们的工作模式与 Flannel 的 VXLAN 和 IPIP 模型并无显著不同。

 

 

 

Calico 的系统组件主要有 Felix、BGP 路由反射器、编排系统插件、BIRD 和 etcd 存储系统等。

 

BGP 模式下的 Calico 所承载的各 Pod 资源直接基于 vRouter 经由基础网络进行互联,它非叠加、无隧道、不使用 VRF 表,也不依赖于 NAT,因此每个工作负载都可以直接配置使用公网 IP 接入互联网,当然,也可以按需使用网络策略控制它的网络连通性。

 

Calico 在每一个计算节点利用 Linux 内核实现了一个高效的 vRouter(虚拟路由器)进行报文转发。每个 vRouter 通过 BGP 协议将自身所属节点运行的 Pod 资源的 IP 地址信息,基于节点上的专用代理程序(Felix)生成路由规则向整个 Calico 网络内传播。

 

与 Kubernetes 集群整合时,Calico 需要配置 calico-node 和 calico-kube-controllers 两个重要组件。

calico/node:Calico 在 Kubernetes 集群每个节点运行的节点代理,负责提供 felix、bird4、bird6 和 confd 等守护进程。

calico/kube-controllers:Calico 运行在 Kubernetes 之上的自定义控制器,也是 Calico 协同 Kubernetes 的插件。

 

Calico 有两种部署方式:一种是让 calico/node 独立运行在 Kubernetes 集群之外,但 calico/kube-controllers 依然需要以 Pod 资源形式运行在集群之上;另一种是以 CNI 插件方式配置 Calico,使 Calico 完全托管运行在 Kubernetes 集群之上,类似于前面曾经部署托管 Flannel 网络插件的方式。

 

Calico 默认启用的是基于 IPIP 隧道的 Overlay 网络,因而它会在所有流量上使用 IPIP 隧道而不是 BGP 路由。Calico 分配的地址池需要与 Kubernetes 集群的 Pod 网络的定义保持一致。

 

 

 

工作在 IPIP 模式的 Calico 会在每个节点上创建一个 tunl0 接口作为隧道出入口来封装 IPIP 隧道报文。Calico 会为每一个 Pod 资源创建一对 veth 设备,其中一端作为 Pod 的网络接口,另一端(名称以 cali 为前缀,后跟随机字串)留置在节点的根网络名称空间,它未使用风格模式,因而并未关联成为任何虚拟网桥设备的从接口。

 

Calico 项目提供的专用客户端工具 calicoctl 能够直接与 Calico Datastore 进行交互,用于管理 Calico 系统抽象出的各种资源,通过资源管理实现查看、修改或配置 Calico 系统特性。我们可以基于特定的 Pod 来提供 calicoctl 工具程序,也可直接将相关的二进制程序部署在管理节点之上,例如管理员运行 kubectl 工具的主机等。

 

一般来说,仅在那些不支持用户自定义 BGP 配置的网络中才会完全使用 IPIP 或 VXLAN 隧道网络,对于自主可控且规模较大的网络环境,非常有必要启用 BGP 降低网络开销以提升传输性能。对于 Calico 来说,修改 ipPool 属性相应的配置便可调整使用的网络类型。
-----------------------------------
©著作权归作者所有:来自51CTO博客作者key_3_feng的原创作品,如需转载,请与作者联系,否则将追究法律责任
#yyds干货盘点#K8S-Calico 网络插件
https://blog.51cto.com/key3feng/4806887

标签:插件,Kubernetes,网络,节点,BGP,Pod,K8S,Calico
From: https://www.cnblogs.com/gaoyuechen/p/16868756.html

相关文章

  • 小程序开发vscode常用插件
    wechat-snippet微信小程序代码辅助,代码片段自动完成minapp微信小程序标签、属性的智能补全(同时支持原生小程序、mpvue和wepy框架,并提供snippets)wxapp-helper微信......
  • 网页翻译 iTranslator 浏览器插件
    iTranslator2.2.0浏览器插件版,免费的多功能网页翻译油猴脚本浏览器插件本文转自https://www.hezibuluo.com/159129.html,如有侵权,请联系删除。iTranslator是一款免......
  • 【k8s连载系列】k8s介绍
    k8s是Kubernetes的缩写,Google于2014年开源了Kubernetes项目。一、k8s的历史演变k8s的演变过程:首先从传统的服务-->虚拟机部署-->容器部署-->k8s。k8s的由来,归根......
  • 【云原生】Apache Livy on k8s 讲解与实战操作
    目录一、概述二、开始编排部署1)部署包准备1)构建镜像2)创建livychart模板3)修改yaml编排4)开始部署5)测试验证6)卸载一、概述Livy是一个提供Rest接口和spark集群交互的服务。......
  • 搭建一个小巧完备的K8S环境(chrono《kubernetes入门实战课》笔记整理)
     【概念说明】kubernetes,因为k和s之间,有8个字母,所以通常又称为K8S。用来对容器进行调度和管理的,即用来对容器进行编排的。如果只有简单的几个镜像,确实不需要k8s,但是如果......
  • Hexo主题next中添加天气插件(心知天气)
    最近想在博客主题中添加一个天气插件,在网上搜索一番以后选择了【心知天气】。实现在博客中预报天气的效果。首先要去心知天气的官网,获取插件代码,具体方式可以参见【官方文......
  • 使用插件实现Jenkins参数化构建
     一、插件安装1、打开插件管理,在此界面可以安装插件 二、参数化1、在“可选插件”中查找如下两个插件然后安装,安装后重启JenkinsBuildWithParameters输入框式的参数Per......
  • K8s 有损发布问题探究
    作者:魁予问题提出流量有损是在应用发布时的常见问题,其现象通常会反馈到流量监控上,如下图所示,发布过程中服务RT突然升高,造成部分业务响应变慢,给用户的最直观体验就是卡顿;或......
  • K8s 有损发布问题探究
    作者:魁予问题提出流量有损是在应用发布时的常见问题,其现象通常会反馈到流量监控上,如下图所示,发布过程中服务RT突然升高,造成部分业务响应变慢,给用户的最直观体验就是卡......
  • VS Code快捷键及前端常用插件
    VSCode快捷键放大缩小视图:ctrl++和ctrl+-向上复制一行:alt+shift+↑向下复制一行:alt+shift+↓当光标点击到某一行是,默认选中全行,可以直接复制剪切VSCo......