Kubectl api-resources 列出具有不同 API 组的重复资源

Kubectl api-resources lists duplicate resources with different API groups

我有运行一个简单的命令:

kubectl api-resources

我有点惊讶得到重复项(尽管在不同的 Api 组中),例如:

NAME                              SHORTNAMES   APIGROUP                NAMESPACED   KIND 
ingresses                         ing          extensions              true         Ingress
ingresses                         ing          networking.k8s.io       true         Ingress

是否是同一个资源,只是列出了两次,因为它同时属于不同的api组,而且后面调用的结果总是一样的?

kubectl get ingress
kubectl get ingress.networking.k8s.io
kubectl get ingress.extensions

这些实际上是同一资源在不同 API 组中的不同版本。

一般来说,Kubernetes引入新的资源类型时,首先会在extensionsAPI组中进行管理(迭代多个版本)。一旦资源被认为稳定,它们将被移动到 "stable" API 组,例如 appsnetworking.k8s.io (解释,例如 here)。

Ingress 在两个 API 组中都列出的事实意味着您的 API 服务器可以理解来自两个 API 组的此资源的版本。

具体资源版本的规格可能有所不同。例如,您可以将它们与:

进行比较
kubectl explain --api-version=extensions/v1beta1 ingress

对比

kubectl explain --api-version=networking.k8s.io/v1beta1 ingress

有关 API 服务器如何处理不同版本资源的深入解释,请参见 article series