k8s--基础--03--api
CustomResourceDefinition适用于具有非常基本的CRUD需求的用户。需要全套Kubernetes API语义的用户可以实现自己的apiserver,并使用聚合器为客户提供无缝的服务。
·
k8s–基础–03–api
1、介绍
- API是系统声明式配置架构的基础。
- Kubectl命令行工具被用于创建、更新、删除、获取API对象。
- Kubernetes通过API资源存储自己的序列化状态(这些状态存储在etcd中)。
- Kubernetes被分成多个组件,各组件通过API相互交互。
1.1、描述了API的全部协议。
https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md
1.2、描述了API的端点、资源类型和示例。
https://kubernetes.io/docs/reference/
1.3、描述了API的远程访问
https://kubernetes.io/docs/concepts/security/controlling-access/
1.4、API废弃流程
https://kubernetes.io/docs/reference/using-api/deprecation-policy/
1.5、API变更文档
https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md
1.6、API组
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/api-group.md
2、API变更
一般情况下,增加新的API资源和资源字段不会导致向下兼容性问题发生,但如果是需要删除一个已有的资源或者字段,那么必须通过API废弃流程来进行。可参考API变更文档,了解兼容性变更的要素以及如何变更API的流程
3、API 版本
Kubernetes支持多个API版本。每一个版本都在不同API路径下,例如
/api/v1
/apis/extensions/v1beta1。
我们选择在API级别进行版本化,而不是在资源或字段级别进行版本化,以确保API提供清晰、一致的系统资源和行为视图,并控制对已废止的API和实验性API的访问。
3.1、alpha:内部测试版本
- 版本名称包含了alpha (例如:v1alpha1)。
- 可能是有缺陷的。启用该功能可能会带来隐含的问题
- 默认情况是关闭的。
- 支持的功能可能在没有通知的情况下随时删除。
- API的更改可能会带来兼容性问题,但是在后续的软件发布中不会有任何通知。
- 由于bugs风险的增加和缺乏长期的支持,推荐在短暂的集群测试中使用。
3.1、beta-公测版本
- 版本名称包含了beta(例如:v2beta3)。
- 代码已经测试过。启用该功能被认为是安全的,功能默认已启用。
- 所有已支持的功能不会被删除,细节可能会发生变化。
- 对象的模式或语义可能会在后续的beta测试版或稳定版中以不兼容的方式进行更改。 发生这种情况时,我们将提供迁移到下一个版本的说明。 这可能需要删除、编辑和重新创建API对象。执行编辑操作时需要谨慎行事,这可能需要停用依赖该功能的应用程序。
- 建议仅用于非业务关键型用途,因为后续版本中可能存在不兼容的更改。 如果有多个可以独立升级的集群,则可以放宽此限制。
3.1、stable-稳定版本:
- 版本名称是vX,其中X是整数。
- 功能的稳定版本将出现在许多后续版本的发行软件中。
4、API组
为了更容易地扩展Kubernetes API,我们实现了API组。
API组在REST路径和序列化对象的apiVersion字段中指定。
4.1、目前有几个API组正在使用中:
- 核心组(通常被称为遗留组)
- 位于REST路径/api/v1
- 使用apiVersion:v1。
- 指定的组
- 位于REST路径/apis/ G R O U P N A M E / GROUP_NAME/ GROUPNAME/VERSION
- 使用apiVersion: G R O U P N A M E / GROUP_NAME/ GROUPNAME/VERSION(例如apiVersion:batch/v1)。
- 在Kubernetes API参考中可以看到支持的API组的完整列表。
- https://kubernetes.io/docs/reference/
4.2、社区支持使用以下两种方式来提供自定义资源对API进行扩展自定义资源
https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/
- CustomResourceDefinition适用于具有非常基本的CRUD需求的用户。
- https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
- 需要全套Kubernetes API语义的用户可以实现自己的apiserver,并使用聚合器为客户提供无缝的服务。
- https://kubernetes.io/docs/tasks/extend-kubernetes/configure-aggregation-layer/
更多推荐
所有评论(0)