k8s 服务注册发现原理

服务(Service)定义:当你在Kubernetes中创建一个服务(Service)资源时,Kubernetes API服务器会记录这个资源的元数据。

Endpoints:Kubernetes通过监控集群中的Pod自动创建与服务相对应的“endpoints”(端点)。Endpoints是指Service后面实际承担服务的Pod的IP和端口。

DNS:Kubernetes提供了一个内置的DNS系统,可以通过DNS来查询服务。每个服务会在DNS中有一个域名,格式为 service-name.namespace.svc.cluster.local,其中 service-name 是服务的名字,namespace 是服务所在的命名空间。

服务发现:当其他Pod需要访问这个服务时,它可以通过DNS查询这个服务的域名来获取后端Pod的IP地址和端口。

下面是一个简单的服务定义示例:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

在这个例子中,my-service服务会选择所有带有标签app: my-app的Pod作为其后端。访问my-service的Pod可以通过my-service.default.svc.cluster.local域名来解析该服务,并且最终连接到端口9376上的后端Pod。

posted @ 2024-07-24 14:12  朝阳1  阅读(69)  评论(0)    收藏  举报