365bet

kubernetes19管中窥豹-CRD概念、场景及实例

作者:365bet  来源:365bet体育  时间:2020-10-19 04:40  点击:

  Custom resources:是对K8S API的扩展,代表了一个特定的kubetnetes的定制化安装。在一个运行中的集群中,自定义资源可以动态注册到集群中。注册完毕以后,用户可以通过kubelet创建和访问这个自定义的对象,类似于操作pod一样。Custom controllers:Custom resources可以让用户简单的存储和获取结构化数据。只有结合控制器才能变成一个真正的declarative API(被声明过的API)。控制器可以把资源更新成用户想要的状态,并且通过一系列操作维护和变更状态。定制化控制器是用户可以在运行中的集群内部署和更新的一个控制器,它独立于集群本身的生命周期。 定制化控制器可以和任何一种资源一起工作,当和定制化资源结合使用时尤其有效。Operator模式 是一个customer controllers和Custom resources结合的例子。它可以允许开发者将特殊应用编码至kubernetes的扩展API内。如何添加一个Custom resources到我的kubernetes集群呢? kubernetes提供了两种方式将Custom resources添加到集群。Custom Resource Definitions (CRDs):更易用、不需要编码。但是缺乏灵活性。API Aggregation:需要编码,允许通过聚合层的方式提供更加定制化的实现。本文重点讲解Custom Resource Definitions (CRD)的使用方法。假设需要在原生kubernetes完成一些额外的功能开发,而且想使用restful风格的API 去调用这个功能。比如像开发容器保存镜像或者重启镜像等操作(一般都通过命令发送给容器内部完成)。就可以在原生kubernetes上增加一个CRD,命名为task。通过task触发一些逻辑。当使用apiserver下发这个task创建时,Custom controllers watch到这个task就开始处理相关业务逻辑,然后通过agent调用docker命令完成容器保存镜像功能并且重启容器。当Custom controllers watch到pod重新运行的时候,本次操作完成。 流程图如下:如果想要完成上述场景的功能,需要定义一个CRD,并且创建出来。 举例如下,以下是一个可以在1.9集群环境中创建成功的crd yaml文件。

  这时需要自定义一个task类型的模板,创建,以使得task可以触发自定义的一些事件。

  这时可以通过task的url去对自定义的task资源进行操作,或者watch。结合上一节的流程图来完成实现自定义功能的目的。以下是调用watch接口对task资源进行长连接监控(变化)。

  CRD提供了一种无须编码就可以扩展原生kubenetes API接口的方式。很适合在云应用中扩展kubernetes的自定义接口和功能。在一些无须太多定制和灵活的开发场景下,CRD的方式已经足够使用。如果想更为灵活的添加逻辑就需要参考API Aggregation的使用了。

  网易云容器服务为用户提供了无服务器容器,让企业能够快速部署业务,轻松运维服务。容器服务支持弹性伸缩、垂直扩容、灰度升级、服务发现、服务编排、错误恢复及性能监测等功能。点击免费试用

365bet

版权所有:上海365bet工程机械厂有限公司    技术支持:365bet体育  网站地图