我是 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 ,没有提到任何明确的服务?
如果服务为零,则表示 API 组版本的处理在此服务器上本地处理。调用将简单地委托给要完成的正常处理程序链。
我被困在了这一点上,因为我似乎无法再取得任何进展,而且老实说,我根本不知道“这个服务器”这个短语在 APIServiceSpec 定义的上下文中是什么意思。
答案1
我最近也遇到了同样的问题,我发现制作 CRD(自定义资源定义)将创建一个本地 APIService。