当前位置: 首页 > 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 将等待,除非手动批准更新,否则不会继续。

相关文章:

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

Kubernetes从入门到精通系列之十八&#xff1a;使用 Operator Lifecycle Manager OLM 安装operator 一、先决条件二、安装operator三、示例&#xff1a;安装最新版本的 Operator四、示例&#xff1a;安装特定版本的 Operator 从运算符目录中安装运算符 通过 CatalogSource 将 …...

request、response请求转发和重定向

Request&Response request是请求对象&#xff0c;获取请求数据&#xff1b;response是响应对象&#xff0c;设置响应数据。 request获取请求数据 获取请求方式:request.getMethod()&#xff1b; 获取访问路径&#xff1a;request.getContextPath()&#xff1b; 获取UR…...

MySql学习路线

学习MySQL数据库的路线可以分为不同的阶段&#xff0c;从入门到高级&#xff0c;逐步掌握数据库管理和开发技能。以下是一个关于MySQL学习的路线&#xff1a; ### 初级阶段 1. **数据库基础知识**&#xff1a; - 学习数据库的基本概念&#xff0c;了解关系数据库管理系统&…...

Vue实现首页导航和左侧菜单,介绍mock.js并实现登录注册间的跳转,实现左侧栏折叠效果,优化Main.vue组件,使用mock.js生成随机响应数据

目录 1. mockjs 1.1 mockjs介绍 1.2 mockjs使用步骤 1.2.1 安装mockjs依赖 1.2.2 在项目中引入mockjs 1.2.3 创建目录和文件 1.2.4 为每个组件准备模拟数据 1.2.5 测试 1.2.6 前端调试 1.2.7 mockjs生成随机响应数据 1.2.8 根据不同响应&#xff0c;给出不同提示 2…...

汇总下之RobotFramework自动化框架的系列文章

总下之前分享的RobotFramework自动化框架的系列文章&#xff0c;有需要的同学可关注收藏 python自动化测试框架RobotFramework基础环境安装/使用&#xff08;一&#xff09; python自动化测试框架RobotFramework内置库BuiltIn介绍&#xff08;二&#xff09; python自动化测…...

0052【Edabit ★☆☆☆☆☆】Learn Lodash: _.drop, Drop the First Elements of an Array

0052【Edabit ★☆☆☆☆☆】Learn Lodash: _.drop, Drop the First Elements of an Array arrays Instructions According to the lodash documentation, _.drop creates a slice of an array with n elements dropped from the beginning. Your challenge is to write your…...

从无人机到实景三维海洋系统

无人机&#xff08;比如大疆的测量无人机&#xff09;测量的影像数据一般通过Pix4d处理以后生成OBJ或者FBX格式&#xff0c;在CesiumLab&#xff0c;转成3dtiles&#xff0c;就可以做成实景三维系统。Pix4d的教程在B站有很多&#xff0c;想了解的同学可直接在B站搜索学习&#…...

第二章前端开发ES6基础

目录 扩展运算符 概述 语法 应用 模板字符串 概述 应用 内置对象扩展 概述 数组扩展方法 字符串扩展方法 set数据结构 概述 基本使用 操作方法 遍历方法 认识symbol 概述 作用 基本使用 项目 扩展运算符 概述 扩展运算符(spread operator)是 ES6 中新…...

使用Python将PDF转为图片

将PDF转为图片能方便我们将文档内容上传至社交媒体平台进行分享。此外&#xff0c;转换为图片后&#xff0c;还可以对图像进行进一步的裁剪、调整大小或添加标记等操作。 用Python将PDF文件转JPG/ PNG图片可能是大家在一些项目中会遇到的需求&#xff0c;下面将详细介绍如何使用…...

JAVA 同城服务货运搬家小程序系统开发时应注意哪些?

在开发JAVA同城服务货运搬家小程序系统时&#xff0c;需要注意以下几点&#xff1a; 需求分析与设计&#xff1a;在开始开发前&#xff0c;需要对系统进行详细的需求分析与设计。这包括了对用户需求的理解、业务流程的梳理、数据库的设计以及界面设计等。确保系统的功能完善、…...

uniapp开发小程序 小米手机真机bottom:0无效 底部间隙 设备安全区域处理办法

uniApp自定义导航 CSS设置 bottom:0竟然无效&#xff0c;而iphone和开发模拟器没有问题 height: 150rpx;position: fixed;left: 0;right: 0;bottom: calc(var(--window-bottom,0)); 网上查了各种方法&#xff0c;包括设置bottom:-20啊以及 padding-bottom: constant(safe-are…...

四十、【进阶】索引失效情况2

1、or的使用 在使用索引查询时&#xff0c;如果使用了or&#xff0c;会出现以下情况&#xff1a; &#xff08;情况一&#xff09;or左边是索引查询&#xff0c;or右边不是索引查询 结果&#xff1a;索引查询失效 &#xff08;情况二&#xff09;or左边不是索引查询&#x…...

敏感词过滤--golang

目录 1. 建立敏感词数据库表2. 定时任务&#xff0c;读数据并建立敏感词树2.1 开启定时任务2.2 读数据并建立敏感词树 3. 使用 思路&#xff1a; 将敏感词都存到数据库表中定时读取数据到内存中&#xff0c;构建敏感词前缀树写工具方法&#xff0c;使用内存中的前缀树判断消息…...

NVIDIA cuda安装时全部失败

查看了很多博客&#xff0c;有写的非常详细清楚的博客&#xff0c;csdn上真的是一个很好的学习平台&#xff0c;我在学习过程中遇到的好多bug&#xff0c;都能在这上面找到解决方法&#xff0c;就是一个老师的存在。 我安装NVIDIA cuda安装时失败了N次&#xff0c;数不清了&am…...

APScheduler-调度器AsyncIOScheduler

AsyncIOScheduler 是一个调度器&#xff0c;基于异步IO的库 AsyncIO。它允许你按照指定的时间表执行异步任务。 下面是实现 AsyncIOScheduler 的步骤&#xff0c;我将使用表格展示每个步骤以及需要做的事情。 1 导入必要的库2 创建异步函数3 创建调度器对象4 添加任务到调度器…...

二十三种设计模式全面解析-原型模式(Prototype Pattern)详解:创造对象的奇妙之道

在软件开发的世界中&#xff0c;创新和效率是永恒的追求。然而&#xff0c;频繁的对象实例化过程可能成为我们创新和效率的绊脚石。随着技术的不断进步&#xff0c;一种被广泛应用的设计模式——原型模式&#xff08;Prototype Pattern&#xff09;应运而生。通过克隆现有对象来…...

el-input 给icon图标绑定点击事件

选择suffix-icon&#xff0c;添加点击事件 <temeplate><el-form-item :label"$t(company[Company address])" prop"address"><el-input v-model"enterpriseForm.address"><i slot"suffix" class"el-icon-m…...

计算机网络——物理层

一、物理层的基本概念 &#xff08;一&#xff09;四大特征 机械特性 接口是怎样的 电器特性 用多少伏的电 功能特性 线路上电平电压的特性 过程特性 实现不同功能所发射的信号的顺序 &#xff08;二&#xff09;两种信号 &#xff08;三&#xff09;调制和编码 &#xff08…...

常用排序算法

目录 直接插入排序 希尔排序 ​编辑 选择排序 堆排序 冒泡排序 快速排序 hoare版 挖坑法 前后指针法 非递归 归并排序 非递归 计数排序 直接插入排序 直接插入排序跟依次模扑克牌一样&#xff0c;将最后一张牌依次与前面的牌比较&#xff0c;最后将牌插入到指定位…...

MGRE环境下的OSPF

实验拓扑 需求 1 R6为ISP只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2 R1/4/5为全连的MGRE结构&#xff0c;R1/2/3为星型的拓扑结构&#xff0c;R1为中心站点 3 所有私有网段可以互相通讯&#xff0c;私有网段使用OSPF完成。 IP规划 配置IP R1 # interface GigabitEt…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...