当前位置: 首页 > news >正文

【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信

引言

我们之前了解了在不同场景下,Kubernetes中Pod之间的通信是如何路由的。

  • 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信
  • 【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信

现在,我们来看看在集群中,Pod与服务之间的通信是如何管理的,这里仍使用Calico作为容器网络接口(CNI)。在本文中,我们只探讨集群内部的通信,与外部世界的通信留到下次讨论。

服务到Pod的转换可以通过不同方式实现,我们将了解Linux系统中的三种主要情况:使用kube-proxy配置iptables或IPVS数据平面,以及最终无需iptables的eBPF。

本文的目的并非选择管理服务的最佳模式,而是获取关于如何配置它们以及它们如何工作的基础知识。为此,我们将使用TCPDUMP和Wireshark来观察数据包,使用iptablesipvsadmcalico-node-bpf来查看相关表。

前置条件

进行本实验需要具备Kubernetes、kubectl和网络协议的基本经验。我们将使用一个现有的两节点Kubernetes集群,版本为1.31,使用Calico作为已安装的CNI。CNI安装方法在这篇文章的案例3中 ——【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信。

创建ClusterIP服务

首先,我们创建一个部署,其中包含两个httpd镜像的副本,以及一个使用alpine镜像的Pod,用于访问Web服务器工作负载。

k run pod-alpine --image alpine -- sleep 1d
k create deploy monwebserver --replicas 2 --image httpd

在这里插入图片描述
检查两个副本是否不在同一节点上,如果在,则进行调整。然后,为该部署创建一个服务,并在pod-alpine中安装curl。

k expose deployment monwebserver --port 8080 --target-port 80 --name svc-webserver
k exec - it pod-alpine -- apk update
k exec - it pod-alpine -- apk add curl

服务会获取一个IP地址和两个端点来提供服务。
在这里插入图片描述

然后,你可以从“pod-alpine” Pod访问该服务,在“monwebserver”部署的两个后端Pod之间将进行随机的等价负载均衡。
在这里插入图片描述

当有对服务IP(10.97.0.69:8080)的请求时,目标地址会通过Iptables中的DNAT(目的网络地址转换)转换为其中一个端点地址。

案例1:Kube-Proxy与Iptables配合使用

Iptables是Linux内核的一个特性,设计初衷是作为一个高效的防火墙,具有足够的灵活性,能够处理各种常见的数据包操作和过滤需求。这是Kubernetes在Linux系统中使用的默认情况,上一段中的服务就是以这种模式运行的。在这种场景下,每个节点上都有一个kube-proxy Pod。

http://www.lryc.cn/news/532336.html

相关文章:

  • DNN(深度神经网络)近似 Lyapunov 函数
  • 128陷阱
  • PromptSource和LangChain哪个更好
  • 构成正方形的数量:算法深度剖析与实践
  • Redis持久化-秒杀系统设计
  • 音视频入门基础:RTP专题(8)——使用Wireshark分析RTP
  • OpenAI 实战进阶教程 - 第六节: OpenAI 与爬虫集成实现任务自动化
  • SpringUI Web高端动态交互元件库
  • 解密企业安全密码:密钥管理服务如何重塑数据保护?
  • 基于keepalived+GTID半同步主从复制的高可用MySQL集群
  • 图片PDF区域信息批量提取至Excel,基于QT和阿里云api的实现方案
  • Java 大视界 -- Java 大数据在智能教育中的应用与个性化学习(75)
  • 从零手写Spring IoC容器(二):bean的定义与注册
  • 《大模型面试宝典》(2025版) 发布了
  • AWS门店人流量数据分析项目的设计与实现
  • 出租车特殊计费表算法解析与实现
  • 文档解析技术:如何高效提取PDF扫描件中的文字与表格信息?
  • 【2】高并发导出场景下,服务器性能瓶颈优化方案-异步导出
  • 【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力
  • frida 通过 loadLibrary0 跟踪 System.loadLibrary
  • 【2025最新计算机毕业设计】基于SSM的智能停车场管理系统【提供源码+答辩PPT+文档+项目部署】(高质量源码,可定制,提供文档,免费部署到本地)
  • 【含文档+PPT+源码】Python爬虫人口老龄化大数据分析平台的设计与实现
  • 文本生图的提示词prompt和参数如何设置(基于Animagine XL V3.1)
  • 快速提取Excel工作簿中所有工作表的名称?
  • 【紫光同创PG2L100H开发板】盘古676系列,盘古100Pro+开发板,MES2L676-100HP
  • Node.JS 版本管理工具 Fnm 安装及配置(Windows)
  • labview通过时间计数器来设定采集频率
  • 汇编JCC条件跳转指令记忆
  • HTML排版标签、语义化标签、块级和行内元素详解
  • 【回溯+剪枝】单词搜索,你能用递归解决吗?