本节介绍如何在无法访问 Internet 的情况下从 KubeSphere 企业版 v4.1.2 离线升级到 KubeSphere 企业版 v4.1.3。

前提条件

  • 联系 KubeSphere 企业版交付服务专家获取 KubeSphere 企业版 v4.1.3 安装包。

  • 请确保当前 KubeSphere 企业版版本为 v4.1.2。

  • 请确保当前 Kubernetes 版本为 v1.21.x ~ v1.30.x。

  • 若扩展组件有特殊配置,需备份扩展组件配置。在“扩展组件配置”对话框中,下载文件备份。

  • 为避免数据丢失,请提前备份所有重要数据。

准备工作

1. 解压安装包

  1. 将 KubeSphere 企业版安装包传输到待升级集群的节点,并登录该集群节点。

  2. 执行以下命令解压 v4.1.3 安装包(将 <package name> 替换为安装包的实际名称)。

    tar -zxvf <package name>
    注意

    请确保操作目录有足够的可用空间,建议大于 100 GB。

  3. 进入安装包解压后生成的目录(将 <directory> 替换为安装包解压后生成的目录)。

    cd <directory>
    说明

    若想了解安装包各个文件的作用,请参阅查看安装包内容

2. 推送镜像

  1. 在 v4.1.3 目录下,编辑安装 KubeSphere 企业版时创建的 config-sample.yaml 文件,修改其中的 registry 部分。

        privateRegistry: "dockerhub.kubekey.local/kse" # 替换为实际镜像仓库地址
        auths:
          "dockerhub.kubekey.local":  # 替换为实际镜像仓库地址
            username: admin           # 替换为镜像仓库的用户名
            password: Harbor12345     # 替换为镜像仓库的密码
            skipTLSVerify: true
            plainHTTP: true   # 如果镜像仓库使用 http,该参数设置为 true
  2. 推送镜像到所使用的镜像仓库。

    ./kk artifact images push -f config-sample.yaml -a kubekey-artifact.tar.gz

升级 KubeSphere 企业版

KubeSphere 企业版 v4.1 及后续版本采用 helm chart 方式升级 ks-core。

升级 host 集群

  1. 确认当前集群为待升级集群。

    kubectl get node -o wide
  2. KubeSphere 企业版 v4.1.3 移除了 kse-extensions-publish,将其整合到了 ks-core 的 chart 中,因此在升级至 v4.1.3 之前,应该对 KubeSphere 企业版历史版本创建的扩展组件资源进行补丁操作。

    # 使用安装包中 tools 目录下的 extension-resources-patch.sh 处理
    bash tools/extension-resources-patch.sh
  3. 检查当前集群的 ks-core 配置。

    helm get values -n kubesphere-system ks-core
  4. 创建升级配置文件,输入以下内容。

    如果上一步中有除镜像仓库、镜像版本、cloud 和 upgrade 之外的其它参数,请一并添加至以下配置文件中。

    cat <<EOF > kse-v4.1.3-host-custom-values.yaml
    # 以下两个参数分别用来指定 ks-core 所使用镜像以及扩展组件所使用镜像的镜像仓库地址
    # 请根据环境实际信息修改
    global:
      imageRegistry: dockerhub.kubekey.local/kse
    extension:
      imageRegistry: dockerhub.kubekey.local/kse
    
    # 注意集群角色参数由 role 变更为 multicluster.role
    multicluster:
      role: host
    
    # 开启 ks-core 组件(ks-apiserver、ks-controller-manager、ks-console)的高可用
    # 请根据集群实际情况配置
    ha:
      enabled: false
    
    # 开启 redis 高可用,ks-apiserver 高可用依赖 redis
    # 如该参数为 false,默认 kubesphere-system 下的 redis 为单副本,请根据集群实际情况配置
    redisHA:
      enabled: false
    EOF
  5. 执行以下命令开始升级。

    helm upgrade --install ks-core charts/ks-core -n kubesphere-system -f kse-v4.1.3-host-custom-values.yaml --wait --debug
    注意

    替换 charts/ks-core 为当前环境下 ks-core chart 的真实路径。

  6. 参考以下步骤,检查 host 集群是否升级成功。

    1. 执行以下命令,upgrade job 应该是成功完成的状态,如下所示。

      root@xxx:~# kubectl -n kubesphere-system get job | grep upgrade
      ks-core-post-upgrade    1/1           16s        28m
      ks-core-pre-upgrade     1/1           58s        31m
      prepare-upgrade         1/1           26s        32m
    2. 执行以下命令,pod(ks-apiserver, ks-console, ks-controller-manager)应该为 running 状态,如下所示。

      root@xxx:~# watch kubectl get pod -n kubesphere-system
      NAME                                     READY   STATUS      RESTARTS        AGE
      ks-apiserver-594bb884db-phrlv            1/1     Running     0               28m
      ks-console-7cd55dd9f9-f2jl9              1/1     Running     0               28m
      ks-controller-manager-785fc676dc-9d9j2   1/1     Running     0               28m
  7. 使用原有的 Web 控制台的 IP 地址、管理员用户名和管理员密码,并使用网页浏览器登录 v4.1.3 的 KubeSphere 企业版 Web 控制台。

  8. 根据激活提示点击激活,导入 KubeSphere 企业版的 license。

  9. 检查 host 集群各项功能和数据是否正常。

升级 member 集群

升级 member 集群与升级 host 集群的步骤基本一致,但需注意 member 集群中的特殊参数配置。

  1. 确认当前 member 集群为待升级集群。

    kubectl get node -o wide
  2. 检查 member 集群的 ks-core 配置。

    helm get values -n kubesphere-system ks-core
  3. 获取 member 集群的 jwtSecret 值。

    kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret
  4. 创建升级配置文件,输入以下内容。

    如果上一步中有除镜像仓库、镜像版本、cloud 和 upgrade 之外的其它参数,请一并添加至以下配置文件中。

    cat <<EOF > kse-v4.1.3-member-custom-values.yaml
    # 以下两个参数分别用来指定 ks-core 所使用镜像以及扩展组件所使用镜像的镜像仓库地址
    # 请根据环境实际信息修改
    global:
      imageRegistry: dockerhub.kubekey.local/kse
    authentication:
      issuer:
        jwtSecret: <REPLACE_ME> # 注意替换
    
    # 注意集群角色参数由 role 变更为 multicluster.role
    multicluster:
      role: member
    EOF
  5. 执行以下命令开始升级。

    helm upgrade --install ks-core charts/ks-core -n kubesphere-system -f kse-v4.1.3-member-custom-values.yaml --wait --debug
    注意

    替换 charts/ks-core 为当前环境下 ks-core chart 的真实路径。

  6. 参考以下步骤,检查 member 集群是否升级成功。

    1. 执行以下命令,upgrade job 应该是成功完成的状态,如下所示。

      root@xxx:~# kubectl -n kubesphere-system get job | grep upgrade
      ks-core-post-upgrade    1/1           16s        28m
      ks-core-pre-upgrade     1/1           58s        31m
      prepare-upgrade         1/1           26s        32m
    2. 执行以下命令,ks-agent pod 应该为 running 状态,如下所示。

      root@xxx:~# kubectl -n kubesphere-system get pod
      NAME                          READY   STATUS      RESTARTS        AGE
      ks-agent-5dc5b57977-4x6mf     2/2     Running     0               59m
  7. 如果您在以上升级命令中增加了自定义配置(如,--set a=b),需在 Web 控制台同步添加 member 集群的自定义配置。

    方法:在集群管理页面,在需要操作的集群右侧点击more,然后在下拉列表中选择编辑配置。在弹窗中,输入 a: b

    说明

    如果您在升级命令中未加入自定义的配置,则无需在 Web 控制台添加集群配置。

升级扩展组件

在扩展中心升级所需的扩展组件。对于已备份特殊配置的扩展组件,需先修改配置后再升级。

  1. 在扩展中心点击组件名称,进入组件详情页。

  2. 点击组件图标下的more,选择扩展组件配置

  3. 扩展组件配置对话框中,点击恢复推荐配置,然后在默认配置中手动修改为定制化的配置,点击确定

  4. 再次点击组件图标下的more,选择更新

  5. 扩展组件更新对话框中,点击开始更新等待升级完成。

至此,KubeSphere 企业版完成全部升级。

可升级扩展组件列表

扩展组件 KSE v4.1.2 KSE v4.1.3

devops

1.1.1

1.1.2

dmp

2.1.3

2.1.4

gatekeeper

1.0.1

1.0.3

gateway

1.0.2

1.0.3

grafana

10.4.3

10.4.14

openpitrix

2.0.1

2.0.2

servicemesh

1.0.0

1.0.1

whizard-alerting

1.0.3

1.0.4

whizard-auditing

1.2.0

1.2.1

whizard-events

1.2.0

1.2.1

whizard-logging

1.2.2

1.2.3

whizard-notification

2.5.9

2.6.0

whizard-telemetry

1.2.2

1.3.0