Endpoints是指一個服務的端點,當你的服務需要訪問外部資源時,而你又不想把外部地址配置到代碼里,這時,你可以在k8s里建立一個kind為Endpoints的服務,它可以幫助你的程序解析這個外部地址。
- 聲明一個elasticsearch-1的服務,它映射到一個外部的地址192.168.11.13的9200端口
kind: Service
apiVersion: v1
metadata:
name: elasticsearch-1
spec:
clusterIP: None
---
kind: Endpoints
apiVersion: v1
metadata:
name: elasticsearch-1
subsets:
- addresses:
- ip: 192.168.11.13
ports:
- port: 9200
- 而如果你的外部服務也是一個k8s服務,這時也可以通過ExternalName類型也實現這種映射關系,比如在跨namespace訪問資源時,你就可以通過ExternalName來實現一種類似快捷方式的功能。
例如,以下 Service 定義將 prod 名稱空間中的 my-service 服務映射到 my.database.example.com
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: prod
spec:
type: ExternalName
externalName: my.database.example.com
說明: ExternalName 接受 IPv4 地址字符串,但作為包含數字的 DNS 名稱,而不是 IP 地址。 類似於 IPv4 地址的外部名稱不能由 CoreDNS 或 ingress-nginx 解析,因為外部名稱旨在指定規范的 DNS 名稱。 要對 IP 地址進行硬編碼,請考慮使用 headless Services。