• k8s--基础--03--api


    k8s–基础–03–api


    1、介绍

    1. API是系统声明式配置架构的基础。
    2. Kubectl命令行工具被用于创建、更新、删除、获取API对象。
    3. Kubernetes通过API资源存储自己的序列化状态(这些状态存储在etcd中)。
    4. Kubernetes被分成多个组件,各组件通过API相互交互。

    1.1、描述了API的全部协议。

    https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md
    
    • 1

    1.2、描述了API的端点、资源类型和示例。

    https://kubernetes.io/docs/reference/
    
    • 1

    1.3、描述了API的远程访问

    https://kubernetes.io/docs/concepts/security/controlling-access/
    
    • 1

    1.4、API废弃流程

    https://kubernetes.io/docs/reference/using-api/deprecation-policy/
    
    • 1

    1.5、API变更文档

    https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md
    
    • 1

    1.6、API组

    
    https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
    
    • 1
    • 2

    2、API变更

    一般情况下,增加新的API资源和资源字段不会导致向下兼容性问题发生,但如果是需要删除一个已有的资源或者字段,那么必须通过API废弃流程来进行。可参考API变更文档,了解兼容性变更的要素以及如何变更API的流程

    3、API 版本

    Kubernetes支持多个API版本。每一个版本都在不同API路径下,例如

    /api/v1
    /apis/extensions/v1beta1。
    
    • 1
    • 2

    我们选择在API级别进行版本化,而不是在资源或字段级别进行版本化,以确保API提供清晰、一致的系统资源和行为视图,并控制对已废止的API和实验性API的访问。

    3.1、alpha:内部测试版本

    1. 版本名称包含了alpha (例如:v1alpha1)。
    2. 可能是有缺陷的。启用该功能可能会带来隐含的问题
    3. 默认情况是关闭的。
    4. 支持的功能可能在没有通知的情况下随时删除。
    5. API的更改可能会带来兼容性问题,但是在后续的软件发布中不会有任何通知。
    6. 由于bugs风险的增加和缺乏长期的支持,推荐在短暂的集群测试中使用。

    3.1、beta-公测版本

    1. 版本名称包含了beta(例如:v2beta3)。
    2. 代码已经测试过。启用该功能被认为是安全的,功能默认已启用。
    3. 所有已支持的功能不会被删除,细节可能会发生变化。
    4. 对象的模式或语义可能会在后续的beta测试版或稳定版中以不兼容的方式进行更改。 发生这种情况时,我们将提供迁移到下一个版本的说明。 这可能需要删除、编辑和重新创建API对象。执行编辑操作时需要谨慎行事,这可能需要停用依赖该功能的应用程序。
    5. 建议仅用于非业务关键型用途,因为后续版本中可能存在不兼容的更改。 如果有多个可以独立升级的集群,则可以放宽此限制。

    3.1、stable-稳定版本:

    1. 版本名称是vX,其中X是整数。
    2. 功能的稳定版本将出现在许多后续版本的发行软件中。

    4、API组

    为了更容易地扩展Kubernetes API,我们实现了API组。
    API组在REST路径和序列化对象的apiVersion字段中指定。

    4.1、目前有几个API组正在使用中:

    1. 核心组(通常被称为遗留组)
      1. 位于REST路径/api/v1
      2. 使用apiVersion:v1。
    2. 指定的组
      1. 位于REST路径/apis/ G R O U P N A M E / GROUP_NAME/ GROUPNAME/VERSION
      2. 使用apiVersion: G R O U P N A M E / GROUP_NAME/ GROUPNAME/VERSION(例如apiVersion:batch/v1)。
      3. 在Kubernetes API参考中可以看到支持的API组的完整列表。
        1. https://kubernetes.io/docs/reference/

    4.2、社区支持使用以下两种方式来提供自定义资源对API进行扩展自定义资源

    https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/
    
    • 1
    1. CustomResourceDefinition适用于具有非常基本的CRUD需求的用户。
      1. https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
    2. 需要全套Kubernetes API语义的用户可以实现自己的apiserver,并使用聚合器为客户提供无缝的服务。
      1. https://kubernetes.io/docs/tasks/extend-kubernetes/configure-aggregation-layer/
  • 相关阅读:
    企业使用CRM会获得什么成效?
    服务器的架构有哪些
    什么是链动2+1模式?如何打造高活跃的商业生态圈?
    后端开发面试题5(附答案)
    golang学习之七:并发编程基础(goroutine、channel、select)
    计算机毕业设计springboot酒店客房管理系统8yj0v源码+系统+程序+lw文档+部署
    SynchronousQueue源码分析_第二讲:非公平模式TransferStack
    SOCKS5代理在全球电商、游戏及网络爬虫领域的技术创新
    第二章 Hadoop环境配置之虚拟机安装配置
    【附源码】Python计算机毕业设计美容美发店会员管理系统
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/126222534