前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S网络介绍

K8S网络介绍

作者头像
灰子学技术
发布2022-01-18 14:08:49
4230
发布2022-01-18 14:08:49
举报
文章被收录于专栏:灰子学技术灰子学技术

一、背景介绍:

对于K8S里面容器之间的通讯基本上面可以分为三种类型:

1. POD里面不同容器之间的通讯: 因为同一个Pod里面的不同容器之间是共享同一个POD里面的网络资源,所以POD里容器之间的通讯基本上就是IPC之间的通讯方式,这个比较简单,不做详细介绍。

2.同一个NODE节点上面不同POD里面容器间的通讯:本篇文章主要用来讲解这一类通讯方式。

3.不同NODE上面的不同POD里面容器之间的通讯:这部分在后续章节介绍。

二、基础知识介绍:

网桥(Bridge):

在 Linux 中,能够起到虚拟交换机作用的网络设备,是一个工作在数据链路层(Data Link)的设备,主要功能是根据 MAC 地址学习来将数据包转发到网桥的不同端口(Port)上。

docker0 的网桥: Docker 项目会默认在宿主机上创建一个网桥docker0 ,凡是连接在 docker0 网桥上的容器,就可以通过它来进行通信。

Veth Pair 设备: 它被创建出来后,总是以两张虚拟网卡(Veth Peer)的形式成对出现的。并且,从其中一个“网卡”发出的数据包,可以直接出现在与它对应的另一张“网卡”上,哪怕这两个“网卡”在不同的 Network Namespace 里。

这就使得 Veth Pair 常常被用作连接不同 Network Namespace 的“网线”。

三、通讯过程介绍:

容器1的IP1访问容器2的IP2的交互过程如下所示: 1.在容器1中的路由规则里面查找IP2的地址,发现是是外部网络就会直接走容器1里面的eth0网卡(备注:走网卡的话,就是二层网路,需要探测IP2的MAC地址)。

2.eth0通过ARP广播进行探测IP2所对应的MAC地址,又因为Veth Pair的设备连接着2个网卡,所以eth0的发的ARP广播会通过docker0转发。

备注:一旦一张虚拟网卡被“插”在网桥上,它就会变成该网桥的“从设备”。从设备会被“剥夺”调用网络协议栈处理数据包的资格,从而“降级”成为网桥上的一个端口。而这个端口唯一的作用,就是接收流入的数据包,然后把这些数据包的“生杀大权”(比如转发或者丢弃),全部交给对应的网桥。)

3.容器2里面的veth2也是通过Veth Pair连接在网桥docker0上面,所以这个ARP广播会发送到容器2里面的eth0网卡中。

4.容器2收到这个ARP之后,会返回这个IP2对应的MAC地址给到容器1里面的eth0。

5.后续容器1里面的eth0就可以直接发送消息出去了。

参考文档: Kubernetes权威指南(第五版)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 灰子学技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档