当前位置:首页 » 《随便一记》 » 正文

【K8S系列】第十二讲:Service进阶

16 人参与  2023年05月08日 08:17  分类 : 《随便一记》  评论

点击全文阅读


目录

​编辑

序言

1.Service介绍

1.1 什么是Service

1.2 Service 类型

1.2.1 NodePort

1.2.2 LoadBalancer

1.2.3 ExternalName

1.2.4 ClusterIP

2.yaml名词解释

 3.投票 

序言

当发现自己的才华撑不起野心时,就安静下来学习吧

三言两语,不如细心探索

今天学习一下Service相关内容,希望此文,能帮助读者对 k8s Service有进一步的认识

文章标记颜色说明:

黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点

1.Service介绍

1.1 什么是Service

Kubernetes Service 定义了这样一种抽象:

一个 Pod 的逻辑分组一种可以访问这组Pod的策略

也可以理解为微服务。 这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector实现的。

Service 通过标签来选取服务后端,一般配合

Replication ControllerDeployment

从而保证后端容器的正常运行。

这些匹配标签的 Pod IP 和端口列表组成 endpoints,由 kube-proxy 负责将服务 IP 负载均衡到这些 endpoints 上。

如下图,展示的是Service与Pod、RC的关系

总结:

k8s的Service定义了一个服务的访问入口地址。

前端的应用通过这个入口地址访问其背后的一组由Pod副本组成的集群实例,来自外部的访问请求被负载均衡到后端的各个容器应用上。 

1.2 Service 类型

Service 类型有四种,总接下来:

NodePortLoadBalancerExternalNameClusterIP

在定义Service的时候可以指定一个需要的类型的Service。

如果不指定,则默认是ClusterIP类型。

1.2.1 NodePort

只对外部可见

通过每个 Node 节点上的 IP 和静态端口(NodePort)暴露服务。

NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。

通过请求可以从集群的外部访问一个 NodePort 服务

主要适合:集群外业务访问的场景。

如下:

apiVersion: v1kind: Servicemetadata:  name: test-servicespec:  selector:    app: test  type: NodePort # 指定service 类型  ports:  - protocol: TCP    port: 80    targetPort: 80    name: test-http    nodePort: 30000 # 范围:30000-32767

设置 type 的值为 "NodePort",Kubernetes master 将从给定的配置范围内(默认:30000-32767)分配端口

每个 Node 将从该端口(每个 Node 上的同一端口)代理到 Service。

该端口将通过 Service 的 spec.ports[*].nodePort 字段被指定,这里指定的是30000

如果不指定的话会自动生成一个端口。

1.2.2 LoadBalancer

使用云提供商的负载局衡器,可以向外部暴露服务。

外部的负载均衡器可以路由到 NodePort 服务和 ClusterIP 服务,

需要结合具体的云厂商进行操作

1.2.3 ExternalName

ExternalName 是 Service 的特例

没有 selector没有定义任何的端口和 Endpoint

对于运行在集群外部的服务,它通过返回该外部服务的别名这种方式来提供服务。

示例:

kind: ServiceapiVersion: v1metadata:  name: test-service  namespace: testspec:  type: ExternalName # 类型  externalName: test.service.com

1.2.4 ClusterIP

只对内部可见,外部无法访问

Service的IP地址,通过集群的内部 IP 暴露服务,服务只能够在kubernetes集群内部可以访问,此为虚拟IP地址

是默认的ServiceType。

kubectl -n test get Service # 即可看到ClusterIP

test 是命名空间

2.yaml名词解释

以下为yaml名词解释:

apiVersion: v1 # 版本kind: Service # 类型metadata: #元数据 类型string  name: test #Service名称 类型string  namespace: test #命名空间,不指定时默认为default命名空间  labels: #自定义标签属性列表 类型string         - name: string   annotations: #自定义注解属性列表        - name: stringspec: #详细描述 类型list[]  selector: [] #Label Selector配置,选择具有指定label标签的pod作为管理范围  type: string #service的类型,指定service的访问方式,默认ClusterIP               #ClusterIP:虚拟的服务ip地址,用于k8s集群内部的pod访问,在Node上kube-porxy通过设置的iptables规则进行转发               #NodePort:使用宿主机端口,能够访问各Node的外部客户端通过Node的IP和端口就能访问服务器               #LoadBalancer:使用外部负载均衡器完成到服务器的负载分发,               #需要在spec.status.loadBalancer字段指定外部负载均衡服务器的IP,并同时定义nodePort和clusterIP用于公有云环境。  clusterIP: string  #虚拟服务IP地址,当type=ClusterIP时,如不指定,则系统会自动进行分配,也可以手动指定。当type=loadBalancer,需要指定  sessionAffinity: string  #是否支持session,可选值为ClietIP,默认值为空,ClientIP表示将同一个客户端(根据客户端IP地址决定)的访问请求都转发到同一个后端Pod  ports: #service需要暴露的端口列表      - name: string #端口名称 类型string    protocol: TCP  #端口协议,支持TCP或UDP,默认TCP 类型string     port: 80 #服务监听的端口号 类型int     targetPort: 8080 #需要转发到后端的端口号 类型int     nodePort: 8080 #当type=NodePort时,指定映射到物理机的端口号 类型:int  status: #当type=LoadBalancer时,设置外部负载均衡的地址,用于公有云环境        loadBalancer: #外部负载均衡器          ingress: #外部负载均衡器       ip: string #外部负载均衡器的IP地址      hostname: string #外部负载均衡器的机主机

 3.投票


点击全文阅读


本文链接:http://zhangshiyu.com/post/61471.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 京圈佛子破戒后,我改嫁京圈纨绔(沈墨渊,白晶晶)
  • 前世被闺蜜害死,重生后我让她从太子妃变疯女苏婉儿,清歌完本_前世被闺蜜害死,重生后我让她从太子妃变疯女(苏婉儿,清歌)
  • 全书浏览七零军嫂太彪悍,带三宝上军区离婚(沈清落,陈桂花,陆有为)_七零军嫂太彪悍,带三宝上军区离婚(沈清落,陈桂花,陆有为)全书结局
  • 今天也没变成昨天(周扬陈默)全书免费_(周扬陈默)今天也没变成昨天后续(周扬陈默)
  • 重生后,秦总非要父以子贵(许沐晴,秦越泽)全书浏览_重生后,秦总非要父以子贵全书浏览
  • 他嫌弃我喝两块钱豆浆上不了台面,我结婚后他又哭又闹全书万照,白青青在线
  • 昭然若梦前尘烬列表_昭然若梦前尘烬(温昭然方池雲)
  • 导师借我股票账号,我倒欠五十万(孟潇潇,宁薇)_导师借我股票账号,我倒欠五十万孟潇潇,宁薇
  • 拒绝把外卖券给舍友,竹马送我到迪拜捡垃圾(周钰泽,蒋清清,思源)全书浏览_拒绝把外卖券给舍友,竹马送我到迪拜捡垃圾全书浏览
  • 我的人生,你已出局(程森凌古楚文)_我的人生,你已出局程森凌古楚文
  • 穿书成病娇女配,睁眼就签下离婚协议书(朱楼)_穿书成病娇女配,睁眼就签下离婚协议书
  • 老婆逼我给白月光捐肾,我死后她悔疯了(宋逸晨沈墨白)全书浏览_老婆逼我给白月光捐肾,我死后她悔疯了全书浏览

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1