前言

Operator可以扩展K8s的API从而实现容器云中的运维自动化及监控指标扩展功能;

自动化运维
Operator 可以大幅度提高运维的自动化水平,减少手动操作降低人为错误风险

定制资源
通过定义自己的 CRD,用户可以在 Kubernetes 中创建和管理自定义资源,使得应用的管理变得更加灵活

跨平台性

由于 Operator 遵循 Kubernetes API 的标准,它可以在不同的 Kubernetes 发行版上运行,保持了跨平台性

增强K8S API
Operator 可以通过扩展 K8S API 来为应用程序添加更多自定义管理的能力,提供更强大的 API。

事件触发模式

水平触发-注重事件造成的结果

Level-Triggered,也被称为条件触发LT:只要满足条件,就会一直触发事件。

状态=0时触发,状态=1时也触发,状态一直为0或状态一直为1时还会一直触发; 

边缘触发-注重事件演变的过程

Edge-TriggeredET,只有状态发生变化时,才会触发1次事件。

状态由0变为1时触发1次,或者状态由1变为0时触发1次; 

List-Watch通信机制

在K8S中API-Server和控制器采用List-Watch机制即发布订阅模式进行通信;

List动作

通过向API-Server发送List请求,可以获取指定资源类型的所有资源对象列表

Watch动作

通过向API-Server发送Watch请求,创建1个长连接,持续、实时地监听指定来自API-Server的资源类型变化事件。

事件通知

控制器通过Watch动作与API-Server建立长连接之后,当指定资源类型的对象发生变化时,API-Server采用水平触发模式向订阅者发送事件通知

事件通知中包含了变化的资源对象的详细信息,例如创建、更新、删除等操作的类型和相关数据。

订阅者处理

订阅者可以通过监听事件通知来实现对资源对象变化的实时响应。

例如,可以通过解析事件通知中的数据,进行相应的处理,例如自动伸缩、服务发现、配置更新等操作

Operator

Operator是一种自定义的控制器;

CRD:Custom Resource Definition,数据库表定义

CR:Custom Resource   数据库表中记录

CRO:Custom Resource Object:定义在yaml中的CR被API-server创建之后保存在etcd数据库;

CRD-Controller:1种自定义的控制器,自定义控制器循环watch着API-server发来的CRD变更事件, 达成CR期望的状态;

Operator:CRD+CR+CRO+CRD控制器,该自定义控制器可以实现复杂业务的自动化部署

Operator实现方式有Kubebuilder和Operator-SDK

 

 

参考

posted on 2024-03-22 13:22  Martin8866  阅读(7)  评论(0编辑  收藏  举报