首页 > 解决方案 > Kubectl api-resources 列出具有不同 API 组的重复资源

问题描述

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

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

标签: kuberneteskubectl

解决方案


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

一般来说,当 Kubernetes 引入新的资源类型时,它们首先在extensionsAPI 组中进行管理(迭代多个版本)。一旦资源被认为是稳定的,它们就会被移动到一个“稳定”的 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 服务器如何处理不同版本资源的深入解释。


推荐阅读