当前位置:主页 > 产品展示 > 天平仪器系列 >

产品展示

Products Classification

万博体育maxbextx官网首页|从零开始学K8s: 26.毗连外部服务

  • 产品时间:2022-07-19 07:25
  • 价       格:

简要描述:之前我们讨论的服务在集群中是由一个或多个pod在后端支撑。可是有时候我们也希望使用Kubernetes的Service特性将外部的服务袒露给Kubernetes集群内部,让这个Service将毗连重定向到外部服务的IP和端口,而不是重定向到集群中的pod。通过这种方式,我们可以使用服务负载平衡和服务发现的功效。集群中运行的客户端pod可以像毗连内部服务一样毗连到外部服务。 首先来相识什么是Endpoints。...

详细介绍
本文摘要:之前我们讨论的服务在集群中是由一个或多个pod在后端支撑。可是有时候我们也希望使用Kubernetes的Service特性将外部的服务袒露给Kubernetes集群内部,让这个Service将毗连重定向到外部服务的IP和端口,而不是重定向到集群中的pod。通过这种方式,我们可以使用服务负载平衡和服务发现的功效。集群中运行的客户端pod可以像毗连内部服务一样毗连到外部服务。 首先来相识什么是Endpoints。

万博体育maxbextx官网首页

之前我们讨论的服务在集群中是由一个或多个pod在后端支撑。可是有时候我们也希望使用Kubernetes的Service特性将外部的服务袒露给Kubernetes集群内部,让这个Service将毗连重定向到外部服务的IP和端口,而不是重定向到集群中的pod。通过这种方式,我们可以使用服务负载平衡和服务发现的功效。集群中运行的客户端pod可以像毗连内部服务一样毗连到外部服务。

首先来相识什么是Endpoints。什么是服务Endpoints服务与pod不是直接相连的,而是在它们之间有一个被称为Endpoints的资源。

可以使用kubectl desribe检察:kubectl describe svc test-svc上图中Selector:app=test1表现服务的pod标签选择器,用于建立Endpoints列表。Endpoints:172.18.0.10:8080,172.18.0.8:8080,172.18.0.9:8080代表pod列表,其中包罗每个pod的IP和端口,表现该服务的所有endpoint。Endpoints资源就是袒露一个服务的IP地址和端口的列表,与其他Kubernetes资源类似,可以使用kubectl get显示它的基本信息:kubectl get endpoints test-svc虽然在服务的spec中界说了pod选择器,可是在重定向传入的毗连时不会直接使用它。

万博max官网手机版登录

Pod选择器是用于构建一个IP和端口列表,然后将其存储在Endpoints资源中。当一个客户端毗连服务时,服务署理就会从这些IP和端口对中选择一个,然后将传入的毗连重定向到监听这个地址的服务器。

手动设置Endpoint在Kubernetes中,Endpoints和service是两个独立的资源。将服务的Endpoints与服务自己解耦合使我们能够手动设置和更新它们。如果建立一个没有指定pod选择器的服务,Kubernetes就不会为我们建立Endpoints资源,因为没有了pod选择器,Kubernetes就没法知道服务中应该包罗哪些pod。

如果要建立一个服务并希望手动设置endpoints,我们需要建立一个Service和一个Endpoints资源。首先建立一个不指定选择器的服务:apiVersion: v1kind: Servicemetadata:name: external-servicespec:ports:- port: 80在上面的YAML文件中,我们界说了一个名为external-service的服务,在端口80上吸收传入的毗连,而且没有指定pod选择器。然后为这个服务建立一个Endpoints资源。需要注意的是,Endpoints是一个独立的资源,不是服务的一个属性。

由于我们建立了一个不带pod选择器的服务,所以相应的Endpoints资源就不会被自动建立,因此需要手动建立它:apiVersion: v1kind: Endpointsmetadata:name: external-servicesubsets:- addresses: - ip: 11.11.11.11 - ip: 22.22.22.22 ports: - port: 80上面界说的Endpoints工具需要与服务具有相同的名称,而且包罗该服务的目的IP地址和端口列表。addresses属性界说了endpoints的所有IP,服务会将传入的毗连重定向到这些IP地址;ports属性界说了Endpoints的目的端口。当建立好这个Service和Endpoints资源后,就可以正常使用这个服务,就像使用具有pod选择器的服务一样。如果我们在这个服务被建立之后建立了一个容器,那么它会包罗该服务的情况变量,而且所有流入到IP:Port对的毗连都市在该服务的endpoints之间被负载平衡处置惩罚。

如下图所示,三个pod消费一个带有两个外部endpoints的服务:如果决议将外部服务迁移到Kubernetes集群中的pod中,我们可以为这个服务添加一个pod选择器,从而对Endpoints举行自动治理。反之也是一样——将选择器从服务中移除,Kubernetes将停止更新服务的Endpoints。这意味着一个服务的IP地址可以保持稳定,而服务的实际实现已经改变了。

万博max官网手机版登录

为外部服务建立别名除了通过手动设置服务的Endpoints来袒露外部服务之外,另有一种更简朴的方法,就是通过服务的完全限定域名(FQDN)来引用一个外部服务。建立一个ExternalName服务如果要建立一个服务资源作为外部服务的别名(类似CNAME),我们需要在建立服务资源时指定type属性值为ExternalName。例如,我们假定有一个公共API: api.somecompany.com,可以按如下方式界说一个服务指向这个API:apiVersion: v1kind: Servicemetadata:name: external-servicespec:type: ExternalNameexternalName: api.somecompany.comports:- port: 80上面的YAML界说中,“type: ExternalName”表现服务类型被设定为ExternalName。

“externalName: api.somecompany.com”表现服务实际的FQDN。这个服务被建立后,pod可以通过external-service.default.svc.cluster.local域名(或者external-service)毗连到外部服务,而不是使用服务实际的FQDN。

这种方式对消费该服务的那些pod隐藏了实际的服务名称以及地址,使我们能够在任何时候修改服务界说信息使其指向到差别的服务,只需要修改externalName属性或者将type改回ClusterIP且为该服务建立一个Endpoints工具——手动建立或者通过在服务中指定标签选择器使其自动建立。ExternalName仅在DNS层面实现——为服务建立一个简朴的CNAME DNS记载。

因此毗连这个服务的客户端将直接毗连到外部服务,完全跳过了服务署理。由于这个原因,这种类型的服务甚至都不会获得集群IP。CNAME记载指向FQDN,而不是数字IP地址。

如果以为本文对您有资助,接待关注我的头条号订阅更新,我会不停推出更多学习教程、视频以及偏实战的文章!。


本文关键词:万博,体育,maxbextx,官网,首页,从,零,开始,学,K8s,万博max官网手机版登录

本文来源:万博体育maxbextx官网首页-www.wavejet.com.cn

 


产品咨询

留言框

  • 产品:

  • 留言内容:

  • 您的单位:

  • 您的姓名:

  • 联系电话:

  • 常用邮箱:

  • 详细地址:


推荐产品

Copyright © 2001-2022 www.wavejet.com.cn. 万博体育maxbextx官网首页科技 版权所有 备案号:ICP备82133426号-3

在线客服 联系方式 二维码

服务热线

074-71060756

扫一扫,关注我们