文章目录
- 前言
- 1、扩展方式
- 2、扩展架构图
- 3、使用CRD扩展Kubernetes API
- 4、高级主题
- 1、Validation(验证)
- 2、Category(分类)
有些场景,kubernetes内建的资源类型往往不能满足我们的需求,如redis集群初始化、扩容、缩容、备份等操作。
这时候就需要我们考虑如何去扩展kubernetes的API。
为了增强kubernetes的定制化功能,我们可以通过以下三种方式来扩展Kubernetes API:
如图所示,用户对集群的请求首先到apiserver内部的Aggregator(聚合器),然后再到实际的apiserver模块。
上面提到的三种扩展方式,可以在图中清晰看到。
特别注意:
对于三种扩展方式的访问如何分配,这是基于kube-aggregator(APIservice)进行筛选的,可以理解成路由表、或者是nginx动静分离的效果。
CRD(Custom Resource Definition)在用法上和原生资源基本相同,都支持通过kubectl命令行或者API方式进行访问和操作。
正是CRD的灵活和强大,从另一方面催生k8s生态的快速发展。
CRD经常和对应的Operator配合出现,来完成一些复杂操作的封装。比如Prometheus Operator和Prometheus CRD,来部署和运维对应的Prometheus 实例
1、首先,我们先创建自定义资源类型:编辑resourcedefinition.yaml
2、apply配置文件
3、创建自定义资源的对象:my-new-cron-object.yaml,其中kind引用上面自定义的资源类型:CronTab,并apply
4、查看自定义资源类型上的pod资源,此时你可以像查看别的原生基础资源那样进行相关操作了。
5、你可以也可以使用我们定义的shortNames来获取信息
在项目中用自定义资源对象时,如果创建自定义资源时某些字段不符合要求,会导致监听该资源对象的异常和报错
通过 OpenAPI v3 schema和ValidatingAdmissionWebhook验证自定义对象是否符合标准。
1、在自定义资源类型CronTab中,定义crontabs-crd-with-validation.yaml,新增Validation(验证)功能
你也可以通过以下命令,查看openAPIV3Schema的语法结构
2、编辑crontabs-with-invalid-field.yaml,引用kind: CronTab,并设置非法userID,验证Validation(验证)功能是否work,并apply
3、这时候发现Validation(验证)已经生效,拦截了pod初始化和运行
以下示例将CustomResourceDefinition添加至all的类别列表,并说明如何使用 kubectl get all输出自定义资源 。
1、首先,编辑resourcedefinition-with-category.yaml,并apply
API配置:kubectl explain CustomResourceDefinition.spec.names.categories
2、接着,编辑my-crontab.yaml,并apply
3、使用kubectl get all,这时候就可以看到我们自定义的Crontab类型资源了
到此这篇kubectl 配置文件(kubeadm配置文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/26003.html