当前位置: 首页 > news >正文

Kubernetes(K8s)从入门到精通系列之十八:使用 Operator Lifecycle Manager(OLM) 安装operator

Kubernetes从入门到精通系列之十八:使用 Operator Lifecycle Manager OLM 安装operator

  • 一、先决条件
  • 二、安装operator
  • 三、示例:安装最新版本的 Operator
  • 四、示例:安装特定版本的 Operator

从运算符目录中安装运算符

通过 CatalogSource 将 Operator 目录加载到集群后,可以通过创建特定通道的订阅来安装 Operator。

一、先决条件

在将运算符安装到命名空间之前,需要创建一个针对运算符计划监视的命名空间的 OperatorGroup,以便在这些命名空间中为运算符生成所需的 RBAC。

注意:OperatorGroup 所针对的命名空间必须与 Operator 包的 ClusterServiceVersion 中指定的 installMode 一致。

kubectl get packagemanifest <operator-name> -o jsonpath="{.status.channels[0].currentCSVDesc.installModes}"

注意:本文档示例中使用全局 OperatorGroup 来安装算子。

二、安装operator

要安装 Operator,只需为Operator 创建订阅即可。这表示从 CatalogSource 订阅此 Operator 的可用版本流的意图:

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:name: <name-of-your-subscription>namespace: <namespace-you-want-your-operator-installed-in>
spec:channel: <channel-you-want-to-subscribe-to>name: <name-of-your-operator>source: <name-of-catalog-operator-is-part-of>sourceNamespace: <namespace-that-has-catalog>installPlanApproval: <Automatic/Manual>

Subscription 对象创建一个 InstallPlan,它要么自动批准(如果 sub.spec.installPlanApproval:自动),要么需要批准(如果 sub.spec.installPlanApproval:手动),然后将 Operator 安装在您想要的命名空间中。

三、示例:安装最新版本的 Operator

如果想要从命名空间 olm 中名为 my-catalog 的目录在集群范围内的命名空间 foo 中安装名为 my-operator 的操作符(即 installModes:AllNamespaces),并且想要订阅稳定频道,

创建一个全局 OperatorGroup(选择所有命名空间):

$ cat og.yamlapiVersion: operators.coreos.com/v1kind: OperatorGroupmetadata:name: my-groupnamespace: foo$ kubectl apply og.yamloperatorgroup.operators.coreos.com/my-group created

然后,为operator创建订阅:

$ cat sub.yamlapiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:name: sub-to-my-operatornamespace: foo
spec:channel: stablename: my-operatorsource: my-catalogsourceNamespace: olminstallPlanApproval: Manual$ kubectl apply -f sub.yaml
subscription.operators.coreos.com/sub-to-my-operator created

由于installPlanApproval设置为Manual,所以我们需要手动进去审批InstallPlan

$ kubectl get ip -n fooNAME            CSV                   APPROVAL    APPROVED
install-nlwcw   my-operator.v0.9.2   Automatic     false$ kubectl edit ip install-nlwcw -n foo

然后将spec.approved从false更改为true。

这应该会在 foo 命名空间中启动操作员的 ClusterServiceVersion,随后操作员 pod 将启动。

为了确保 Operator 安装成功,请检查 ClusterServiceVersion 以及安装它的命名空间中的 Operator 部署。

$ kubectl get csv -n <namespace-operator-was-installed-in>NAME                  DISPLAY          VERSION           REPLACES              PHASE
<name-of-csv>     <operator-name>     <version>  <csv-of-previous-version>   Succeeded
...
$ kubectl get deployments -n <namespace-operator-was-installed-in>
NAME                         READY   UP-TO-DATE   AVAILABLE   AGE
<name-of-your-operator>      1/1     1            1           9m48s

如果 ClusterServiceVersion 无法显示或未达到成功阶段,请检查故障排除文档以调试您的安装。

四、示例:安装特定版本的 Operator

如果想安装特定版本的 Operator,请在订阅中指定startingCSV 属性,如下所示:

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:name: sub-to-my-operatornamespace: foo
spec:channel: stablename: my-operatorsource: my-catalogsourceNamespace: olminstallPlanApproval: ManualstartingCSV: 1.1.0

请注意,批准也已设置为手动,以便在 1.1.0 碰巧被我的目录中的较新版本取代时,OLM 无法立即更新Operator。按照上一示例中的说明批准此订阅的初始安装计划,以便允许安装 1.1.0。

如果是将已安装的 Operator 固定到特定版本 1.1.0,则无需执行任何操作。批准初始安装计划后,OLM 将安装Operator 1.1.0 版本并保持该版本。当在目录中发现更新时,OLM 将等待,除非手动批准更新,否则不会继续。

相关文章:

  • 保姆级教学安装Linux操作系统,以及Linux的语法入门
  • 论文阅读——ELECTRA
  • 一台服务器最大能支持多少条 TCP 连接
  • 9.Vue2-监听属性的用法
  • 地面文物古迹保护方案,用科技为文物古迹撑起“智慧伞”
  • 常见MySQL数据库无法启动的解决方案
  • 使用Ubuntu虚拟机离线部署RKE2高可用集群
  • 汇编运算符和表达式
  • 如何将Mysql数据库的表导出并导入到另外的架构
  • 单例模式python实现
  • Linux CentOS 8(firewalld的配置与管理)
  • vue如何使用路由拦截器
  • centos格式化硬盘/u盘的分区为NTFS格式
  • 【Linux】虚拟机安装Linux、客户端工具,MobaXterm的使用,Linux常用命令
  • centos7 install postgres-15
  • 网络传输文件的问题
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【知识碎片】第三方登录弹窗效果
  • Git 使用集
  • Java编程基础24——递归练习
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Protobuf3语言指南
  • Redis字符串类型内部编码剖析
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • use Google search engine
  • 多线程 start 和 run 方法到底有什么区别?
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 基于游标的分页接口实现
  • 记录:CentOS7.2配置LNMP环境记录
  • 排序(1):冒泡排序
  • 前嗅ForeSpider采集配置界面介绍
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 通过几道题目学习二叉搜索树
  • 项目管理碎碎念系列之一:干系人管理
  • 新手搭建网站的主要流程
  • 一些css基础学习笔记
  • 2017年360最后一道编程题
  • FaaS 的简单实践
  • 进程与线程(三)——进程/线程间通信
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #git 撤消对文件的更改
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (九)信息融合方式简介
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (算法二)滑动窗口
  • (转)h264中avc和flv数据的解析
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • ./configure,make,make install的作用(转)
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复