如何通过 Kubernetes C# 客户端查找现有服务 API

How to find existing service by Kubernetes C# client API

我在 K3s Orchestrator 上有 KubernetesClient 代码 运行 我的应用程序。我已经为 app-module 命名空间创建了服务 progprog-externalmy-module,这些端口现在可以在 kubectl get svc -A[=33= 中看到] 命令:

root@Ubuntu20-VM:~# kubectl get svc -A
NAMESPACE      NAME              TYPE           CLUSTER-IP     PORT(S)                         AGE
default        kubernetes        ClusterIP      10.43.0.1      443/TCP                         86m
kube-system    kube-dns          ClusterIP      10.43.0.10     53/UDP,53/TCP,9153/TCP          86m
kube-system    metrics-server    ClusterIP      10.43.4.133    443/TCP                         86m
app-module     prog              ClusterIP      10.43.175.255  9008/TCP,9009/UDP,9001/TCP      64m
app-module     prog-external     NodePort       10.43.108.249  9000:30001/TCP,9001:30002/TCP   64m
app-module     my-module         ClusterIP      10.43.23.30    9008/TCP,9009/UDP,9001/TCP      64m

有人可以告诉我 KubernetesClient 到 find/get 论文服务中是否有 API 吗?请提出建议。

PS: 我认为 API ListNamespacedServiceWithHttpMessagesAsync will return all pods config for namespace app-module , but I only want those pods config in app-module NS for which I created services ,这里是:prog, prog-external & my-module。如果我的理解有误,请指正?

您无法通过一次 Kubernetes API 调用(Kubernetes C# 库中的一次函数调用)获取与服务(在命名空间中)相关的所有 pods。


您需要执行以下操作:

  1. 列出所有服务(按 namespace/name 过滤)
  2. 列出所有端点/端点切片(与您在第 1 点中获取的服务相关。)
  3. 列出所有 Pods(与第 2 点的端点/端点切片相关。)

您可以将 service -> pod 视为一种单向关系。所以服务指向 pods(通过端点),但是 pod 对服务一无所知


实现您想要的目标的一种对 Kubernetes 更友好的方法是实际标记您的资源。因此,在您的 services/pods 中保持一致的标签,然后按标签列出您的资源。