Endpoints

Kubernetes 中的 Service,它定义了一组 Pods 的逻辑集合和一个用于访问它们的策略。一个 Service 的目标 Pod 集合通常是由 Label Selector 来决定的。
Endpoints 是一组实际服务的端点集合。一个 Endpoint 是一个可被访问的服务端点,即一个状态为 running 的 pod 的可访问端点。一般 Pod 都不是一个独立存在,所以一组 Pod 的端点合在一起称为 EndPoints。只有被 Service Selector 匹配选中并且状态为 Running 的才会被加入到和 Service 同名的 Endpoints 中。

Endpoints结构示意图
Endpoints结构示意图

自动关联体系(配置 selector)

Endpoints手动关联体系流程图
Endpoints手动关联体系流程图

手动关联体系(无配置 selector)

Endpoints自动关联体系流程图
Endpoints自动关联体系流程图

实验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: v1
kind: Service
metadata:
name: nginx-noselectt
spec:
ports:
- protocol: TCP
port: 6666
targetPort: 80

---

apiVersion: v1
kind: Endpoints
metadata:
name: nginx-noselectt
subsets:
- addresses:
- ip: 192.168.66.12
ports:
- port: 80
1
$ docker run -itd -p 80:80 --net host wangyanglinux/myapp:v1

如果 Endpoint 需要跟踪多个 ip (多个 pod 或者容器或者应用),可以使用

1
2
3
4
5
- addresses:
' - ip: 172.17.0.2
- ip: 172.17.0.3
- ip: 172.17.0.4'
... ...