在 Kubernetes 中,Endpoint 是一种 API 对象,它用于表示集群内某个 Service 的具体网络地址。换句话说,它连接到一组由 Service 选择的 Pod,从而使它们能够提供服务。每个 Endpoint 对象都与相应的 Service 对象具有相同的名称,并属于相同的命名空间。
每个 Endpoint 对象都会包含一组 Pod 的 IP 地址和端口,作为 Service 的后端。当 Service 被定义时,Kubernetes 控制器会监视匹配 Service 选择器的 Pod,并自动更新 Endpoint 对象。这样,当新的 Pod 被创建或现有的 Pod 被删除时,Endpoint 对象将会自动得到更新。
Endpoint 对象的定义形态如下:
kind: Endpoints
apiVersion: v1
metadata:
name: my-service
subsets:
- addresses:
- ip: 192.0.2.42
ports:
- port: 9376
其中,metadata.name
是 Endpoint 的名称,subsets.addresses.ip
是后端 Pod 的 IP 地址,subsets.ports.port
是要暴露的端口。
然而,请注意,除非有特别的需求,否则通常不需要手动创建或管理 Endpoints 对象。当你使用 Service 来选择 Pod 时,Endpoints 对象会自动被创建和管理。也就是说,只要 Service 选择器能够匹配到 Pod,Kubernetes 就会自动将匹配的 Pod 的 IP 地址和端口添加到 Endpoints 对象中。
总的来说,Endpoint 是 Kubernetes Service 的一个重要组成部分,负责维护一组提供服务的 Pod 的 IP 地址和端口信息,使得 Service 能够通过网络将请求路由到正确的 Pod。
例如:
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
labels:
app: nginx-po
spec:
ports:
- port: 80
targetPort: 80
name: web
selector: # 匹配哪些pod会被该service代理
app: nginx-po #所有匹配到这些标签的pod都可以通过该service进行访问
type: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx"
replicas: 2
selector:
matchLabels:
app: nginx-po
template:
metadata:
labels:
app: nginx-po
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
name: web
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate
这个yaml会创建一个 service nginx-svc,它所对应的selector选择器是nginx-po,也就是说所有label为 nginx-po 的pod的端口就会被自动加入到endpoint中。
从下图可以看到所有label为nginx-po的pod的ip都被加入到和service同名的endpoint中。
将一个新创建的pod加入到已有的endpoint中去
需要将新创建的pod的labels设置成已有svc一样,port端口也要和已有endpoint一样
注意:如果只设置了相同的label,而没有设置port,这种情况下endpoint是识别不到的。
一个已有的svc关联的endpoint
newpod.yal文章来源:https://www.toymoban.com/news/detail-740772.html
apiVersion: v1
kind: Pod
metadata:
labels:
app: gate
name: toolbox-0
namespace: default
spec:
containers:
- image: toolbox:v1.0.0
imagePullPolicy: IfNotPresent
name: toolbox
ports:
- containerPort: 10000
name: test_port
protocol: TCP
创建pod之后,可以看到endpoints新增了一个ip:port信息。
文章来源地址https://www.toymoban.com/news/detail-740772.html
到了这里,关于k8s:endpoint的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!