k8s网络类型

k8s中的通信模式:

  1. pod内部之间容器与容器之间的通信。  

   在同一个pod中的容器共享资源和网络,使用同一个网络命名空间。可以直接通信的。

  1. 同一个node节点之内,不同pod之间的通信。

   每一个pod都有一个全局的真实的IP地址,同一个node直接的不同pod可以直接使用对方pod的IP地址进行通信。

Pod1 和pod2 是通过docker0的网桥来进行通信。

  1. 不同node节点的和不同pod之间如何通信。

Cni的插件:

cni是一个标准接口,用于容器运行时调用网络插件,配置容器网络,负责设置容器的网络命名空间,IP地址,路由等等参数。

   Fiannel插件:功能就是让集群之中不同节点的docker容器具有全集群唯一的虚拟ip地址。

   overlay网络:在底层物理网络的基础上,创建第一个逻辑的网络层,二层+三层的集合 二层是物理网络。三层是逻辑上的网络层。

   overlay网络也是一种网络虚拟化的技术。

 Flannel支持的数据转发方式:

  1. udp模式。默认模式,应用转发,配置简单。但是性能最差。
  2. Vxlan,基于内核转发,也是常用的网络类型(小集群都是用这个)
  3. host-gw(性能最好,但是配置麻烦。)

   Udp:基于应用转发,flannel提供路由表,flannel封装数据包,解封装

  Node都会有一个flannel的虚拟网卡。 基于应用层,用户

Vxlan:使用的就是overlay的虚拟隧道通信技术。二层加三层的模式。

       Vxlan:flannel提供路由表,内核封装解封装。

Flannel1.1接口用的vxlan。

Flannel作用:

每个发向容器的数据包进行封装,vxlan通过vtep打包数据,由内核封装数据包---->转发到目标node节点。到达目标节点,还有一个解分装的过程,再发送目标pod.性那能是有一定的影响。

Calico插件:

采用直接路由的方式。BGP路由。不需要修改报文,统一直接通过路由表转发路由表会很复杂,运行维护的要求比价高。

BGP模式的特点:交换路由信息的外部网关协议,可以链接不同放入节点,node节点可能不是一个网段,BGP实现可靠的,最佳的,动态的路由选择。自动识别相邻的路由设备。

Calico不使用overlay,也不需要交换,直接通过虚拟路由实现。每一台虚拟路由都通过BGP转发。

核心组件:

Felix:也是运行在主机的一个个pod,一个进程,k8s  daemonset的方式部署的pod

Daemont set 会在每个node节点部署相同的pod,后台的运行方式。

负载宿主机上插入路由规则,维护calico需要的网络设备。网络接口管理,监听。路由等等。

BGP client:bird BGP客户端,专门负责在集群中分发路由规则的信息。每一个节点都会有一个BGP client。

BGP协议广播方式通知其他节点,分发路由的规则,实现网络互通。

Etcd:保存路由信息,负责网络元数据的一致性,保证网络状态的一致性和准确。

Calico的工作原理:

路由表来维护每个pod之间的通信。

创建好pod之后,添加一个设备calico  veth pair设备。

虚拟网卡:veth pair是一对设备,虚拟的以太网设备。

一头连接在容器的网络命名空间,

另一头链接宿主机的网络命名空间  calico

IP地址分配:veth pair连接容器的部分给容器分配一个IP地址,这个IP地址是唯一标识,宿主机也会被 veth pair分配calico网络的内部IP地址。和其他节点上的容器进行通信。

Veth设备,容器发出的IP地址通过veth pair设备到宿主机,宿主机根据路由规则的下一跳地址发送到网关(目标宿主机)

数据包到达目标宿主机,veth pair 设备,目标宿主机也是根据路由规则,下一跳地址,转发到目标容器。

在ipip模式:会形成一个tunnel隧道。数据包封装都在tunnel隧道内部打包。封装:宿主机IP 容器内部的IP地址。

在k8s中常用的网络类型:flannel和calico

Flannel:配置简单,功能简单,基于overlay叠加网络实现。在物理层的网络在封装一个虚拟的网络

Vxlan是虚拟三层网络

Udp是默认模式

Vxlan最多的模式 vni + ip 进行转发,flannel提供路由表,内核封装解封装

host-gw

由于封装和解封装的过程,对数据传输的性能会有影响,没有网络策略配置的功能udp(协议) 默认网段:10.244.0.0/16

Calico:功能强大,基于路由表进行转发,没有解封装和封装的过程。具备网络策略的配置能力,但是路由表维护起来复杂。  

模式:ipip   BGP

BGP:通过ip 路由表的前缀来实现目标主机的可达性。

对比ipip模式。BGP模式没有隧道,BGP模式下,pod的数据包直接通过网卡发送到目的地。

Ipip的隧道:隧道进行数据包的封装IPV4----IPV4.

简单的小集群:flannel

扩容,配置网络策略:calico

相关推荐

  1. k8s网络类型

    2023-12-28 10:36:07       28 阅读
  2. k8s网络类型

    2023-12-28 10:36:07       30 阅读
  3. <span style='color:red;'>K</span><span style='color:red;'>8</span><span style='color:red;'>S</span><span style='color:red;'>网络</span>

    K8S网络

    2023-12-28 10:36:07      32 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 10:36:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 10:36:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 10:36:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 10:36:07       20 阅读

热门阅读

  1. 设计模式之状态模式

    2023-12-28 10:36:07       41 阅读
  2. Elasticsearch 常用 REST API 之集群APIs

    2023-12-28 10:36:07       32 阅读
  3. 【前端框架】NPM概述及使用简介

    2023-12-28 10:36:07       35 阅读
  4. 如何解决服务器CA证书过期的问题

    2023-12-28 10:36:07       43 阅读
  5. centos 7.9 安装 qt5.15.11

    2023-12-28 10:36:07       48 阅读
  6. 【后端】拷贝数据字典

    2023-12-28 10:36:07       39 阅读
  7. C# 基于事件的观察者模式

    2023-12-28 10:36:07       33 阅读
  8. Django信号机制源码分析(观察者模式)

    2023-12-28 10:36:07       41 阅读
  9. 基数(Radix)排序

    2023-12-28 10:36:07       36 阅读