网站首页 > 文章精选 正文
k8s主要存在四种类型的网络通信:
- C-to-C:发生在Pod内部,借助于lo实现;
- Pod-to-Pod:Pod间的通信,k8s自身并未解决该该类通信,而是借助于CNI接口,交给第三方解决方案;CNI之前的接口叫kubenet;
- Service-to-Pod:借助于kube-proxy生成的iptables或ipvs规则完成;
- ExternalClients-to-Service:引入集群外部流量,hostPort、hostNetwork、nodeport/service、loadbalancer/service、externalIP/service、Ingress;
k8s通过 CNI 接口将 Pod-to-Pod 间的通信交由第三方网络的原因在于,跨节点的容器间通信不能纯粹的物理桥接,这样会造成一个网段内挤入太多的物理节点。这样会产生网络风暴,所以必须将其进行隔离。
隔离的方法就是把每一个节点及其背后的 Pod 作为一个小的网络来使用。而此时跨节点的 Pod 通信就变为了如何去突破 Pod 所在的节点的边界。也就是如何去实现跨节点的 Pod 间的路由。
Pod跨界点通信解决方法
要构建出一个跨节点通信的 POD 网络需要解决以下两个问题:
1. 构建出虚拟网络,方法有两种:
- Overlay Network:叠加网络,覆盖网络
- Underlay Network:承载网络
2. 将容器接入构建出的虚拟网络,而容器或pod接入网络方法有以下三种:
- 使用虚拟网桥:在宿主机上使用虚拟网桥如Docker0、CNI0。每一个pod都创建一个虚拟网卡,一半在桥上,一般在Pod自身内部来完成,而后借助宿主机网卡到达网络外部。
- 多路复用:所谓多路复用是指将一块物理网卡在内核中模拟出MACVLAN或IPVLAN将其作为交换机来使用。这里的VLAN是指单个主机或多个主机上的多个pod组织在一个VLAN中。此时就不需要网桥,只需要一个内核级的VLAN功能即能实现。
- 硬件交换:这种称之为单根网络,一块物理网卡能被多个内核或多个容器共同使用,硬件自身支持虚拟功能。这要求硬件的支持。
Overlay Network
上图为叠加网路功能的示意,将pod接入网络的方式就是虚拟网桥 cni0 ,而每一个虚拟网桥上的 pod 都虚拟出一对网卡,一半在 pod 内部一半在 cni0 上。
而网络构建方式是在每一个节点上再创建一个专用隧道接口(tunnel device),节点内部的 pod通 信无需通过隧道直接可以通信,而跨界点的 pod 通信需要将报文通过 cni0 后发送给隧道入口设备,由隧道入口设备在其报文上加上隧道报文封装后通过物理网卡发送给对端的隧道设备,对端的隧道设备卸载隧道封装后交给 cni0 ,cni0 再交后端 Pod。
可以理解为在每一个节点上分别加了一个专用的隧道设备后,从而能够构建出一个跨界点 的隧道网路,这就是所谓的叠加网路。
Tunnel协议
目前最常用的 Tunnel 协议有以下两种:
- VxLAN:把每一个宿主机背后的网络当成局域网。其可以借助于 VxLAN 网络标识和交换功能,将一个 LAN 的功能交换到另外一个 LAN 中,但是 VLAN 所支持的虚拟网络是有限的(4095个),在一个超过4095节点的网络中 VLAN 就无法使用了,所以就出现了 VxLAN 协议,其支持 65535 个网络。
- IPIP:在 IP 报文中封装了 IP 报文。其开销比 VxLAN 小,但是其安全性弱于 VxLAN。
- GRE:通用路由封装。
文章来源于TechOps之窗,作者Darius
原文链接:
https://mp.weixin.qq.com/s/HO-oyijysGWm9fgOYP3qyQ
猜你喜欢
- 2025-07-09 别被云原生忽悠了:接地气的 K8s 生产落地长这样
- 2025-07-09 pod结构说明-运行容器的容器(容器中pod是什么意思)
- 2025-07-09 佚名运维 k8s 训练营 - 第1天(k8s运维是什么)
- 2025-07-09 k8s实践(三):pod常用操作(k8s pod service deployment)
- 2025-07-09 Kubernetes 核心概念全景图:Pod、Node、Cluster、Control Plane 等
- 2025-07-09 K8S之调度器-精细控制Pod分布(k8s pod调度过程详解)
- 2025-07-09 【超融合云计算中心】核心K8S容器实践应用指南
- 2025-07-09 Kubernetes从零到精通(01-简介)(kubernetes入门教程)
- 2025-07-09 service详解(service理解)
- 2025-07-09 kubernetes基本概念(kubernetes架构详解)
- 最近发表
-
- 五分钟轻松熟悉一个k8s Operator应用制作
- iLogtail 使用入门 - K8S 环境日志采集到 SLS
- k8s之配置CNI网络(k8s 网络配置)
- Linux系统K8S集群架构及常用操作命令之K9S安装及使用
- Centos 安装部署Kubernetes(K8s)(k8s环境搭建 centos)
- 集群外部署Prometheus+Grafana监控K8S解析
- k8s安装UI管理工具Kuboard安装(k8s安装步骤)
- k8s中使用Helm安装生产级别redis集群
- K8s集群(K8s集群添加新节点更新步骤)
- Kubernetes (k8s) 基本命令速查(k8s kubernetes教程)
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)