Kubernetes 的网络模型

CSDN话题挑战赛第2期
参赛话题:万家争鸣的云计算修罗场

我想分享的云计算技能/知识点

K8S的网络通讯方式

该技能/知识点的背景介绍

在docker中,最小的调度单位是Container(容器),容器与容器可以组成服务框架。

在Kubernetes中,最小的调度单位是Pod,Pod之间的彼此合作及关联组成了集群。

pause:是一个 pod 必须存在的容器,而且总是第一个启动,并且成功,否则重载。启动后初始网络栈,并挂载当前 Pod 需要的存储卷。

mainC:一个Pod中必须至少有一个mainC,它会共享pause的网络栈和存储卷。

1、Pod类型

自主式Pod:自我完成对自我的管理

控制器管理的Pod:由对应控制器进行管理

该技能/知识点实际运用

Kubernetes 的网络模型假定了所有 Pod 都在一个可以直接连通扁平的网络空间中,这在 GCE(Google Compute Engine)里面是现成的网络模型,Kubernetes 假定这个网络已经存在。而在私有云里搭建 Kubernetes 集群,就不能假定这个网络已经存在了。我们需要自己实现这个网络假设,将不同节点上的 Docker 容器之间的互相访问先打通,然后运行 Kubernetes。

Flannel 是 CoreOS 团队针对 Kubernetes 设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的 Docker 容器都具有全集群唯一的虚拟IP地址。而且它还能在这些 IP 地址之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动地传递到目标容器内。

 

总结

1)etcd之Flannel的作用:

1、存储管理 Flannel 可分配的 IP 地址段资源

2、监控 ETCD 中每个 Pod 的实际地址,并在内存中建立维护 Pod 节点路由表

2)网络通讯机制:

1、Pod内部的容器间的通讯:同一个Pod内部通过共享pause容器的网络栈,所以同Pod内部的不同容器的互相访问是基于此Pod内部的lo网卡实现的

2、不同Pod间的通讯机制:

a)同物理机的:同物理机的不同Pod之间,是通过当前物理机的Docker0网桥实现数据报文的转发

b)不同物理机的:

1)条件一:不同物理机间的Pod的地址不能够冲突。Flannel组件会向etcd发起网段的请求,并且etcd会记录当前分配网段与对应申请机器的物理网卡地址。

2)条件二:不同私有网络的Pod间如何在跨物理机实现报文传递?Flannel组件会通过UDP协议将数据报文进行二次封装实现数据传递

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值