Kubernetes API是系统描述性配置的基础。 Kubectl 命令行工具被用于创建、更新、删除、获取API对象。
Kubernetes 通过API资源存储自己序列化状态(现在存储在etcd)。
Kubernetes 被分成多个组件,各部分通过API相互交互。
向Kubernetes添加API
向Kubernetes添加新API,将增加Kubernetes的功能。但是,同时也会增加系统的成本和可维护性。为了在成本和复杂性之间权衡,定义了几个API集合。
Kubernetes社区添加API,会考虑:
- 该API应该对超过50%的用户有用
- 在Kubernetes中没有其他方法实现该功能
API 变更
任何成功的系统都需要迭代,Kubernetes API也会不断地变化和增长。
API 变更会尽量考虑向前兼容,不影响用户使用。
通常,新的API资源和新的资源字段可能会频繁添加。删除资源或字段需要遵循API弃用策略。
API更改文档详细说明了什么是兼容更改以及如何更改API。
API版本
为了使删除字段或者重构资源表示更加容易,Kubernetes 支持 多个API版本。每一个版本都在不同API路径下,例如 /api/v1 或者 /apis/extensions/v1beta1。
不同的API版本名称意味着不同级别的软件稳定性和支持程度。 每个级别的标准在API变更文档中有更详细的描述。 内容主要概括如下:
- Alpha 测试版本:
- 版本名称包含了 alpha (例如:v1alpha1)。
- 可能是有缺陷的。启用该功能可能会带来隐含的问题,默认情况是关闭的。
- 支持的功能可能在没有通知的情况下随时删除。
- API的更改可能会带来兼容性问题,但是在后续的软件发布中不会有任何通知。
- 由于bugs风险的增加和缺乏长期的支持,推荐在短暂的集群测试中使用。
- Beta 测试版本:
- 版本名称包含了 beta (例如: v2beta3)。
- 代码已经测试过。启用该功能被认为是安全的,功能默认已启用。
- 所有已支持的功能不会被删除,细节可能会发生变化。
- 对象的模式和/或语义可能会在后续的beta测试版或稳定版中以不兼容的方式进行更改。 发生这种情况时,我们将提供迁移到下一个版本的说明。 这可能需要删除、编辑和重新创建API对象。执行编辑操作时需要谨慎行事,这可能需要停用依赖该功能的应用程序。
- 建议仅用于非业务关键型用途,因为后续版本中可能存在不兼容的更改。 如果您有多个可以独立升级的集群,则可以放宽此限制。
- 请尝试我们的 beta 版本功能并且给出反馈!一旦他们退出 beta 测试版,我们可能不会做出更多的改变。
- 稳定版本:
- 版本名称是 vX,其中 X 是整数。
- 功能的稳定版本将出现在许多后续版本的发行软件中。