Merge pull request #250 from Mr-Linus/master

update service proxy mode:ipvs
pull/256/head
Jimmy Song 2018-07-22 10:49:06 +08:00 committed by GitHub
commit 69bb50e759
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 0 deletions

View File

@ -113,6 +113,8 @@ spec:
在 Kubernetes v1.0 版本,代理完全在 userspace。在 Kubernetes v1.1 版本,新增了 iptables 代理,但并不是默认的运行模式。
从 Kubernetes v1.2 起,默认就是 iptables 代理。
在Kubernetes v1.8.0-beta.0中添加了ipvs代理。
在 Kubernetes v1.0 版本,`Service` 是 “4层”TCP/UDP over IP概念。
在 Kubernetes v1.1 版本,新增了 `Ingress` APIbeta 版),用来表示 “7层”HTTP服务。
@ -149,6 +151,23 @@ spec:
### ipvs 代理模式
这种模式kube-proxy会监视Kubernetes `Service`对象和`Endpoints`,调用`netlink`接口以相应地创建ipvs规则并定期与Kubernetes `Service`对象和`Endpoints`对象同步ipvs规则以确保ipvs状态与期望一致。访问服务时流量将被重定向到其中一个后端Pod。
与iptables类似ipvs基于netfilter 的 hook 功能但使用哈希表作为底层数据结构并在内核空间中工作。这意味着ipvs可以更快地重定向流量并且在同步代理规则时具有更好的性能。此外ipvs为负载均衡算法提供了更多选项例如
- `rr`:轮询调度
- `lc`:最小连接数
- `dh`:目标哈希
- `sh`:源哈希
- `sed`:最短期望延迟
- `nq`: 不排队调度
**注意:** ipvs模式假定在运行kube-proxy之前在节点上都已经安装了IPVS内核模块。当kube-proxy以ipvs代理模式启动时kube-proxy将验证节点上是否安装了IPVS模块如果未安装则kube-proxy将回退到iptables代理模式。
![ipvs代理模式下Service概览图](../images/service-ipvs-overview.png)
## 多端口 Service
很多 `Service` 需要暴露多个端口。对于这种情况Kubernetes 支持在 `Service` 对象中定义多个端口。

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB