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-Control
为 immutable
)。 当一个过时的 URL 被使用时,API 服务器会返回一个指向最新 URL 的重定向。
Kubernetes API 服务器会在端点 发布一个 Kubernetes 组版本的 OpenAPI v3 规范。
请参阅下表了解可接受的请求头部。
头部 | 可选值 | 说明 |
---|---|---|
Accept-Encoding | gzip | 不提供此头部也是可接受的 |
Accept | application/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:
- 你可以使用自定义资源 来以声明式方式定义 API 服务器如何提供你所选择的资源 API。
- 了解如何通过添加你自己的 来扩展 Kubernetes API。
- 控制 Kubernetes API 访问页面描述了集群如何针对 API 访问管理身份认证和鉴权。
- 通过阅读 了解 API 端点、资源类型以及示例。