Group-Version-Resource

Group-Version-Resource

Kubernetes API 是 REST API,因此它管理资源和资源的路径,这些资源遵循REST的命名惯例–即使用复数名称来识别资源,并将这些资源分组。

因为 Kubernetes API 管理着数以百计的资源,所以它们被分组,而且因为 API 的发展,这些资源是有版本的。由于这些原因,每个资源都属于一个给定的 group和 version,每个资源都由 Group-Version-Resource 唯一标识,通常称为 GVR。

要找到 Kubernetes API 中的各种资源,你可以浏览 OpenAPI 规范,提取不同的路径。传统的资源(如pod或节点)将在 Kubernetes API 的早期引入,都属于组 core 和版本v1。

管理整个集群的遗留资源的路径遵循 /api/v1/<plural_resource_name> 的格式–例如,/api/v1/nodes 来管理节点。请注意,core group 在路径中不被代表。要管理特定命名空间中的资源,路径格式是 /api/v1/namespaces/<namespace_name>/<plural_resource_name> –例如,/api/v1/namespaces/default/pods 用于管理默认命名空间中的pod。

较新的资源可以通过格式为 /apis/<group>/<version>/<plural_resource_name>/apis/<group>/<version>/namespaces/<namespace_name>/<plural_resource_name> 的路径访问。

概括地说,获取资源的各种路径的格式是:

  • /api/v1/<plural_name> - 访问传统的非命名空间的资源。例如:/api/v1/nodes,访问无命名空间的节点资源。或

  • 访问整个集群的传统命名方式的资源,例如:/api/v1/pods,访问所有命名空间的pod。

  • /api/v1/namespaces/<ns>/<plural_name> - 访问特定命名空间中的遗留带命名空间的资源。例如:/api/v1/namespaces/default/pods,访问默认命名空间中的pod。

  • /apis/<group>/<version>/<plural_name> - 访问特定组和版本中的非命名空间资源。例如:/apis/storage.k8s.io/v1/storageclasses来访问非命名空间的storageclasses(组storage.k8s.io,版本v1)。或

  • 访问整个集群的命名空间资源。例如:/apis/apps/v1/deployments,访问所有命名空间的 deployment。

  • /apis/<group>/<version>/namespaces/<ns>/<plural_name> - 访问特定命名空间的命名资源。例如:/apis/apps/v1/namespaces/default/deployments访问默认命名空间中的deployment(分组为 apps,版本为 v1)。