前言
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
参考