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集群内服务的动态发现与流量管理。