问题描述
在使用 eureka (+ Spring Boot) 的情况下,您可以到达可以找到当前注册实例列表的特殊端点。例如。:
Kubernetes 服务发现是否有这样的端点或者可能是其他机制来查看所有当前注册的实例? UPD:kubernetes api 是否有可能做到这一点,可能是通过 kubectl?
解决方法
没有。 Eureka 是一个服务发现和注册系统。 spring cloud 在 kubernetes 上实现服务发现只读取 kubernetes api。您可能可以通过 kubectl 获取信息。
,Kubernetes 有一个基于 HTTP 的 API,您可以通过多种方式与之交互(例如:kubectl
),当然您也可以使用 curl
。
方法如下:Access Clusters Using the Kubernetes API
如果您对 Pod 感到好奇,可以这样做:
-
kubectl get pods
或kubectl get pods -o json
curl http://localhost:8080/api/v1/pods
如果您的意思是 services
(及其注册目标):
-
kubectl get services
或kubectl services pods -o json
curl http://localhost:8080/api/v1/services
一段时间后我设法解决了问题。
- 在您的微服务中添加端点。示例 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