API 概述
本节提供 Kubernetes API 的参考信息。
REST API 是 Kubernetes 的基础结构。组件之间以及与外部用户命令之间的所有操作和通信都是由 API 服务器处理的 REST API 调用。因此,Kubernetes 平台中的一切都被视为 API 对象,并且在 API 中有相应的条目。
Kubernetes API 参考列出了 Kubernetes v1.33 版本的 API。
如需一般背景信息,请阅读Kubernetes API。 控制对 Kubernetes API 的访问描述了客户端如何向 Kubernetes API 服务器进行身份验证,以及其请求如何被授权。
API 版本控制
JSON 和 Protobuf 序列化模式遵循相同的模式变更准则。以下描述涵盖了这两种格式。
API 版本控制和软件版本控制间接相关。API 和发布版本控制提案描述了 API 版本控制和软件版本控制之间的关系。
不同的 API 版本表明不同的稳定性和支持级别。你可以在API 变更文档中找到有关每个级别标准的更多信息。
以下是每个级别的摘要
Alpha
- 版本名称包含
alpha
(例如,v1alpha1
)。 - 内置的 alpha API 版本默认是禁用的,必须在
kube-apiserver
配置中显式启用才能使用。 - 软件可能包含错误。启用特性可能会暴露错误。
- 对 alpha API 的支持可能随时取消,恕不另行通知。
- API 在后续软件版本中可能以不兼容的方式变更,恕不另行通知。
- 软件仅建议用于短时测试集群,因为错误风险较高且缺乏长期支持。
- 版本名称包含
Beta
版本名称包含
beta
(例如,v2beta3
)。内置的 beta API 版本默认是禁用的,必须在
kube-apiserver
配置中显式启用才能使用(除了在 Kubernetes 1.22 之前引入的 beta 版本 API,它们默认是启用的)。内置的 beta API 版本从引入到废弃的最长生命周期是 9 个月或 3 个小版本(取较长者),从废弃到移除的最长生命周期是 9 个月或 3 个小版本(取较长者)。
软件经过充分测试。启用特性被认为是安全的。
对特性的支持不会取消,尽管细节可能会变更。
对象的 schema 和/或语义在后续的 beta 或稳定版 API 版本中可能以不兼容的方式变更。发生这种情况时,会提供迁移说明。适应后续的 beta 或稳定版 API 版本可能需要编辑或重新创建 API 对象,并且可能不直接。迁移可能需要依赖该特性的应用停机。
软件不推荐用于生产环境。后续版本可能引入不兼容的变更。一旦 beta API 版本被废弃且不再提供服务,必须使用 beta API 版本过渡到后续的 beta 或稳定版 API 版本。
注意
请尝试 beta 特性并提供反馈。特性一旦退出 beta 阶段,可能就不方便再进行更多变更了。Stable
- 版本名称是
vX
,其中X
是一个整数。 - 在 Kubernetes 的主要版本中,稳定的 API 版本在所有未来版本中都可用,并且目前没有移除稳定版 API 的 Kubernetes 主要版本修订计划。
- 版本名称是
API 组
API 组使得扩展 Kubernetes API 更加容易。API 组在 REST 路径和序列化对象的 apiVersion
字段中指定。
Kubernetes 中有几个 API 组
- 核心组(也称为遗留组)位于 REST 路径
/api/v1
。核心组不作为apiVersion
字段的一部分指定,例如apiVersion: v1
。 - 命名组位于 REST 路径
/apis/$GROUP_NAME/$VERSION
并使用apiVersion: $GROUP_NAME/$VERSION
(例如apiVersion: batch/v1
)。你可以在 Kubernetes API 参考中找到支持的 API 组的完整列表。
启用或禁用 API 组
某些资源和 API 组默认是启用的。你可以通过在 API 服务器上设置 --runtime-config
来启用或禁用它们。--runtime-config
标志接受逗号分隔的 <key>[=<value>]
对,描述 API 服务器的运行时配置。如果省略 =<value>
部分,则视为指定了 =true
。例如:
- 要禁用
batch/v1
,设置--runtime-config=batch/v1=false
- 要启用
batch/v2alpha1
,设置--runtime-config=batch/v2alpha1
- 要启用特定版本的 API,例如
storage.k8s.io/v1beta1/csistoragecapacities
,设置--runtime-config=storage.k8s.io/v1beta1/csistoragecapacities
注意
当你启用或禁用组或资源时,需要重启 API 服务器和控制器管理器以使--runtime-config
更改生效。持久化
Kubernetes 将其序列化状态(以 API 资源的形式)写入 etcd 来存储。