我已经运行了一个简单的命令:
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
答案 0 :(得分:2)
这些实际上是不同API组中相同资源的不同版本。
通常,当将新资源类型引入Kubernetes时,它们首先在extensions
API组中进行管理(遍历多个版本)。一旦资源被认为是稳定的,它们便被移至“稳定的” API组,例如apps
或networking.k8s.io
(例如,here)。
两个API组中都列出了Ingress,这意味着您的API服务器可以从两个API组中了解此资源的版本。
特定资源版本的规范可能会有所不同。您可以将它们与例如进行比较:
kubectl explain --api-version=extensions/v1beta1 ingress
vs。
kubectl explain --api-version=networking.k8s.io/v1beta1 ingress
可以在此article series中找到有关API服务器如何处理资源的不同版本的深入说明。