Kubernetes-服務連接和暴露(endpoints資源)


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 svc 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層多。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM