Kubernetes(K8S) API

  • Kubernetes API

    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/ ...获取Pod
    • 从etcd中读取JSON并将其解组为v6.Pod结构
    • 默认值应用于v6.Pod
    • v6.Pod被转换为api.Pod结构
    • api.Pod被转换为v5.Pod结构
    • v5.Pod被整理成JSON和发送给用户
    此过程的含义是必须谨慎且向后兼容地进行API更改。
  • API版本控制

    为了更轻松地支持多种结构,Kubernetes在不同的API路径(例如/api/v1或/apsi/extensions/v1beta1)中支持多个API版本
    Kubernetes的版本控制标准在多个标准中定义。
    Alpha 级别
    • 此版本包含Alpha(例如v1alpha1)
    • 这个版本可能有错误;启用的版本可能存在错误
    • 可以在任何时间删除对错误的支持。
    • 建议仅在短期测试中使用,因为支持可能不会一直存在。
    Beta 级别
    • 版本名称包含beta(例如v2beta3)
    • 该代码已经过全面测试,并且启用的版本应该是稳定的。
    • 该功能的支持不会被删除;可能会有一些小的变化。
    • 建议仅用于非关键业务用途,因为在后续版本中可能会发生不兼容的更改。
    Stable 级别
    • 版本名称为vX,其中X为整数。
    • 对于许多后续版本,功能的稳定版本将出现在发行的软件中。