Kubernetes API是系统声明性配置架构的基础. Kubectl 命令行工具可用于创建,更新,删除和获取API对象. Kubernetes API是Kubernetes不同组件之间的沟通者.
向Kubernetes添加API
向Kubernetes添加新API将为Kubernetes添加新功能,这将增加Kubernetes的功能.但是,它还会增加系统的成本和可维护性.为了在成本和复杂性之间建立平衡,有一些为它定义的集合.
添加的API应该对50%以上的用户有用.没有其他方法可以在Kubernetes中实现该功能.在Kubernetes的社区会议中讨论了特殊情况,然后添加了API.
API更改
为了提高Kubernetes的能力,变化不断引入系统.它是由Kubernetes团队完成的,用于向Kubernetes添加功能,而不会删除或影响系统的现有功能.
为了演示一般过程,这里是一个(假设的)示例 :
用户将Pod对象POST到/api/v7beta1/...
将JSON解组为 v7beta1.Pod 结构
默认值应用于 v7beta1.Pod
v7beta1.Pod 转换为 api.Pod 结构
验证 api.Pod ,并将任何错误返回给用户
api.Pod 转换为v6.Pod(因为v6是最新的稳定版本)
将 v6.Pod 编组为JSON并写入 etcd
现在我们已经存储了Pod对象,用户可以在任何支持的API版本中获取该对象.例如 :
用户从/api/v5/...
JSON从 etcd 和 unmarshalled 读入 v6.Pod 结构
默认值适用于 v6.Pod
v6.Pod 转换为api.Pod结构
api.Pod 转换为 v5.Pod 结构
v5.Pod 正在编组转换为JSON并发送给用户
此过程的含义是必须小心地向后兼容地进行API更改.
API版本控制
为了更容易支持多种结构,Kubernetes支持多个不同API路径的API版本,例如/api/v1 或/apsi/extensions/v1beta1
Kubernetes的版本标准在多个标准中定义.
Alpha等级
此版本包含alpha(例如v1alpha1)
此版本可能有错误;启用的版本可能有错误
任何时候都可以删除对错误的支持.
建议仅在短期测试中使用,因为支持可能不会一直存在.
Beta Level
版本名称包含beta(例如v2beta3)
代码已经过全面测试,启用的版本应该是稳定的.
不会删除该功能的支持;可能会有一些细微的变化.
建议仅用于非关键业务用途,因为后续版本可能会发生不兼容的更改.
稳定水平
版本名称为 vX 其中 X 是一个整数.
功能的稳定版本将出现在已发布的软件中许多后续版本.