使用 Endpoints
什么是 Endpoints ?
简单来说,Endpoints 表示一个 Service 对应的所有 Pod 副本的访问地址,而 Endpoints Controller 就是负责生成和维护所有 Endpoints 对象的控制器。它负责监听 Service 、和对应的 Pod 副本的变化,如果检测到 Service 被删除,则删除和该 Service 同名的 Endpoints 对象。如果检测到新的 Service 被创建或者修改则根据该 Service 信息获得相关的 Pod 列表,然后创建或者更新 Service 对应的 Endpoints 对象。
endpoints.yaml
:
kind: Endpoints
apiVersion: v1
metadata:
name: mysql-dev
namespace: development
subsets:
- addresses:
- ip: 192.168.31.11
ports:
- port: 3306
service.yaml
:
apiVersion: v1
kind: Service
metadata:
name: mysql-dev
namespace: development
spec:
ports:
- port: 3306
targetPort: 3306
protocol: TCP
kubectl apply -f endpoints.yaml
kubectl apply -f service.yaml
如果需要查看该 Service 的详情,包括 Endpoints :
kubectl describe svc mysql-dev -n development
那么在应用的配置文件里,可以直接将 IP 地址或域名替换为 mysql-dev
。