CentOS下K8s服務發現主要通過以下機制實現:
- DNS服務發現:
- 內置CoreDNS(或kube-dns),為Service生成DNS記錄,格式為
<service-name>.<namespace>.svc.cluster.local
,Pod可通過域名直接訪問服務。
- 環境變量注入:
- Pod啟動時,kubelet將集群內Service的IP和端口以環境變量形式注入(如
MY_SERVICE_SERVICE_HOST
),應用可通過讀取環境變量獲取服務地址。
- Service與Endpoints:
- Service通過標簽選擇器關聯Pod,Endpoints記錄Pod的IP和端口,kube-proxy監聽其變化并更新流量轉發規則。
- kube-proxy組件:
- 基于iptables/IPVS實現負載均衡,將Service流量轉發到后端Pod,支持ClusterIP、NodePort、LoadBalancer等Service類型。
以上機制共同實現K8s集群內服務的動態發現與流量管理。