Kubernetes 学习笔记 权威指南第七章

1 Kubernetes对集群网络有如下要求。

(1)所有容器都可以在不用NAT的方式下同别的容器通信。

(2)所有节点都可以在不用NAT的方式下同所有容器通信,反之亦然。

(3)容器的地址和别人看到的地址是同一个地址。

原生的Docker网络目前还不能很好地支持这些要求

处于不同命名空间中的网络栈是完全隔离的,彼此之间无法通信。如果想在两个命名空间之间通信,就必须有一个Veth设备对

所有的网络设备(物理的或虚拟接口、桥等在内核里都叫作Net Device)都只能属于一个命名空间

4  因为一个设备只能属于一个命名空间,所以转移后在这个命名空间中就看不到这个设备了

Veth设备属于可以转移的设备,而很多其他设备如lo设备、vxlan设备、ppp设备、bridge设备等都是不可以转移的

5 ip route list命令查看当前的路由表:

 

 在上面的例子代码中只有一个子网的路由,源地址是192.168.6.140(本机),目标地址在192.168.6.0/24网段的数据包都将通过eno16777736接口发送出去

Netstat-rn是另一个查看路由表的工具:

 

 在它显示的信息中,如果标志是U,则说明是可达路由;如果标志是G,则说明这个网络接口连接的是网关,否则说明这个接口直连主机

在Kubernetes管理模式下通常只会使用bridge模式,在bridge模式下,Docker Daemon第1次启动时会创建一个虚拟的网桥,默认的名称是docker0

由Docker创建的每一个容器,都会创建一个虚拟的以太网设备(Veth设备对),其中一端关联到网桥docker0上,另一端使用Linux的网络命名空间技术,映射到容器内的eth0设备,然后从网桥的地址段内给eth0接口分配一个IP地址

Docker网络在bridge模式下Docker Daemon启动时创建docker0网桥,并在网桥使用的网段为容器分配IP

8 同一个pod内的容器之间可以通过localhost通信;同一个node上的pod之间可以通过ip直接通信;

可以在网络层将Kubernetes的节点看作一个路由器

10 服务的IP地址是在Kubernetes的Portal Network中分配的,而这个Portal Network的地址范围是我们在Kubmaster上启动API服务进程时,使用--service-cluster-ip-range=xx命令行参数指定的。这个IP段可以是任何段,只要不和docker0或者物理网络的子网冲突就可以

11 使用tcpdump来进行网络抓包

12 Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平网络空间中。
13 Flannel可以搭建Kubernetes依赖的底层网络

posted on   我和你并没有不同  阅读(199)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-05-26 可以在找工作的网站上看到当前行业大家常用的框架,工具,技能
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示