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


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

    运算符目录中安装运算符

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

    一、先决条件

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

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

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

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

    二、安装operator

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

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: -of-your-subscription>
      namespace: -you-want-your-operator-installed-in>
    spec:
      channel: -you-want-to-subscribe-to>
      name: -of-your-operator>
      source: -of-catalog-operator-is-part-of>
      sourceNamespace: -that-has-catalog>
      installPlanApproval: >
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

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

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

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

    $ cat og.yaml
    
      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: my-group
        namespace: foo
    
    $ kubectl apply og.yaml
      operatorgroup.operators.coreos.com/my-group created
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    然后,为operator创建订阅:

    $ cat sub.yaml
    
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: sub-to-my-operator
      namespace: foo
    spec:
      channel: stable
      name: my-operator
      source: my-catalog
      sourceNamespace: olm
      installPlanApproval: Manual
    
    $ kubectl apply -f sub.yaml
    subscription.operators.coreos.com/sub-to-my-operator created
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

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

    $ kubectl get ip -n foo
    
    NAME            CSV                   APPROVAL    APPROVED
    install-nlwcw   my-operator.v0.9.2   Automatic     false
    
    $ kubectl edit ip install-nlwcw -n foo
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    然后将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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

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

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

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: sub-to-my-operator
      namespace: foo
    spec:
      channel: stable
      name: my-operator
      source: my-catalog
      sourceNamespace: olm
      installPlanApproval: Manual
      startingCSV: 1.1.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

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

  • 相关阅读:
    LeetCode栈队列集锦
    76. 最小覆盖子串
    由面试题“Redis是否为单线程”引发的思考【文末送书-23】
    如何快速教你看自己电脑cpu是几核几线程
    HashMap JDK1.8
    互联网摸鱼日报(2022-11-21)
    【Nginx】初识与环境准备
    国家开放大学 模拟试题 训练
    决策树(上):数据挖掘十大算法之一
    使用containerd从0搭建k8s(kubernetes)集群
  • 原文地址:https://blog.csdn.net/zhengzaifeidelushang/article/details/134040240