0
点赞
收藏
分享

微信扫一扫

k8s网络基础

1. CNM模型

1.1 Network Sandbox

  • 作用: 容器内部网络栈,包括网络接口、路由表、DNS等配置的管理。
  • 实现:可用 linux网络命名空间、FreeBSD Jail等机制实现
  • 说明:一个Sandbox可以包含多个Endpoint。

1.2 Endpoint

  • 作用:用于将容器内部Sandbox与外部网络相连的网络接口。
  • 实现:可用veth对、Open vSwitch内部port等技术实现。
  • 说明:一个Endpoint仅可加入一个Network

1.3 Network

  • 作用:可以直接相互连接的Endpoint的集合。
  • 实现:可用linux网桥、VLAN等技术实现。
  • 说明:一个Network包含多个Endpoint

2. CNI模型

2.1 CNI Plugin

包括如下3个基本接口的定义:

  • ADD:将容器添加到某个网络
  • DELETE:容器销毁时将容器从某个网络中删除
  • CHECK:检查容器网络是否正确
  • VERSION:查询网络插件支持的CNI规范版本号

2.2 IPAM Plugin


3. Flannel

3.1 实现原理

1) 协助kubernetes,给每个node上的容器分配互不冲突的IP地址
2)建立一个覆盖网络(Overlay Network),通过该网络将数据原封不动的传给目标容器。

3.2 网络架构

  • flannel0的网桥一端谅解docker0,一端连接flanneld 服务进程

  • flanneld进程连接etcd
    利用etcd管理可分配的IP地址网段资源
    监控etcd中每个Pod的实际地址,并在内存中建立一个Pod节点的路由表

  • flanneld进程下连docker0和物理网络
    使用内存中的Pod路由表,将docker0发来的数据包包装起来,利用物理网络投递到目标flanneld上。
    目标flanneld解包,发送给docker0(因此daocker0得到的是原始数据)

4. calico-BGP模式

4.1 实现原理

一个基于BGP的纯三层网络方案
在每个计算节点上由一个vRouter 来负责转发,每个vRouter通过BGP1协议把本节点上运行的容器路由信息向整个Calico网络广播,并自动设置到达其他节点的路由转发规则

4.2网络架构

4.3 calico 组件

  • Felix:
    是一个Calico Agent,运行在每个node上,负责为容器设置网络资源(如IP地址、路由规则、iptables规则等),保证跨主机容器网络互通

  • etcd:后端存储

  • BGP Client
    负责把Felix在各Node上设置的路由信息通过BGP协议广播到Calico网络

  • Route Reflector:
    通过一个或多个BGP Reflector 来完成大规模集群的分级路由分发

  • CalicoCtl
    Calico的命令行管理工具。

4.4 IP Pool 的两种模式

  • IPIP模式
    将各Node的路由之间做一个tunnel,再把两个网络连接起来。如图所示:

  • BGP模式
    直接使用物理机作为虚拟路由器(vRouter),不再创建额外的tunnel

  • 设置方法
    calico-node的容器中变量设置为:
    ipip模式: CALICO_IPV4POOL_IPIP="always"
    BGP模式: CALICO_IPV4POOL_IPIP="off"


举报

相关推荐

K8s网络

k8s网络学习

k8s 网络策略

k8s网络模型

k8s网络类型

k8s基础概念

0 条评论