k8s 网络组件详细 介绍

目录

一   k8s 有哪些网络组件

二   k8s 网络概念

1, k8s 三种网络

2,K8S 中 Pod 网络通信

2.1 Pod 内容器与容器之间的通信

2.2 同一个 Node 内 Pod 之间的通信

2.3 不同 Node 上 Pod 之间的通信

三   Flannel 网络组件

1,Flannel 是什么

2,Overlay Network 是什么

3,VXLAN与 VLAN

3.1 VXLAN 是什么

3.2 vlan vxlan 区别

4,Flannel UDP 模式

4.1 Flannel UDP 模式的工作原理

4.2  Flannel UDP 模式 数据流向

4.3   ETCD 之 Flannel 提供说明

5, Flannel VXLAN 模式

5.1 VXLAN 模式 是什么

5.2 Flannel VXLAN 模式跨主机的工作原理

5.3  VXLAN 模式 数据流向

5.4   vxlan 模式中 cni 和 flannel 分别是干什么的

6,  host-gw 模式

7,fannel中 vxlan 和 UDP 模式的区别

四    Calico 网络组件

1, Calico 是什么

2, Calico 组成

3, Calico 工作原理

4,bgp 是什么

5, fannel 和calico 区别 及应用场景


一   k8s 有哪些网络组件

  1. Flannel:Flannel是一个简单且高效的网络解决方案,用于为Kubernetes集群中的容器提供网络连接,它通过为每个节点创建一个子网,然后使用VXLAN隧道将节点之间的流量路由到正确的容器。

  2. Calico:Calico是一个开源的网络解决方案,它基于BGP协议构建了一个高度可扩展的容器网络。Calico可以提供网络策略功能,允许管理员定义流量控制规则。

  3. Weave Net:Weave Net是一个具有网络拓扑感知能力的软件定义网络(SDN)解决方案,它能够自动发现和管理Kubernetes集群中的网络连接。

  4. Cilium:Cilium是一个用于Kubernetes集群的网络和安全解决方案,它结合了BPF(Berkeley Packet Filter)和XDP(eXpress Data Path)技术,提供高性能的网络层和安全功能。

以上列举的网络组件是Kubernetes中常见的选择,每个组件都有其特定的特点和适用场景。

本章仅对生产环境中最常用   Flannel  Calico   模式做具体分析介绍

二   k8s 网络概念

1, k8s 三种网络

‘’

2,K8S 中 Pod 网络通信

2.1 Pod 内容器与容器之间的通信

同一个 Pod 内的容器(Pod 内的容器是不会跨宿主机的)共享同一个网络命名空间,相当于它们在同一台机器上一样,可以用 localhost 地址访问彼此的端口
 

2.2 同一个 Node 内 Pod 之间的通信

每个 Pod 都有一个真实的全局 IP 地址,同一个 Node 内的不同 Pod 之间可以直接采用对方 Pod 的 IP 地址进行通信,Pod1 与 Pod2 都是通过 Veth 连接到同一个 docker0/cni0 网桥,网段相同所以它们之间可以直接通信

2.3 不同 Node 上 Pod 之间的通信

Pod 地址与 docker0 在同一网段,docker0 网段与宿主机网卡是两个不同的网段,且不同 Node 之间的通信只能通过宿主机的物理网卡进行
要想实现不同 Node 上 Pod 之间的通信,就必须想办法通过主机的物理网卡 IP 地址进行寻址和通信。因此要满足两个条件:Pod 的 IP 不能冲突;将 Pod 的 IP 和所在的 Node 的 IP 关联起来,通过这个关联让不同 Node 上 Pod 之间直接通过内网 IP 地址通信。
 

三   Flannel 网络组件

1,Flannel 是什么

Flannel 的功能是让集群中的不同节点主机创建的 Docker 容器都具有全集群唯一的虚拟 IP 地址。
Flannel 是 Overlay 网络的一种,也是将 TCP 源数据包封装在另一种网络包里面进行路由转发和通信,目前支持 UDP、VXLAN、Host-gw 3种数据转发方式

英文翻译:法兰绒

2,Overlay Network 是什么

虚拟隧道技术

叠加网络,在二层或者三层基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路隧道连接起来。
通过Overlay技术(可以理解成隧道技术),在原始报文外再包一层四层协议(UDP协议),通过主机网络进行路由转发。这种方式性能有一定损耗,主要体现在对原始报文的修改。目前Overlay主要采用VXLAN
 

3,VXLAN与 VLAN

3.1 VXLAN 是什么

将源数据包封装到UDP中,并使用基础网络的IP/MAC作为外层报文头进行封装,然后在以太网上传输,到达目的地后由隧道端点解封装并将数据发送给目标地址

3.2 vlan vxlan 区别

VLAN (Virtual Local Area Network) 和 VXLAN (Virtual eXtensible Local Area Network) 都是网络虚拟化技术,旨在提高网络资源的灵活性和利用率,但它们之间存在一些关键区别:

  1. 网络规模

    • VLAN 使用 12 位标识符来定义 VLAN ID,因此理论上最多可以创建 4094 个不同的 VLAN。这限制了其在网络规模上的应用,尤其是在大规模数据中心环境中。
    • VXLAN 使用 24 位的 VNI (VXLAN Network Identifier),允许创建多达 2^24(约1600万个)个独立的虚拟网络,极大地扩展了网络规模,适合云和大数据中心环境。
  2. 网络路径利用效率

    • VLAN 依赖于 Spanning Tree Protocol (STP) 或 Rapid Spanning Tree Protocol (RSTP) 来防止网络中的广播风暴和环路,但这通常会导致部分网络路径被阻塞,降低了网络带宽的利用率。
    • VXLAN 则通过将二层数据包封装在 UDP 报文中,利用 IP 网络进行传输,绕过了 STP 的限制,所有路径都可以被利用,提高了网络的效率和弹性。
  3. MAC 地址表的管理

    • 在 VLAN 中,每个交换机都需要维护一个 MAC 地址表,随着网络规模的扩大,MAC 表可能达到其容量极限,导致性能问题。
    • VXLAN 使用隧道技术,源和目的主机之间的二层通信可以在三层网络上透明传输,MAC 地址信息不需要在每一跳上都进行学习和维护,减轻了底层物理交换机的负担,防止了 MAC 表耗尽的问题。
  4. 应用场景

### 配置 Flannel 网络插件 为了在虚拟机环境中的 Kubernetes (k8s) 集群上成功下载并配置 Flannel 网络插件,以下是详细的说明: #### 准备工作 确保虚拟网络已正确设置。通过 VMware 的虚拟网络编辑器调整 `vmnet8` 的 NAT 设置,并确认网关 IP 地址已经正确配置[^1]。 #### 安装必要工具 在部署 Flannel 前,需先安装必要的依赖项。运行以下命令来更新系统包管理器并安装所需的工具: ```bash sudo apt update && sudo apt install -y curl wget jq ``` #### 下载 Flannel 组件 可以通过官方 YAML 文件获取 Flannel 插件的最新版本。执行以下命令以下载最新的 Flannel 清单文件: ```bash wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 此操作会将 Flannel 的清单文件保存为当前目录下的 `kube-flannel.yml`[^2]。 #### 应用 Flannel 到 k8s 集群 使用 `kubectl` 将 Flannel 添加至 Kubernetes 集群中。运行如下命令完成应用过程: ```bash kubectl apply -f kube-flannel.yml ``` 这一步骤将会创建相应的 DaemonSet 和其他资源对象,从而实现 Flannel 在整个节点上的分布和初始化。 #### 验证 Flannel 是否正常启动 验证 Flannel Pod 是否已在所有节点上成功运行。可以利用下面这条指令检查状态: ```bash kubectl get pods --namespace=kube-system -l app=flannel ``` 如果所有的 Pod 显示为 Running,则表明 Flannel 已经被正确加载到集群当中。 #### 调整 DNS 配置 由于某些情况下可能需要手动修改 `/etc/resolv.conf` 来适配内部服务发现机制,请注意该文件的内容应由 NetworkManager 自动生成。如果有特殊需求可进一步定制化处理。 --- ### 注意事项 - 如果遇到任何错误消息或者异常情况,请仔细阅读日志信息以便定位具体原因。 - 对于多节点场景下,务必保证各主机间能够互相通信无阻隔。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值