- 序言
- 云原生
- Kubernetes 架构
- Kubernetes 中的网络
- Pod 状态与生命周期管理
- 集群资源管理
- 控制器
- 服务发现
- 身份与权限控制
- 存储
- 集群扩展
- 资源调度
- 用户指南
- 资源对象配置
- 命令使用
- 集群安全性管理
- 访问 Kubernetes 集群
- 在 Kubernetes 中开发部署应用
- 最佳实践概览
- 在 CentOS 上部署 Kubernetes 集群
- 生产级的 Kubernetes 简化管理工具kubeadm
- 服务发现与负载均衡
- 运维管理
- 存储管理
- 集群与应用监控
- 分布式跟踪
- 服务编排管理
- 持续集成与发布
- 更新与升级
- 领域应用概览
- 微服务架构
- Service Mesh 服务网格
- 大数据
- Serverless架构
- 边缘计算
- 人工智能
- 开发指南
- CNCF
- 附录说明
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Kubernetes中的网络
Kubernetes中的网络可以说对初次接触Kubernetes或者没有网络方面经验的人来说可能是其中最难的部分。Kubernetes本身并不提供网络功能,只是把网络接口开放出来,通过插件的形式实现。
网络要解决的问题
既然Kubernetes中将容器的联网通过插件的方式来实现,那么该如何解决容器的联网问题呢?
如果您在本地单台机器上运行docker容器的话会注意到所有容器都会处在docker0
网桥自动分配的一个网络IP段内(172.17.0.1/16)。该值可以通过docker启动参数--bip
来设置。这样所有本地的所有的容器都拥有了一个IP地址,而且还是在一个网段内彼此就可以互相通信了。
但是Kubernetes管理的是集群,Kubernetes中的网络要解决的核心问题就是每台主机的IP地址网段划分,以及单个容器的IP地址分配。概括为:
- 保证每个Pod拥有一个集群内唯一的IP地址
- 保证不同节点的IP地址划分不会重复
- 保证跨节点的Pod可以互相通信
- 保证不同节点的Pod可以与跨节点的主机互相通信
为了解决该问题,出现了一系列开源的Kubernetes中的网络插件与方案,如:
- flannel
- calico
- contiv
- weave net
- kube-router
- cilium
- canal
还有很多就不一一列举了,只要实现Kubernetes官方的设计的CNI - Container Network Interface(容器网络接口)就可以自己写一个网络插件。
下面仅以当前最常用的flannel和calico插件为例解析。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论