没有合适的资源?快使用搜索试试~ 我知道了~
首页Kubernetes网络原理剖析
资源详情
资源评论
资源推荐

Kubernetes 网络调研
1. Kubernetes 网络模型
采用的是基于扁平地址空间的网络模型,集群中的每个 都有自己的
地址,之间不需要配置 就能直接通信。另外,同一个 中的容器共享
的 ,能够通过 通信。
这种网络模型对应用开发者和管理员相当友好,应用可以非常方便地从传统网络迁移
到 。每个 可被看作是一个个独立的系统,而 中的容器则可被看做
同一系统中的不同进程。
1.1. Pod 内容器之间的通信
当 被调度到某个节点,中的所有容器都在这个节点上运行,这些容器共享
相同的本地文件系统、和网络命名空间。
不同 之间不存在端口冲突的问题,因为每个 都有自己的 地址。当某个容
器使用 时,意味着使用的是容器所属 的地址空间。
比如 有两个容器 和 ,在端口
上 监 听 , 当 连 接 到 , 实 际 上 就 是 在 访 问
。这不会与同一个节点上的 冲突,即使 中的容器
也在监听 端口。
1.2.Pod 之间的通信
的 是集群可见的,即集群中的任何其他 和节点都可以通过 直接与
通信,这种通信不需要借助任何的网络地址转换、隧道或代理技术。内部和外部
使用的是同一个 ,这也意味着标准的命名服务和发现机制,比如 可以直接使用。
1.3.Pod 与 Service 的通信
间可以直接通过 地址通信,但前提是 得知道对方的 。在
集群中, 可能会频繁的销毁和创建,也就是说 的 不是固定的。为了解决这个

问题, !提供了访问 的抽象层。无论后端的 如何变化, !都作为
稳定的前端对外提供服务。同时, !还提供了高可用和负载均衡功能, !负
责将请求转发给正确的 。
1.4.外部访问
无论是 的 还是 !的 ,它们只能在 集群中可
见,对集群之外的世界,这些 都是私有的。
提供了三种方式让外界能够与 通信:
! 通 过 节 点 的 静 态 端 口 对 外 提 供 服 务 。 外 部 可 以 通
过 "#"#访问 !。
$
! 利 用 %! 提 供 的 对 外 提 供 服 务 ,
%!负责将 的流量导向 !。目前支持的 %!有
&、' 、(等。
)
有别于以上两种方式,)事实上不是一种服务类型。相反,它处于多个服务的
前端,扮演着“智能路由”或者集群入口的角色。
你可以用 )来做许多不同的事情,各种不同类型的 )控制器也有不同的能力。
&*上的默认 )控制器是启动一个 +, -$。它允许你基于
路径或者子域名来路由流量到后端服务。例如,你可以将任何发往域名
./01/1的流量转到 .服务,将路径 01/122%的流
量转到 服务。

)可能是暴露服务的最强大方式,但同时也是最复杂的。)控制器有各
种类型,包括 &)$, )3,,,等等。它还
有各种插件,比如 1),它可以为你的服务自动提供 $证书。
如果你想要使用同一个 暴露多个服务,这些服务都是使用相同的七层协议(典型如
+),那么 )就是最有用的。如果你使用本地的 &集成,你只需要为一个负
载均衡器付费,且由于 ) 是“智能”的,你还可以获取各种开箱即用的特性(比如
$,认证,路由,等等)。
2. Kubernetes 网络插件
45.,-最早是由 6 发起的容器网络规范,是
网络插件的基础。其基本思想为:71 在创建容器时,先创
建好 451%,然后调用 插件为这个 配置网络,其后再启动容
器内的进程。现已加入 8,成为 8 主推的网络模型。
插件包括两部分:
) 负责给容器配置网络,它包括两个基本的接口

配 置 网 络 45,459): 71.-
,0%/7:-
清理网络45,459):71.-
;) 负责给容器分配 地址,主要实现包括 和 %。
中的其他容器都是 所属 % 容器的网络,创建过程为:
/ 5先创建 % 容器生成 451%
/ 调用网络 !
/ !根据配置调用具体的 插件
/ 插件给 %容器配置网络
</ %中其他的容器都使用 %容器的网络
常见的 网络插件有:

的优点是支持多种容器 1,不仅仅是 5。的插件模型支持不同
组织和公司开发的第三方插件,这对运维人员来说很有吸引力,可以灵活选择适合的网络
方案。
目 前 已 有 多 种 支 持 的 网 络 方 案 , 比 如
8、、、'!等。因为它们都实现了 规范,用户无论选
择哪种方案,得到的网络模型都一样,即每个 都有独立的 ,可以直接通信。区别
在于不同方案的底层实现不同,有的采用基于 =3$的 6!0实现,有的则是
>0,性能上有区别。再有就是是否支持 450。
详情参见:
%22.50/)5/25224522
2.1.Flannel
8 通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于 $3
>2,使用 > 封装 包来创建 !0 网络,并借助 维护网络的分配情况。
/// Flannel 原理
控制平面上 本地的 ? 负责从远端的 * 集群同步本地和其它 上
的 信息,并为 6 分配 地址。数据平面 ? 通过 5(比如 > 封
装)来实现 $6!0,既可以选择一般的 > 设备又可以选择 =3$ 设备。
剩余33页未读,继续阅读
















weigp3033
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制

评论1