Kubernetes详解(二十九)——Service资源详解

今天继续给大家介绍Linux运维相关知识,本文主要内容是Service资源详解。

一、Service资源概述

在Kubernetes集群中,Pod资源对象真正提供服务。然而,Pod对象的服务提供还存在一些问题。其一是在Kubernetes集群中,Pod对象是存在声明周期的,Pod对象在出现故障或者重启后,其新生成的Pod对象与原来的Pod对象的IP地址不同,这就给客户端的访问造成了很大的困难;其二在于Pod对象的IP地址仅仅可以在Kubernetes集群内部访问,当Kubernetes集群外部的客户端想要访问Pod对象时并不被允许。
基于此,Kubernetes提出了Service的概念,主要就是用于弥补Pod对象在服务提供上存在的不足。

二、Service资源实现原理

Service资源的实现,首先基于标签选择器将一组Pod定义为一个逻辑组合,并将自己的IP地址和端口调度设置为代理,将客户端的请求重新发送给Pod对象上。Service资源对象向客户端隐藏了Pod资源对象的信息,在客户端看来其服务请求由Service资源对象来进行处理。
Service对象会通过API Server持续监视Pod对象,跟踪Pod对象的变动。这样,当Pod对象本身发生变动时,Service对象能够正确将请求分发至新Pod对象的IP地址上。其实,Service对象本身并不直接链接至Pod对象上,而是通过一个中间层——Endpoints资源对象来对Pod对象进行监视。Endpoints对象本身是一个由IP和端口组成的列表,这些IP和端口的列表来源于Service资源对象通过标签匹配器匹配到的Pod资源。当Service资源对象被创建时,其对应的Endpoints对象会被一并创建。
Service资源对象示意图如下所示:
在这里插入图片描述

三、Service资源对象类型

Kubernetes集群的Service资源对象有以下四种类型:
1、ClusterIP
ClusterIP类型的Service对象通过集群内部IP地址来暴露服务,该地址仅可以在Kubernetes集群内部的设备上访问,无法被集群外部的客户端访问。
2、NodePort
NodePort通过每个Node上的IP和端口来暴露服务,这样类型的Service资源就可以满足集群外部客户端的而访问。NodePort类型的Service资源也会拥有一个集群内部的IP地址,当有集群外部客户端访问时,客户端先访问的是Node节点的IP地址,然后Service资源将其传送给Service内部的IP地址,然后再将其传送给Pod资源对象的IP地址。
3、LoadBalancer
LoadBalancer构件在NodePort之上,同时创建一个负载均衡器,路由到ClusterIP。
4、ExternalName
ExternalName是一种及其特殊的Service资源。其通过返回CNAME和它的值,可以将服务映射到ExternalName字段的内容。这种类型的Service并非是Kubernetes集群所提供的,而是把集群外部某项服务以DNS CNAME的方式映射到集群内部,从而实现让集群内部的Pod资源访问该集群外部资源。这种类型的Service资源并没有ClusterIP,没有NodePort,没有标签选择器来选择Pod资源,也没有Endpoints资源对象。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值