如何确定负责特定 APIService 的资源?

如何确定负责特定 APIService 的资源?

我是 k8s 的新手,所以如果我使用了一些错误的定义,请原谅我。

每个 k8s 集群都有一组可用的 API,其中一些是 k8s 本身的一部分(“核心”或“内置”),但有些是外部或第三方的。我想知道外部 API 是如何工作的,即哪个内部或外部资源负责处理 API。

我观察到一些非内置 APIService 明确提到了某项特定服务。在这个例子中,我得到了问题的答案:必须验证上述服务才能确定哪些 pod 将响应 API 请求。

但其他一些 API 没有提到任何明确的服务,例如:

$ kubectl get apiservices.apiregistration.k8s.io
NAME                                   SERVICE   AVAILABLE   AGE
...
v1alpha1.argoproj.io                   Local     True        9d
...


$ kubectl api-resources
NAME                               SHORTNAMES                          APIVERSION                        NAMESPACED   KIND
...
applications                       app,apps                            argoproj.io/v1alpha1              true         Application
applicationsets                    appset,appsets                      argoproj.io/v1alpha1              true         ApplicationSet
appprojects                        appproj,appprojs                    argoproj.io/v1alpha1              true         AppProject
...

如您所见,SERVICE= Local。v1alpha1.argoproj.io 之所以存在于我的集群中,是因为我在那里安装了 ArgoCD。但如果我不知道怎么办?

问题

确定两者之间联系的方法是什么

  • 一些存在于 k8s 集群中的 API / APIService
  • 支持该 API / APIService 的资源(pod 甚至工作负载)

对于 API / APIServices ,没有提到任何明确的服务?

根据APIServiceSpec 文档

如果服务为零,则表示 API 组版本的处理在此服务器上本地处理。调用将简单地委托给要完成的正常处理程序链。

我被困在了这一点上,因为我似乎无法再取得任何进展,而且老实说,我根本不知道“这个服务器”这个短语在 APIServiceSpec 定义的上下文中是什么意思。

答案1

我最近也遇到了同样的问题,我发现制作 CRD(自定义资源定义)将创建一个本地 APIService。

相关内容