首页 > 其他分享 >Kubernetes中Pod间通信的详细解析

Kubernetes中Pod间通信的详细解析

时间:2024-08-15 21:26:52浏览次数:9  
标签:Node Kubernetes veth 间通信 网桥 Pod 网络接口 eth0

目录

同一个节点中Pod通信原理

网络拓扑结构

Pod:

  • 每个Pod都有一个唯一的IP地址(例如,172.16.3.2和172.16.3.3)。
  • Pod内部的网络接口(eth0)连接到一个虚拟网络设备(veth)。

虚拟网络设备(veth pairs):

  • 每个Pod都有一个veth对应项(veth1和veth2),这些veth是成对出现的虚拟网络接口,类似于一条虚拟的以太网电缆。
  • veth的一端在Pod内部(连接到Pod的eth0),另一端在主机(Node)中。

网桥(Bridge):

  • 虚拟网络设备的另一端连接到主机上的网桥(Bridge),这里的网桥IP地址为172.16.3.1。
  • 网桥在主机上充当二层交换机,负责将来自不同veth设备的流量进行交换和转发。

节点网络接口(eth0):
网桥将流量转发到主机的网络接口(eth0),主机的网络接口IP地址为192.168.0.111。

通信过程

Pod内部流量:

  • 当Pod 1(IP 172.16.3.2)需要与Pod 2(IP 172.16.3.3)通信时,数据包从Pod 1的eth0发出,通过veth1发送到网桥。

数据包转发:

  • 网桥根据数据包的目标IP地址,将数据包从veth1转发到对应的veth2。

到达目标Pod:

  • 数据包通过veth2进入Pod 2的eth0,最终到达目标Pod。

  • veth pairs:用于连接Pod和主机网络空间的虚拟网络设备,一端在Pod内部,另一端在主机网桥上。
  • 网桥(Bridge):在主机上充当二层交换机,负责将不同veth设备之间的流量进行交换和转发。
  • Pod网络接口(eth0:)Pod内部的网络接口,通过veth pairs连接到主机网络。
    这种网络通信模型确保了Kubernetes集群中同一节点上的Pod之间的高效、可靠的网络连接。

不同节点上的Pod通信原理

在不同节点上的Pod之间的通信过程。

网络拓扑结构

Pod:

  • 每个Pod都有一个唯一的IP地址(例如,Node 1上的Pod的IP为172.16.3.2和172.16.3.3,Node 2上的Pod的IP为172.16.4.2和172.16.4.3)。
  • Pod内部的网络接口(eth0)连接到一个虚拟网络设备(veth)。

虚拟网络设备(veth pairs):

  • 每个Pod都有一个veth对应项,这些veth是成对出现的虚拟网络接口,类似于一条虚拟的以太网电缆。
  • veth的一端在Pod内部(连接到Pod的eth0),另一端在主机(Node)中。

网桥(Bridge):

  • 虚拟网络设备的另一端连接到主机上的网桥(Bridge)。Node 1的网桥IP 为 172.16.3.1,Node 2的网桥 IP 为 172.16.4.1。
  • 网桥在主机上充当二层交换机,负责将来自不同 veth 设备的流量进行交换和转发。

节点网络接口(eth0):

  • 每个节点都有一个网络接口(eth0),连接到外部网络。Node 1的网络接口 IP 为 192.168.0.111,Node 2 的网络接口 IP 为 192.168.0.222。
通信过程

源Pod发送数据:

  • 当Node 1上的Pod 1(IP 172.16.3.2)需要与Node 2上的Pod 2(IP 172.16.4.2)通信时,数据包从Pod 1的eth0发出,通过veth1发送到Node 1的网桥。

数据包转发到节点网络接口:

  • 网桥根据数据包的目标IP地址,将数据包从veth1转发到Node 1的eth0网络接口。

跨节点通信:

  • 数据包通过外部网络,从Node 1的eth0网络接口发送到Node 2的eth0网络接口。

目标节点接收数据包并转发:

  • Node 2的eth0网络接口接收到数据包后,转发给Node 2的网桥。

目标Pod接收数据:

  • Node 2的网桥根据数据包的目标IP地址,将数据包从eth0转发到veth1。
  • 数据包通过veth1进入Pod 2的eth0接口,最终到达目标Pod 2(IP 172.16.4.2)。

  • veth pairs:用于连接Pod和主机网络空间的虚拟网络设备,一端在Pod内部,另一端在主机网桥上。
  • 网桥(Bridge):在主机上充当二层交换机,负责将不同veth设备之间的流量进行交换和转发。
  • 节点网络接口(eth0):节点上的网络接口,负责连接外部网络和节点内部的网桥。
  • 跨节点通信:不同节点上的Pod之间的通信通过节点的网络接口和外部网络进行传输。

这种网络通信模型利用了veth pairs、网桥和节点网络接口,确保了Kubernetes集群中不同节点上的Pod之间的高效、可靠的网络连接。

标签:Node,Kubernetes,veth,间通信,网桥,Pod,网络接口,eth0
From: https://www.cnblogs.com/even160941/p/18361833

相关文章

  • Kubernetes的网络基础
    kubernetes网络模型Kubernetes集群上会存在三个分别用于节点、Pod和Service的网络于worker上完成交汇由节点内核中的路由模块,以及iptables/netfilter和ipvs等完成网络间的流量转发Kubernetes网络模型(2)节点网络集群节点间的通信网络,并负责打通与集群外部端点间的通信......
  • kubernetes高效学习
    知识结构1.基础概念与概述k8s简介:了解k8s的起源、目标、应用场景和优势。核心概念:Pod、Node、Service、Label、Namespace、Deployment等。2.集群架构Master节点:APIServer、Scheduler、Controller-Manager、Etcd。Node节点:Kubelet、Kube-proxy、Docker(或其他容器运行......
  • Kubernetes(k8s)基础及原理
    什么是Kubernetes(k8s)Kubernetes是一个开源的容器编排系统,用于自动化地部署、扩展和管理容器化应用程序。Kubernetes源自谷歌内部的Borg系统,旨在实现容器化应用的高效管理。它提供了服务发现、负载均衡、自动扩缩容等功能,并支持跨主机的容器管理。Kubernetes的设计以“一切......
  • 在K8S中,Pod多副本配置了硬亲和性,会调度到同⼀个节点上吗?
    在K8S(Kubernetes)中,Pod多副本配置硬亲和性(podAffinity的requiredDuringSchedulingIgnoredDuringExecution)时,并不意味着这些Pod一定会被调度到同一个节点上。硬亲和性的配置实际上是指定了Pod调度时必须满足的严格条件,但这些条件通常与Pod之间的相对位置(如是否在同一个节点、区域或......
  • 在K8S中,Pod处于OOM状态如何排查?
    在Kubernetes(K8S)中,Pod处于OOM(OutofMemory)状态意味着Pod因为内存不足而被系统强制终止。这通常发生在Pod尝试使用超过其分配的内存资源时。以下是排查PodOOM状态的一些步骤:检查Pod状态:使用kubectlgetpods命令来查看Pod的状态。如果Pod处于OOM状态,你会看到状态为OOMKil......
  • k8s集群中pod的容器资源限制和三种探针
    目录1.pod容器的资源限制1.1资源单位2.k8s的健康检查2.1探针的三种规则3.pod容器的启动、退出动作1.pod容器的资源限制当定义Pod时可以选择性地为每个容器设定所需要的资源数量。最常见的可设定资源是CPU和内存大小,以及其他类型的资源。当为Pod中的容器指定......
  • kubernetes应用编排的基本工作逻辑
    Pod和应用Kubernetes本质上是“以应用为中心”的现代应用基础设施,Pod是其运行应用及应用调度的最小逻辑单元本质上是共享Network、IPC和UTS名称空间以及存储资源的容器集可将其想象成一台物理机或虚拟机,各容器就是该主机上的进程各容器共享网络协议栈、网络设备、路由、IP......
  • kubernetes 核心组件详解
    Kubernetes是什么?**Kubernetes集群(KubernetesCluster)是一个由多个节点组成的系统,用于自动化部署、管理、扩展和操作容器化应用程序。Kubernetes是一种开源的容器编排平台,它通过集群的形式来管理容器,使得应用的运行、管理和扩展变得更加高效和自动化。基础概念与组件docker......
  • kubernetes负载感知调度
    背景kubernetes的原生调度器只能通过资源请求来调度pod,这很容易造成一系列负载不均的问题,并且很多情况下业务方都是超额申请资源,因此在原生调度器时代我们针对业务的特性以及评估等级来设置Requests/Limit比例来提升资源利用效率。在这种场景下依然存在很多问题:节点负载......
  • 拆除kubeadm部署的Kubernetes 集群
    kubeadm拆除Kubernetes集群工作节点在拆除集群之前,先从集群中删除所有的工作节点,而后拆除各控制平面节点。若仅拆除单个已然处于正常工作状态的节点:先禁止该节点作为调度目标:kubectlcordonNODE然后排空该节点:kubectldrainNODE待排空操作完成后,从控制平面上删除该节点......