Kubernetes-服务连接和暴露(十二)

1 endpoint

1.1 endpoint介绍

  服务和pod不是直接连接,而是通过Endpoint资源进行连通。endpoint资源是暴露一个服务的ip地m F X 2 B j K }址和port的列表。
  选择器用于构建ip和port列表,然后存储^ u w I )在endpoint资源中。当客户端连接到服务时,服务代理选择这些列表中的ip和port对中的一个,并将传入连接重定向到在该位置监听的d J d _ ~ ] C d z服务器
  endpoint是一个单独的资源并不是服务的属性,endpoint的名称必须和服务的名称相匹配。

1.2 endpoint使用

1.2.1 创建

为没有选择器的服务创建endpoint资源
$ kubectl create -f endpoint.yml
} G [ $ U 2 endpoint对象需要与服务相同的名称,并包含该服务的目标ip和port列表,服务和endpoint资源都发布到服务器后,这样服务就可以像具有pod选择器那样的服务正常使用。

Kubernetes-服务连接和暴露(十二)

by k8s in action

1.2.2 查看

查看6 J u E # e服务的Endpoint
$ kubectl describe srv service_name
通过kubectl describe可以看到Endpoints字段。

查看endpoints信息
$ kubectl get endpoints endpoint_name

by k8s in action

1.3 连接集群外部服务

1.3.1 通过endpoint配置外部服务

  将pod关联到外部具有两个endpoint的服务上。

Kubernetes-服务连接和暴露(十二)

by k8s in action

1.3.2 创建ExternalName类型的服务

  除了手动配置服务的endpoint来代替公开外部服务方法,还可以通过完全限定域名(. I 0 Q # ] )FQDN)访问外部服务——创建ExternalName类型的服务。

Kubernetes-服务连接和暴露(十二)

by k8s in action

Ez 6 ] & # } K ?xternalName类型的服务创建后,pod可以通过external-service.default.svc.cluster.local域名连接到外部服务,或者通过externale-service。当需要指向其他外部服务时,只需要修改spec.externalName的值即可。

2 外部访问服务

2.1 介绍

  外部客户端如何访问集群内服务或者说集群如何向外部公开某些服务7 ^ O呢?
3种方式:
1)将服务的类型设9 n W ~置为NodePort:每个集群接节点都会在节点上O b O 9 b - ;打开一个端口,对于NodePort服务,每个集群节点在节点本身打开一个端T w [口,这也是为何叫NodePort的原因所在,把将在该端口上接收到的流量重定向到基础服务。该服务仅在内部集群ip和port上才可以方阿文,也可以通过所有节点上的专用poro & At访问。
2)将服务的类型设置为LoadBalance:这是NodePoU D 5 c Irt的一种扩展,服务可以通过一个专用的负载均衡器来访问。负载均衡器将流量重定向7 w H # f _ - Z $到跨所有节点的节点端口,客户端通过负载均衡器的ip连接到服务。
3)创建一S H H v D个Ingre* 8 w dss资源:通过一个ip地址公开多个服务,运行在HTTP层(网络协议的第7层),提供的功能比第4层多。