前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >容器网络硬核技术内幕 (18) 他山之石可以攻玉

容器网络硬核技术内幕 (18) 他山之石可以攻玉

作者头像
用户8289326
发布2022-07-28 08:57:43
1970
发布2022-07-28 08:57:43
举报
文章被收录于专栏:帅云霓的技术小屋

在上一期《生命的火花》中,我们提到,一组pod可以通过service机制,对外提供一个名称。Kubernetes会将这个名称映射到带有同一个标签的Pod,将指向service的访问分发到各个pod上。

让我们看一个例子。

如图所示,我们创建了3个运行着elasticsearch的pod,对外的service名称为es1。

这3个pod的IP地址分别为:

172.17.50.101/24

172.17.50.104/24

172.17.50.113/24

它们对外提供服务的IP为 172.17.30.254/24。

在kubernetes中,我们可以通过yaml来配置它们:

代码语言:javascript
复制
apiVersion: v1  #对象描述规范版本
kind: Service   #对象类型为service
metadata:
  name: es1     #service对象名称:es1
  labels:
    name: es    #该service对象对外的标签:es。有可能有其他service也使用这个标签。
spec:
  type: ClusterIP     #这里代表是ClusterIP类型的负载均衡方式
  clusterIP: 172.17.30.254 #对外提供服务的IP
  ports:
  - port: 80          #这里的端口是pod服务的监听端口。
    targetPort: 80  #这个端口是pod对外暴露服务的端口
    protocol: TCP
  selector:
    app: elasticsearch  #这个标签是后端pod组的标签

这样,就可以将一组具有elasticsearch的标签的Pod,以es1的名称对外发布为一个service,这个service名称将解析为IP地址 172.17.30.254,端口80。

我们注意到,service的type字段为ClusterIP。实际上,kubernetes可以支持三种service模式:

第一种为NodePort,是一种简单粗暴地将Node上的端口,一对一映射到Node内部的Pod上的方式。这种方式的问题在于,如果一个node上有两个pod,监听同样的端口,会造成冲突。

第二种是ClusterIP。这种方式实际上类似负载均衡的VIP。

实际上,ClusterIP方式下,对指向clusterip这个地址的请求,分发到各个pod的实现,是由kube-proxy实现的。

我们翻开厚厚的kubernetes文档,会发现,kube-proxy本质上是一个监视器,它监视pod的创建和销毁,并调用iptables或ipvs进行转发。

如下图:

如果我们有一组容器pod,具有标签MyApp,监听9376端口,kube-proxy只负责控制iptables或ipvs对请求进行转发。

当然,ipvs比iptables有更高的转发效率,LB算法也更丰富,只是要付出部署的代价。

但,clusterip仅限于在容器环境内部使用。如果我们需要将容器服务对容器环境外部,如互联网或公司企业内网开放,我们还需要第三种模式——

第三种是LoadBalancer。这种方式可以对接第三方的负载均衡。我们知道,无论是ipvs还是iptables,它的转发都需要消耗node上宿主机的CPU资源。而第三方专用负载均衡硬件,也恰好能够用专业的硬件实现专业的功能。正可谓:他山之石可以攻玉。

敬请期待下期详解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档