「网络拓扑」Kubernetes 网络模型来龙去脉( 三 )
本文插图
它的实现是这样的:首先是由一群 Pod 组成一组功能后端 , 再在前端上定义一个虚 IP 作为访问入口 。 一般来说 , 由于 IP 不太好记 , 我们还会附赠一个 DNS 的域名 , Client 先访问域名得到虚 IP 之后再转成实 IP 。 Kube-proxy 则是整个机制的实现核心 , 它隐藏了大量的复杂性 。 它的工作机制是通过 apiserver 监控 Pod/Service 的变化(比如是不是新增了 Service、Pod)并将其反馈到本地的规则或者是用户态进程 。
一个 LVS 版的 Service我们来实际做一个 LVS 版的 Service 。 LVS 是一个专门用于负载均衡的内核机制 。 它工作在第四层 , 性能会比用 iptable 实现好一些 。
假设我们是一个 Kube-proxy , 拿到了一个 Service 的配置 , 如下图所示:它有一个 Cluster IP , 在该 IP 上的端口是 9376 , 需要反馈到容器上的是 80 端口 , 还有三个可工作的 Pod , 它们的 IP 分别是 10.1.2.3, 10.1.14.5, 10.1.3.8 。
本文插图
它要做的事情就是:
本文插图
- 第 1 步 , 绑定 VIP 到本地(欺骗内核);
- 第 2 步 , 为这个虚 IP 创建一个 IPVS 的 virtual server;
- 第 3 步 , 为这个 IPVS service 创建相应的 real server 。
啥?负载均衡还分内部外部
最后我们介绍一下 Service 的类型 , 可以分为以下 4 类 。
1. ClusterIP集群内部的一个虚拟 IP , 这个 IP 会绑定到一堆服务的 Group Pod 上面 , 这也是默认的服务方式 。 它的缺点是这种方式只能在 Node 内部也就是集群内部使用 。
2. NodePort供集群外部调用 。 将 Service 承载在 Node 的静态端口上 , 端口号和 Service 一一对应 , 那么集群外的用户就可以通过 : 的方式调用到 Service 。
3. LoadBalancer给云厂商的扩展接口 。 像阿里云、亚马逊这样的云厂商都是有成熟的 LB 机制的 , 这些机制可能是由一个很大的集群实现的 , 为了不浪费这种能力 , 云厂商可通过这个接口进行扩展 。 它首先会自动创建 NodePort 和 ClusterIP 这两种机制 , 云厂商可以选择直接将 LB 挂到这两种机制上 , 或者两种都不用 , 直接把 Pod 的 RIP 挂到云厂商的 ELB 的后端也是可以的 。
推荐阅读
- 工业互联网@程序员的术与道:术——编程基本功之网络编程
- 澳门@打击贷款类电信网络诈骗犯罪,公安机关一网下去,抓了798人!
- 网络赌博:5大计划单列市首季,深圳厦门惊喜,青岛超过宁波,一项指标超高
- 央视开放网络售票,印度铁路拟分阶段恢复客运列车运营
- 于老师讲娱乐主持人和网络歌手的相遇,会有怎样的火花,甜甜的恋爱气息
- 科技曰报沈郎乡 侠天下 网红餐厅汤系火锅 尤溪桂峰4A景区,凤槿网络
- 定西公安姜春煌主持召开党委会专题研究打击治理电信网络新型违法犯罪工作
- 一人笔记怎么才能让年轻人喜欢书法?,《书法问集》674、网络社会的今天
- 「客户端」学习网络编程,不了解TCP协议?难怪面试被刷下去,还不来学习!
- 红网国网湖南电力扶贫记丨贫困村首次“触电” 网络直播1小时“带货”3600单
