【K8S系列】第十二讲:Service进阶
创始人
2024-04-26 17:52:08
0

目录

​编辑

序言

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 Controller
  • Deployment

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

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

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

总结:

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

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

1.2 Service 类型

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

  1. NodePort
  2. LoadBalancer
  3. ExternalName
  4. ClusterIP

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

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

1.2.1 NodePort

只对外部可见

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

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

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

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

如下:

apiVersion: v1
kind: Service
metadata:name: test-service
spec:selector:app: testtype: NodePort # 指定service 类型ports:- protocol: TCPport: 80targetPort: 80name: test-httpnodePort: 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: Service
apiVersion: v1
metadata:name: test-servicenamespace: test
spec: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: #元数据 类型stringname: test #Service名称 类型stringnamespace: test #命名空间,不指定时默认为default命名空间labels: #自定义标签属性列表 类型string     - name: string annotations: #自定义注解属性列表    - name: string
spec: #详细描述 类型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地址决定)的访问请求都转发到同一个后端Podports: #service需要暴露的端口列表    - name: string #端口名称 类型stringprotocol: TCP  #端口协议,支持TCP或UDP,默认TCP 类型stringport: 80 #服务监听的端口号 类型inttargetPort: 8080 #需要转发到后端的端口号 类型intnodePort: 8080 #当type=NodePort时,指定映射到物理机的端口号 类型:intstatus: #当type=LoadBalancer时,设置外部负载均衡的地址,用于公有云环境    loadBalancer: #外部负载均衡器    ingress: #外部负载均衡器 ip: string #外部负载均衡器的IP地址hostname: string #外部负载均衡器的机主机

 3.投票

 

 

相关内容

热门资讯

安卓系统自带的网页,功能与特色... 你有没有发现,每次打开安卓手机,那熟悉的系统界面里总有一个默默无闻的小家伙——安卓系统自带的网页浏览...
美咖云系统安卓版,开启智能生活... 你有没有发现,最近手机上多了一个叫“美咖云系统安卓版”的小家伙?它就像一个魔法师,轻轻一点,就能让你...
安卓系统推荐最好的手机,盘点性... 你有没有想过,拥有一部性能卓越的手机,就像是拥有了移动的宝藏库?在这个信息爆炸的时代,一部好手机不仅...
安卓11系统能精简吗,释放潜能 你有没有发现,随着手机越来越智能,系统也越来越庞大?安卓11系统,这个最新的操作系统,是不是也让你觉...
安卓自动重启系统软件,揭秘原因... 手机突然自动重启,是不是感觉整个人都不好了?别急,今天就来和你聊聊这个让人头疼的安卓自动重启系统软件...
苹果手机x刷安卓系统,探索安卓... 你有没有想过,你的苹果手机X竟然也能刷上安卓系统?是的,你没听错,就是那个一直以来都和我们苹果手机X...
安卓系统智商低吗,智商低下的真... 你有没有想过,为什么安卓系统的智商总被调侃得好像有点低呢?是不是觉得它总是慢吞吞的,有时候还犯点小错...
安卓系统手机联系人,揭秘你的社... 你有没有发现,手机里的联系人列表就像是一个小小的社交圈呢?里面藏着我们的亲朋好友、工作伙伴,甚至还有...
安卓系统免费铃声下载,打造个性... 手机里那首老掉牙的铃声是不是让你觉得有点out了呢?别急,今天就来给你支个招,让你轻松给安卓手机换上...
安卓系统用哪个桌面好,打造个性... 你有没有发现,手机桌面可是我们每天都要面对的“脸面”呢?换一个好看的桌面,心情都能跟着好起来。那么,...
虚拟大师是安卓10系统,功能与... 你知道吗?最近在手机圈里,有个新玩意儿引起了不小的轰动,那就是虚拟大师!而且,更让人惊喜的是,这个虚...
安卓系统与苹果优缺点,系统优缺... 说到手机操作系统,安卓和苹果绝对是两大巨头,它们各有各的特色,就像两道不同的美味佳肴,让人难以抉择。...
安卓win双系统主板,融合与创... 你有没有想过,一台电脑如果既能流畅运行安卓系统,又能轻松驾驭Windows系统,那该有多爽啊?没错,...
安卓系统可精简软件,轻松提升手... 你有没有发现,手机里的安卓系统越来越庞大,软件也越装越多,有时候感觉手机就像个“大肚子”,不仅运行速...
安卓系统基于linux的代码,... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、办公的安卓系统,其实背后有着一套复杂的基于Linux的代...
苹果和安卓的拍照系统,谁更胜一... 你有没有发现,现在手机拍照已经成为我们生活中不可或缺的一部分呢?无论是记录生活的点滴,还是捕捉美丽的...
苹果和安卓系统不同吗,系统差异... 你有没有想过,为什么你的手机里装的是苹果的iOS系统,而朋友的手机却是安卓系统呢?这两种系统,看似都...
安卓系统有多少级,揭秘其多级架... 你有没有想过,那个陪伴我们日常生活的安卓系统,它其实有着丰富的层级结构呢?没错,就是那个让我们的手机...
华为鸿蒙系统与安卓的,技术融合... 你知道吗?最近科技圈可是炸开了锅,华为鸿蒙系统与安卓的较量成为了大家热议的话题。这不,今天我就来给你...
什么安卓手机是苹果系统,搭载苹... 你有没有想过,为什么有些人宁愿花大价钱买苹果手机,而有些人却对安卓手机情有独钟呢?其实,这个问题背后...