我在哪里可以看到在 Kubernetes Discovery 中注册的服务列表?

Posted

技术标签:

【中文标题】我在哪里可以看到在 Kubernetes Discovery 中注册的服务列表?【英文标题】:Where can I see list of services registered in Kubernetes Discovery? 【发布时间】:2021-04-01 18:53:00 【问题描述】:

在使用 eureka (+ Spring Boot) 的情况下,您可以到达可以找到当前注册实例列表的特殊端点。例如。:

Kubernetes 服务发现是否有这样的端点,或者可能是其他机制来查看所有当前注册的实例? UPD:kubernetes api有没有可能做到这一点,可能是通过kubectl?

【问题讨论】:

尝试kubectl get svc 命令 【参考方案1】:

没有。 Eureka 是一个服务发现和注册系统。 Kubernetes 上服务发现的 Spring Cloud 实现只从 Kubernetes api 中读取。您可能可以通过 kubectl 获取信息。

【讨论】:

【参考方案2】:

Kubernetes 有一个基于 HTTP 的 API,您可以通过多种方式与之交互(例如:kubectl),当然您也可以使用 curl。 方法如下:Access Clusters Using the Kubernetes API

如果您对自己的 pod 感到好奇,可以这样做:

kubectl get podskubectl get pods -o json curl http://localhost:8080/api/v1/pods

如果你的意思是services(以及他们注册的目标):

kubectl get serviceskubectl services pods -o json curl http://localhost:8080/api/v1/services

【讨论】:

不,不是 Pod,我是指在 Kuber 发现中注册的 Pod 中的应用程序 @Alex 我明白了,我编辑了我的答案,请检查它是否是你需要的。【参考方案3】:

一段时间后我设法解决了问题。

    在您的微服务中添加端点。示例here 向您的 Kubernetes 集群添加角色:
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: yours
  name: service-reader
rules:
  - apiGroups: [""] # "" indicates the core API group
    resources: ["services"]
    verbs: ["get", "watch", "list"]

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: service-reader-pod
subjects:
  - kind: ServiceAccount
    name: default
    namespace: yours
roleRef:
  kind: ClusterRole
  name: service-reader
  apiGroup: rbac.authorization.k8s.io

【讨论】:

以上是关于我在哪里可以看到在 Kubernetes Discovery 中注册的服务列表?的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里可以看到 MSysIMEXSpecs 中的“包括第一行作为标题”?

我在哪里可以看到 Sun JDK 的源代码?

我在哪里可以看到 testflightapp.com 上的 TFLog 输出?

我在哪里可以看到 mfc 应用程序中的 printf 输出?

在 Azure 流分析中,如果发送失败,我在哪里可以看到失败的原因

使用任务控制进行 Java 分析 - 我在哪里可以看到我自己的方法的花费时间?