Linux on IBM Z and LinuxONE 上升级 Cassandra 数据存储

您可以升级 Cassandra 操作员。

准备工作

请确保您已准备好在线和离线主机,以便从外部存储库拉取图像。 此外,请确保已添加正确的 Helm 仓库。

Cassandra 操作员版本和部署图像标签

以下图片是固定的 Helm 图表或运算符版本所需的。

平台 操作员版本 Helm Chart 版本 带标签的图片
Linux® on IBM Z® and LinuxONE 1.29.0 0.63.1

artifact-public.instana.io/self-hosted-images/3rd-party/operator/cass-operator: 1.29.0_v0.39.0

artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger: 1.26.0_v0.22.0

artifact-public.instana.io/self-hosted-images/3rd-party/datastore/k8ssandra-client: 0.8.12_v0.33.0

artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cassandra: 4.1.10_v0.41.0

在线升级 Cassandra

要在在线环境中升级 Cassandra 数据存储,请执行以下步骤:

  1. 创建一个文件 cass_values.yaml 来配置污点和容忍度。

    nodeSelector:
      node-role.kubernetes.io/monitor: "true"
    tolerations:
      - key: node.instana.io/monitor
        operator: Equal
        effect: NoSchedule
        value: "true"
     
  2. 升级 Cassandra 操作员。

    helm upgrade --install cass-operator instana/cass-operator -n instana-cassandra --version=0.63.1 --set securityContext.runAsGroup=999 --set securityContext.runAsUser=999 --set image.registry=artifact-public.instana.io --set image.repository=self-hosted-images/3rd-party/operator/cass-operator --set image.tag=1.29.0_v0.39.0 --set imagePullSecrets[0].name=instana-registry --set appVersion=1.29.0 --set imageConfig.systemLogger=artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger:1.26.0_v0.22.0 --set imageConfig.k8ssandraClient=artifact-public.instana.io/self-hosted-images/3rd-party/datastore/k8ssandra-client:0.8.12_v0.33.0 -f cass_values.yaml
     
  3. 通过运行以下命令升级 Cassandra ,以修补 Cassandra 配置:

    kubectl patch cassandradatacenter cassandra -n instana-cassandra --type=merge --patch '
    spec:
      serverImage: artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cassandra:4.1.10_v0.41.0
      systemLoggerImage: artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger:1.26.0_v0.22.0
      0.8.12_v0.33.0
      serverVersion: "4.1.10"
    '
     
  4. 完成验证 Cassandra 的步骤(在线和离线)。

离线升级 Cassandra

如果您尚未从外部注册表中拉取 Cassandra 的镜像,现在可以进行拉取。 在您的堡垒主机上运行以下命令。 然后,将图像复制到您处于物理隔离环境中的 Instana 主机上。

docker pull artifact-public.instana.io/self-hosted-images/3rd-party/operator/cass-operator:1.29.0_v0.39.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger:1.26.0_v0.22.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/k8ssandra-client:0.8.12_v0.33.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cassandra:4.1.10_v0.41.0
         

在您的 Instana 主机上完成以下步骤。

  1. 将图像重新标记到您内部的图像注册表中。

    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/operator/cass-operator:1.29.0_v0.39.0 <internal-image-registry>/operator/cass-operator:1.29.0_v0.39.0
    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger:1.26.0_v0.22.0 <internal-image-registry>/datastore/system-logger:1.26.0_v0.22.0
    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/k8ssandra-client:0.8.12_v0.33.0 <internal-image-registry>/datastore/k8ssandra-client:0.8.12_v0.33.0
    docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cassandra:4.1.10_v0.41.0 <internal-image-registry>/datastore/cassandra:4.1.10_v0.41.0
                   
  2. 将图像推送到堡垒主机上的内部图像注册表。

    docker push <internal-image-registry>/operator/cass-operator:0.63.1
    docker push <internal-image-registry>/datastore/system-logger:1.26.0_v0.22.0
    docker push <internal-image-registry>/datastore/k8ssandra-client:0.8.12_v0.33.0
    docker push <internal-image-registry>/datastore/cassandra:4.1.10_v0.41.0
                   
  3. 创建一个文件 cass_values.yaml 来配置污点和容忍度。

    nodeSelector:
      node-role.kubernetes.io/monitor: "true"
    tolerations:
      - key: node.instana.io/monitor
        operator: Equal
        effect: NoSchedule
        value: "true"
     
  4. 升级 Cassandra 操作员。

    helm upgrade --install cass-operator cass-operator-0.63.1.tgz -n instana-cassandra --version=0.63.1 --set securityContext.runAsGroup=999 --set securityContext.runAsUser=999 --set image.registry=<internal-image-registry> --set image.repository=operator/cass-operator --set image.tag=1.29.0_v0.39.0 --set imagePullSecrets[0].name=instana-registry --set appVersion=1.29.0 --set imageConfig.systemLogger=<internal-image-registry>/datastore/system-logger:1.26.0_v0.22.0 --set imageConfig.k8ssandraClient=<internal-image-registry>/datastore/k8ssandra-client:0.8.12_v0.33.0 -f cass_values.yaml
     
  5. 通过运行以下命令升级 Cassandra ,以修补 Cassandra 配置:

    kubectl patch cassandradatacenter cassandra -n instana-cassandra --type=merge --patch '
    spec:
      serverImage: <internal-image-registry>/self-hosted-images/3rd-party/datastore/cassandra:4.1.10_v0.41.0
      systemLoggerImage: <internal-image-registry>/self-hosted-images/3rd-party/datastore/system-logger:1.26.0_v0.22.0
      serverVersion: "4.1.10"
    '
     
  6. 完成验证 Cassandra 的步骤(在线和离线)。

验证 Cassandra (在线和离线)

  1. 验证 Cassandra 数据存储的部署情况。

    kubectl get all -n instana-cassandra
     
  2. 如果成功升级了 Cassandra 数据存储,则该命令的执行结果可能如下所示:

    NAME                                  READY   STATUS    RESTARTS   AGE
    pod/cass-operator-57dcc8884f-92knc    1/1     Running   0          36m
    pod/instana-cassandra-default-sts-0   2/2     Running   0          26m
    pod/instana-cassandra-default-sts-1   2/2     Running   0          26m
    pod/instana-cassandra-default-sts-2   2/2     Running   0          26m
    
    NAME                                                TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                        AGE
    service/cass-operator-webhook-service               ClusterIP   192.168.1.55   <none>        443/TCP                                        36m
    service/instana-cassandra-additional-seed-service   ClusterIP   None           <none>        <none>                                         26m
    service/instana-cassandra-all-pods-service          ClusterIP   None           <none>        9042/TCP,8080/TCP,9103/TCP,9000/TCP            26m
    service/instana-cassandra-service                   ClusterIP   None           <none>        9042/TCP,9142/TCP,8080/TCP,9103/TCP,9000/TCP   26m
    service/instana-seed-service                        ClusterIP   None           <none>        <none>                                         26m
    
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/cass-operator   1/1     1            1           36m
    
    NAME                                       DESIRED   CURRENT   READY   AGE
    replicaset.apps/cass-operator-57dcc8884f   1         1         1       36m
    
    NAME                                             READY   AGE
    statefulset.apps/instana-cassandra-default-sts   3/3     26m
     
  3. 请确保 Pod 已安排在目标节点上。

    kubectl get pods -n instana-cassandra -o wide
     

    以下示例展示了输出结果。

    NAME                              READY   STATUS    RESTARTS   AGE    IP              NODE                                   NOMINATED NODE   READINESS GATES
    cass-operator-778bf546b6-gmdt6    1/1     Running   0          5d1h   10.254.20.182   worker0.instana-odf5.cp.fyre.ibm.com   <none>           <none>
    instana-cassandra-default-sts-0   2/2     Running   0          33h    10.254.20.187   worker1.instana-odf5.cp.fyre.ibm.com   <none>           <none>
    instana-cassandra-default-sts-1   2/2     Running   0          33h    10.254.24.102   worker2.instana-odf5.cp.fyre.ibm.com   <none>           <none>
    instana-cassandra-default-sts-2   2/2     Running   0          33h    10.254.16.138   worker3.instana-odf5.cp.fyre.ibm.com   <none>           <none>