$kubectl get endpoints my-service
NAME ENDPOINTS AGE
my-service 172.21.21.2:80,172.21.38.56:80,172.21.39.160:80 63d
关于 * 外部 * 终点: 创建不带标签选择器的服务:
apiVersion: v1
kind: Service
metadata:
name: my-service #<------ Should match the name of Endpoints object
spec:
ports:
- protocol: TCP
port: 8080
targetPort: 9376
apiVersion: v1
kind: Endpoints
metadata:
name: my-service #<------ Should match the name of Service
subsets:
- addresses:
- ip: 192.0.2.45
ports:
- port: 9376
7条答案
按热度按时间vfh0ocws1#
在glossary中确实没有端点条目,这是一个定义良好的Kubernetes网络概念或抽象。由于它具有次要性质,因此通常不会直接操作它。定义了一个核心资源Endpoint,命令行也支持它:
你可以看到它实际上是什么:通常,您会让服务管理端点(服务将流量路由到的每个pod一个EP),但如果您有需要的用例,您也可以手动管理它们。
ldfqzlk82#
pod通过终结点向服务公开自己。如果你是pod的一部分,就可以这样做。
来源:Services and Endpoints
zphenhs43#
端点是一种资源,可获取动态分配给它的一个或多个Pod的IP地址沿着端口。可以使用
kubectl get endpoints
查看端点。端点资源由Kubernetes服务引用,以便该服务记录Pod的内部IP,以便能够与它们通信。
我们需要端点作为一个抽象层,因为kubernetes中的“服务”充当了协调的一部分,以确保将流量分发到pod(包括仅向健康的Pod发送流量)。例如,如果Pod死亡,则将生成具有新IP地址的替换Pod。从概念上讲,将从端点对象中删除死亡的Pod IP,并添加新创建的Pod的IP,从而更新服务并且“知道”连接到哪个转接单元。
阅读“将Pod暴露给群集”,然后在此处阅读“创建服务”-https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#exposing-pods-to-the-cluster
一个简单的方法来调查和查看的关系是:
kubectl describe pods
-并观察Pod的IP地址kubectl get ep
-并观察分配给端点的IP地址kubectl describe service myServiceName
-并观察与服务关联的Endpoints
因此,端点与单个节点的IP无关。我发现了解kubernetes的整体结构以及集群、节点、服务、端点和pod之间的关系非常有用。此图很好地概括了这一点,并显示了进入OSI第4层的入口流(TCP层)到达后端节点1,OSI层7(http层)入口最终到达Pod 1中的“Web容器1”:
cclgggtu4#
我来一一回答大家的问题:
什么是Kubernetes的“终点”?
(The K8S中的资源名称是端点s)。
端点是Kubernetes中的一个对象,它表示一个......端点列表。
这些终点可以是:
1.在群集内运行的内部pod-这是更熟悉的形式。
当我们创建服务和pod并将服务标签选择器与pod标签匹配时,它会在后台自动创建。
1.不是Pod的外部IP-这是最不为人所知的选项。
外部IP可以驻留在群集外部-例如外部Web服务器或数据库。
它也可以驻留在不同的名称空间中-如果您希望将服务指向集群中不同名称空间中的服务。
关于外部端点-如果您没有在服务中指定标签选择器- Kubernetes无法创建端点列表,因为他不知道服务应该包含和代理哪些pod。
它在哪里?
就像这里提供的伟大的图表显示-它位于服务和内部(pod)或外部(web服务器,数据库等)资源之间。
我可以想象“端点”是某个"节点“的某种访问点,它是对位于群集中某个节点内的资源的访问点。
端点可以驻留在群集中的某个节点内,也可以驻留在群集/环境之外。
如果它是一个 * 内部 * 端点(这意味着pod标签与服务标签选择器匹配)-您可以使用以下命令访问它:
或直接与:
关于 * 外部 * 终点:
创建不带标签选择器的服务:
因此,不会自动创建相应的Endpoint对象,您需要手动添加
Endpoints
对象并将服务Map到运行外部资源的所需网络地址和端口:(注意:)我使用术语 internal 表示与标签选择器匹配的pod自动生成的端点,使用术语 external 表示手动创建的端点。
我可以使用术语 * 自动生成 * 和 * 手动 * 代替-这将是更准确的,但我认为也更混乱。
在大多数情况下,当端点与集群中的pod相关时-我们希望它们也由K8S管理-在这种情况下,它们也需要由K8S生成。
83qze16e5#
将端点视为“到达应用程序的最终目的地”或“最后的smth”
如以下示例所示:播客IP= 10.32.0.2,服务端口*= 3306,端点= [播客IP]:[服务端口]
因此,用户Bob要访问MySql应用程序,其地址应为10.32.0.2:3306,这是网络中他可以找到所需信息的最后一个节点。
一个简单化的示例:我想访问Google Mail在这种情况下为我/浏览器端点将是gmail.com:443类似于上面的示例[**pod-IP]:[service-Port]**
i86rm4rw6#
1.端点跟踪服务将流量发送到的对象的IP地址。
1.当服务选择器与pod标签匹配时,该IP地址将添加到端点。
来源:https://theithollow.com/2019/02/04/kubernetes-endpoints/
yquaqz187#
在k8s中,端点是由一个分布式的API组成的,如“[IP]:[Port]”等,而在SOAP中,端点是一个分布式的API,如URL。
from Google Cloud:
终结点是一个分布式API管理系统。它提供API控制台、托管、日志记录、监视和其他功能,以帮助您创建、共享、维护和保护您的API。