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

1 endpoint

1.1 endpoint介绍

  服务和pod不是直接连接,而是通过Endpoint资源进行连通。endpoint资源是暴露一个服务的ip地址和port的列表。
  选择器用于构建ip和port列表,然后存储在endpoint资源中。当客户端连接到服务时,服务代理选择这些列表中的ip和port对中的一个,并将传入连接重定向到在该位置监听的服务器。
  endpoint是一个单独的资源并不是服务的属性,endpoint的名称必须和服务的名称相匹配。

1.2 endpoint使用

1.2.1 创建

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

endpoint yml 模板

by k8s in action

1.2.2 查看

查看服务的Endpoint
$ kubectl describe srv service_name
通过kubectl describe可以看到Endpoints字段。

查看endpoints信息
$ kubectl get endpoints endpoint_name

endpoints信息

by k8s in action

1.3 连接集群外部服务

1.3.1 通过endpoint配置外部服务

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


pod和集群外服务的连接

by k8s in action

1.3.2 创建ExternalName类型的服务

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


ExternalName类型的服务

by k8s in action

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

2 外部访问服务

2.1 介绍

  外部客户端如何访问集群内服务或者说集群如何向外部公开某些服务呢?
3种方式:
1)将服务的类型设置为NodePort:每个集群接节点都会在节点上打开一个端口,对于NodePort服务,每个集群节点在节点本身打开一个端口,这也是为何叫NodePort的原因所在,把将在该端口上接收到的流量重定向到基础服务。该服务仅在内部集群ip和port上才可以方阿文,也可以通过所有节点上的专用port访问。
2)将服务的类型设置为LoadBalance:这是NodePort的一种扩展,服务可以通过一个专用的负载均衡器来访问。负载均衡器将流量重定向到跨所有节点的节点端口,客户端通过负载均衡器的ip连接到服务。
3)创建一个Ingress资源:通过一个ip地址公开多个服务,运行在HTTP层(网络协议的第7层),提供的功能比第4层多。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubern...
    devabel阅读 6,411评论 0 13
  • kubernetes Service 参考文献:https://blog.csdn.net/watermelonb...
    码二哥阅读 2,633评论 1 5
  • 1. 组件版本和配置策略 组件版本: Kubernetes 1.10.4 Docker 18.03.1-ce Et...
    Anson前行阅读 5,864评论 0 11
  • 1. 介绍 Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。 K...
    爱学习的ren阅读 1,291评论 0 0
  • 文/云瑟 1 这是个不大的学校,操场上长满了草,跑道不是塑胶的,跑起来就会荡起迷雾一般的灰尘,弄脏小锦的裤腿。 但...
    两只婉阅读 598评论 1 7