k8s kube-router+ipvs pod网络分析

2023-05-16

  1. 集群中的每个节点上都有一个kube-bridge网桥,是部署k8s时创建的网桥,用于pod间通信
  2. k8s 利用veth pair和网桥实现容器通信,一端与pod绑定,一端绑定到kube-bridge上
    在这里插入图片描述
  3. 每个容器里都有类似这种route:
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         12.0.2.1        0.0.0.0         UG    0      0        0 eth0
12.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

容器中的网卡就是veth pair的一端,另一端绑定在kube-bridge

[root@node130 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
kube-bridge      8000.5ecc89af5358       no             veth05f0e8ae
                                                        veth068ea685
                                                        veth0f302518
                                                        veth1010624e
                                                        veth19061adb
                                                        veth3981c04c
                                                        veth432b0357
                                                        veth57be7c78

由上面条件可知,pod间在同一个节点上的通信通过kube-bridge就ok了。

  1. k8s集群中的每个节点上的pod的网段都不同,那是如何通信的呢?
    在这里插入图片描述
  2. 再看集群节点上的route
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
12.0.0.0        10.124.242.131  255.255.255.0   UG    0      0        0 enp216s0f2
12.0.1.0        10.124.242.132  255.255.255.0   UG    0      0        0 enp216s0f2
12.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 kube-bridge

可以看到每个节点上都有这么几条路由,所以跨节点通信时,有了这些路由就能访问到集群中其它节点的容器了。

  1. svc cluster IP 是如何工作的?
    其实cluster ip是完全虚拟的,节点上根本没有这ip,ipvs会用到这个地址,作为一个vip
[root@node130 ~]# kubectl get svc -n test
NAME                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
test   				 ClusterIP     12.0.182.73    <none>        5432/TCP 					 11d

如何通过svc访问到后面的pod的呢?
这里ipvs场景为例:

[root@node130 ~]# ipvsadm -Ln | grep 12.0.182.73 -A 2
TCP  12.0.182.73:5432 rr
  -> 12.0.0.98:5432               Masq    1      0          0
  -> 12.0.2.131:5432              Masq    1      0          0

通过ipvs的规则可以看到到12.0.182.73:5432的请求会被ipvs转到12.0.0.98:5432或12.0.2.131:5432
转发到的地址是什么呢,接着往下看。

  1. 查看svc的endpoints:
[root@node130 ~]# kubectl get endpoints test -n test
NAME             ENDPOINTS                        AGE
test   			12.0.1.93:5001,12.0.2.132:5001   11d

可以看到svc的后面是两个pod

[root@node130 ~]# kubectl get pods -n test -o wide | grep 12.0.1.93
test-749dd49bb4-m2v6c                   1/1     Running             6          9d    12.0.1.93 			node132 

[root@node130 ~]# kubectl get pods -n test -o wide | grep 12.0.2.132
test-749dd49bb4-wjsrm                   1/1     Running             6          9d    12.0.2.132       node130 

经过上面的流程,通过cluster ip 就能访问到后端的pod了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s kube-router+ipvs pod网络分析 的相关文章

随机推荐

  • inovance变频器说明书参数设置_H1变频器恒压供水系统上的应用

    1 概述 恒压供水是指在供水网中用水量发生变化时 xff0c 出口压力保持不变的供水方式 供水网系出口压力值是根据用户需求确定的 传统的恒压供水方式是采用水塔 高位水箱 气压罐等设施实现的 随着变频调速技术的日益成熟和广泛应用 xff0c
  • prometheus-2.37.0监控平台编译部署

    文章目录 简单介绍环境代码包下载官网地址CSDN组合包下载服务器下载 Prometheus体系结构图Prometheus部署安装配置为系统服务prometheus service加载配置 验证 AlertManager部署安装配置为系统服务
  • Adversarial Attack (对抗攻击)

    目录 MotivationHow to AttackExample of AttackHow to Attack White Box Attack Black Box AttackOne pixel attackUniversal Adve
  • ros读取硬件网络摄像头/USB摄像头/本地文件

    参考 xff1a wiki教程 https github com ros drivers video stream opencv git 0 查看摄像头是否挂载及挂载的USB端口号 两个USB摄像头同时使用 hub连接电脑 xff0c 会报
  • 安装YOLO_V5环境以及测试——NVIDIA Jetson Xavier AGX平台

    参考 Ubuntu 18 04 YOLOv5 ros yolo 环境配置 数据集标注 NVIDIA Jetson Xavier NX入门 xff08 3 xff09 安装miniforge和Pytorch NVIDIA Jetson Xav
  • teleop_twist_joy 游戏手柄ros使用

    参考 xff1a wiki官网链接 https github com ros teleop teleop twist joy git 查看每个按钮和轴对应的索引以及键值 span class token comment 1 通过话题查看 s
  • ROS melodic+opencv4 修改cv_bridge配置文件

    参考 xff1a Ubuntu18 04 43 ROS melodic 43 opencv4 修改cv bridge配置文件 xff0c 解决ROS使用不同版本opencv的冲突问题 Ubuntu18 04 ros melodic open
  • 使用ROS调用YOLO_V5(非darknet),利用ros-yolov5配置

    参考 xff1a 源码 安装YOLO V5环境以及测试 NVIDIA Jetson Xavier AGX平台 0 ros yolo5介绍 实现yolo作为service的server 发送sensor Imge 图片 得到yolo检测的结果
  • ROS仿真环境配置Husky+32线激光雷达+深度相机+imu+gps

    0 参考 wiki HUSKY 官网 git HUSKY HUSKY gazebo Tutorials 代码资源 husky base xff1a 与板载MCU通信的硬件驱动程序 husky bringup xff1a 调出启动文件和脚本
  • ros中使用Docker(2)VNC

    使用paopao机器人的ros vnc 镜像 dockerhub xff1a paopaorobot ros vnc网址 按照官网操作即可 下载镜像 span class token function docker span pull pa
  • winform窗体应用程序

    在C 编程环境中 xff1a winform窗体应用程序是一种客户端程序 xff0c 可以用来获取和显示数据 首先新建一个窗体应用程序项目 xff0c 在建完一个项目后可以看到有两个 cs类库文件 xff1a Form1 cs 和Progr
  • 3D目标跟踪(2)点云聚类

    点云聚类流程
  • GCAN -212(R2) can转网 使用记录

    GCAN 212 R2 使用udp模式 在配置软件进行配置 选择udp模式 xff1b 选择Remote IP 为本机PC的IP地址 xff1b 编写ROS程序 未完成 参考程序1 参考程序2 节点数据驱动 xff1a 主线程udp接收数据
  • 分卷压缩与分卷解压

    span class token comment 1 分卷压缩 span span class token function tar span cvzpf myfile span class token operator span span
  • java 域的概念_java中的域,静态域,实例域

    1 java中的域 所谓的域 xff0c 翻译成英文就是field xff0c 也就是我们常说的字段 xff0c 或者说是属性 比如类的字段 属性 xff0c 局部的 xff0c 全局的 所谓域 xff0c 其实是 field 的翻译 然后
  • mysql 字段最右匹配_【MySQL】-索引优化

    优化口诀 xff1a 全值匹配我最爱 xff0c 最左前缀要遵守 xff1b 带头大哥不能死 xff0c 中间兄弟不能断 xff1b 索引列上少计算 xff0c 范围之后全失效 xff1b Like百分写最右 xff0c 覆盖索引不写星 x
  • Meta-learning:Learn to learn

    基于李宏毅教授的ML课程做的笔记 xff0c 主要供自己复习 xff0c 所以就留下了一些自己想多看的东西 xff0c b站有全面的课程视频 引言 xff1a 为什么few shot任务常常提及元学习meta learning xff1f
  • Hadoop----hdfs dfs常用命令

    span class token operator span mkdir 创建目录 hdfs dfs span class token operator span mkdir span class token punctuation spa
  • 如何处罚被客户投诉的项目经理?

    没有被客户投诉过的项目经理很难体会到客户满意度的重要性 项目经理被客户投诉 xff0c 一定要执行合适的处罚 xff0c 否则项目管理将失去基本游戏规则 自由是有限度的 xff0c 项目经理一定不能突破客户投诉的红线 如同不断的抛接球 xf
  • k8s kube-router+ipvs pod网络分析

    集群中的每个节点上都有一个kube bridge网桥 xff0c 是部署k8s时创建的网桥 xff0c 用于pod间通信k8s 利用veth pair和网桥实现容器通信 xff0c 一端与pod绑定 xff0c 一端绑定到kube brid