Kubernetes API

    Kubernetes 控制面 的核心是 。 API 服务器负责提供 HTTP API,以供用户、集群中的不同部分和集群外部组件相互通信。

    Kubernetes API 使你可以查询和操纵 Kubernetes API 中对象(例如:Pod、Namespace、ConfigMap 和 Event)的状态。

    大部分操作都可以通过 kubectl 命令行接口或 类似 这类命令行工具来执行, 这些工具在背后也是调用 API。不过,你也可以使用 REST 调用来访问这些 API。

    如果你正在编写程序来访问 Kubernetes API,可以考虑使用 客户端库之一。

    完整的 API 细节是用 来表述的。

    Kubernetes API 服务器通过 端点提供聚合的 OpenAPI v2 规范。 你可以按照下表所给的请求头部,指定响应的格式:

    OpenAPI V3

    特性状态: Kubernetes v1.24 [beta]

    Kubernetes v1.24 提供将其 API 以 OpenAPI v3 形式发布的 beta 支持; 这一功能特性处于 beta 状态,默认被开启。 你可以通过为 kube-apiserver 组件关闭 OpenAPIV3 来禁用此 beta 特性。

    发现端点 /openapi/v3 被提供用来查看可用的所有组、版本列表。 此列表仅返回 JSON。这些组、版本以下面的格式提供:

    为了改进客户端缓存,相对的 URL 会指向不可变的 OpenAPI 描述。 为了此目的,API 服务器也会设置正确的 HTTP 缓存标头 (Expires 为未来 1 年,和 Cache-Controlimmutable)。 当一个过时的 URL 被使用时,API 服务器会返回一个指向最新 URL 的重定向。

    Kubernetes API 服务器会在端点 发布一个 Kubernetes 组版本的 OpenAPI v3 规范。

    请参阅下表了解可接受的请求头部。

    OpenAPI v3 查询的合法请求头部值
    头部可选值说明
    Accept-Encodinggzip不提供此头部也是可接受的
    Acceptapplication/com.github.proto-openapi.spec.v3@v1.0+protobuf主要用于集群内部使用
    application/json默认
    * 形式返回

    一般而言,新的 API 资源和新的资源字段可以被频繁地添加进来。 删除资源或者字段则要遵从 API 废弃策略

    Kubernetes 对维护达到正式发布(GA)阶段的官方 API 的兼容性有着很强的承诺, 通常这一 API 版本为 v1。此外,Kubernetes 在可能的时候还会保持 Beta API 版本的兼容性:如果你采用了 Beta API,你可以继续在集群上使用该 API, 即使该功能特性已进入稳定期也是如此。

    说明:

    尽管 Kubernetes 也努力为 Alpha API 版本维护兼容性,在有些场合兼容性是无法做到的。 如果你使用了任何 Alpha API 版本,需要在升级集群时查看 Kubernetes 发布说明, 以防 API 的确发生变更。

    关于 API 版本分级的定义细节,请参阅 页面。

    有两种途径来扩展 Kubernetes API:

    1. 你可以使用自定义资源 来以声明式方式定义 API 服务器如何提供你所选择的资源 API。
    • 了解如何通过添加你自己的 来扩展 Kubernetes API。
    • 控制 Kubernetes API 访问页面描述了集群如何针对 API 访问管理身份认证和鉴权。
    • 通过阅读 了解 API 端点、资源类型以及示例。