k8s集群中创建一个名为hello的service,就会生成一个同名的endpoint对象,ENDPOINTS就是service关联的pod的ip地址和端口, 即动态存储pod ip地址和端口对应关系的list,

Kubernetes在创建Service时,根据Service的标签选择器(Label Selector)来查找Pod,据此创建与Service同名的EndPoints对象。当Pod的地址发生变化时,EndPoints也随之变化。Service接收到请求时,就能通过EndPoints找到请求转发的目标地址

endpoint不可以用来固定podip,endpoint是随着pod的改变而改变,而非pod随着endpoint的改变而改变

手动创建 Endpoint

创建service: 略

创建一个 endpoint.yaml 文件,内容如下(注意替换ip为你容器访问ip(pod ip)):

1
2
3
4
5
6
7
8
9
10
apiVersion: v1
kind: Endpoints
metadata:
name: nginx
subsets:
- addresses:
- ip: 172.17.0.2
hostName: nginx
ports:
- port: 80

然后应用 yaml:

1
kubectl apply -f endpoint.yaml

查看 endpoint:

1
kubectl get endpoints

然后访问 Service 的 ip:

1
curl 10.99.142.242:6666

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

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