k8s 的 CNI 网络模型

本文探讨了Kubernetes的网络模型,包括Pod间通信机制、CNI及其优点,CNI插件分类与选型,以及NetworkPolicy在网络策略中的应用。重点介绍了基于CNI的网络方案如Canal和其在实际部署中的应用。

目录

k8s 网络模型产生的背景和目的

k8s 的网络模型下集群中的各种实体如何通信?

CNI 网络模型

CNI 的优点

CNI 插件的分类及选型参考

Network Policy/网络策略

k8s 基于 CNI 网络模型实现的网络方案


k8s 网络模型产生的背景和目的

k8s 作为编排引擎管理着分布在不同节点上的容器和 Pod。而 Pod、Service 以及外部组件之间需要一种可靠的方式找到批次并进行互相通信,此时 k8s 网络则负责提供这个保障。下面将介绍如下内容:

  1. k8s 网络模型;
  2. k8s 基于 CNI 实现的各种网络方案;
  3. Network Policy 网络策略;

k8s 的网络模型下集群中的各种实体如何通信?

1. Pod内容器之间的通信

  • 当 Pod 被调度到某个节点,Pod 中的所有容器都在这个节点上运行,这些容器共享相同的本地文件系统、IPC 和网络命名空间。
  • 不同 Pod 之间不存在端口冲突的问题,因为每个 Pod 都有自己的 IP 地址。当某个容器使用 lalhost 时,意味着使用的是容器所属 Pod 的地址空间。
  • 比如 PodA 有两个容器 container-AI 和 container-A2,container-A1 在端口1234 上监听,当 container-A2 连接到 laltost:12324 时, 实际上就是在访问 cntaine-Al。这不会与同个节点上的 PodB 冲突,即使 PodB 中的容器 container-BI 也在监听1234端口。

2. Pod之间的通信

  • Pod的IP是集群可见的,即集群中的任何其他Pod和节点都可以通过IP直接与Pod通信,这种通信不需要借助任何网络地址转换、隧道或代理技术。Pod 内部和外部使用的是网个 IP,这也意味着标准的命名服务和发现机制,比如DNS可以直接使用。

3. Pod与Service的通信

  • Pod 间可以直接通过 IP 地址通信,但前提是 Pod 知道对方的 IP。在 Kabenete 集群中,Pod 可能会频繁地销级和创建,也就是说 Pod 的 IP 不是固定的。为了解决这个问题,Service 提供了访问 Pod 的抽象层。无论后端的 Pod 如何变化,Service 都作为稳定的前端对外提供服务。同时 Serice 还提供了高可用和负载均衡功能,Service 负责将请求转发给正确的Pod。

4. 外部访问

  • 无论是 Pod 的 IP 还是 Service 的 Cluster IP,它们只能在 Kubermetes 集群中可见,对集群之外的世界,这些 IP 都是私有的。
  • Kubermetes 提供了两种方式让外界能够与 Pod 通信:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ChaITSimpleLove

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

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

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

打赏作者

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

抵扣说明:

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

余额充值