一篇讲给自己听的k8s网络模型

本文探讨了Kubernetes网络模型,包括同一Pod内容器通信、跨Pod通信、Pod与Service间通信,以及Flannel在其中的角色。重点阐述了不同Node上Pod如何通信,并解释了Service如何实现负载均衡和反向代理。通过对Kubernetes网络的理解,为后续的Service发现奠定了基础。
摘要由CSDN通过智能技术生成

不要吹灭你的灵感和你的想象力; 不要成为你的模型的奴隶。 ——文森特・梵高

k8s网络模型的实现,致力于解决一下场景:

  • 紧密耦合的容器到容器之间的通信
  • 抽象的Pod 到Pod之间的通信
  • Pod到Service之间的通信
  • 集群外部和内部组件之间的通信

同一个Pod内的容器之间的通信

  • 同一个Pod内的容器共享IP, 端口不同,可以直接通过localhost通信
  • 可以直接使用IPC进行通信(例如消息队列或者管道)

不同Pod内的容器通信

同一个Node上的Pod之间通信

  • 他们网段是一样的,都是从Docker0上分配的,同一个网桥,可以直接通信

  • 对于pod发送的非本地数据,都会通过Docker 0 路由中转到宿主机中

Kubernetes的CNI网络是指容器网络接口(Container Network Interface),它是一组规范,定义了容器网络接口的标准,使得不同的容器运行时(如Docker、rkt、LXC等)可以使用相同的网络插件来实现容器之间的网络通信。Kubernetes采用CNI网络模型,使得容器可以使用所选网络插件进行联网。 CNI网络模型的核心是插件,Kubernetes中的每个节点都需要安装一个CNI插件,用于配置和管理容器网络。CNI插件可以使用各种不同的底层网络技术来实现容器之间的通信,例如Linux网桥、VXLAN、IPSec等。CNI插件可以被设计成可插拔的,可以轻松地添加或删除插件,从而使得Kubernetes支持多种不同的网络模型和技术。 Kubernetes使用CNI插件来配置Pod的网络,每个Pod都有一个虚拟网络接口(如eth0),CNI插件将这个虚拟网络接口连接到宿主机的物理网络接口(如eth1),从而实现Pod和宿主机之间的通信。每个Pod可以有多个容器,这些容器共享Pod的网络命名空间,它们之间可以通过localhost来进行通信。同时,不同的Pod之间也可以通过CNI插件来建立网络连接,从而实现跨节点的容器通信。 总之,CNI网络模型Kubernetes提供了一种灵活、可扩展的容器网络架构,允许用户选择不同的网络插件来满足不同的需求。它简化了容器网络的配置和管理,使得容器可以轻松地进行通信,从而使得Kubernetes变得更加强大和灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序哥聊面试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值