diff --git a/content/zh/docs/v4.1/03-installation-and-upgrade/03-upgrade-kubesphere/03-upgrade-kubesphere-from-v3.4.x.adoc b/content/zh/docs/v4.1/03-installation-and-upgrade/03-upgrade-kubesphere/03-upgrade-kubesphere-from-v3.4.x.adoc new file mode 100644 index 000000000..e6cfa7e94 --- /dev/null +++ b/content/zh/docs/v4.1/03-installation-and-upgrade/03-upgrade-kubesphere/03-upgrade-kubesphere-from-v3.4.x.adoc @@ -0,0 +1,190 @@ +--- +title: "从 v3.4.x 升级到 v4.1.3" +keywords: "Kubernetes, {ks_product}, 安装, 升级{ks_product_left}" +description: "介绍如何升级{ks_product_left}。" +weight: 02 +--- + +以下操作步骤适用于将 KubeSphere 从 v3.4.x 升级到 v4.1.3 版本。 + +-- +// Note +include::../../../../_ks_components/admonitions/note.adoc[] + +在开始升级之前,您需要确保当前 KubeSphere 版本已升级到 v3.4.x,否则无法继续升级到 v4.1.3。 + +include::../../../../_ks_components/admonitions/admonEnd.adoc[] +-- + +升级过程分为以下三个主要步骤,请严格按照顺序执行: + +[arabic] +. 升级 host 集群并迁移扩展组件数据。 +. 升级 member 集群并迁移扩展组件数据。 +. 升级网关。 + +=== 下载升级脚本 + +在 host 集群和 member 集群环境中下载升级脚本: + +[source,bash] +---- +curl -LO https://github.com/kubesphere/ks-installer/archive/refs/tags/v4.1.3.tar.gz +tar -xzvf v4.1.3.tar.gz +---- + +=== 修改升级配置文件 + +在 host 和所有的 member 集群中调整升级配置文件,配置文件路径`scripts/ks-core-values.yaml`,其中`upgrade`部分为升级相关的配置项目,你需要在升级之前确认需要升级的组件和配置信息,通过`upgrade.jobs.config..enabled`控制是否需要升级该组件,以下为配置示例: + +[source,yaml] +---- +upgrade: + enabled: true + image: + registry: "" + repository: kubesphere/ks-upgrade + tag: "v4.1.3" + pullPolicy: IfNotPresent + persistenceVolume: + name: ks-upgrade + storageClassName: "" + accessMode: ReadWriteOnce + size: 5Gi + config: + storage: + local: + path: /tmp/ks-upgrade + validator: + ksVersion: + enabled: true + extensionsMuseum: + enabled: true + namespace: kubesphere-system + name: extensions-museum + syncInterval: 0 + watchTimeout: 30m + jobs: + network: + enabled: true # 是启用并升级该扩展组件 + priority: 100 + extensionRef: # 扩展组件的版本配置,需要与 extensions-museum 中的信息一致 + name: "network" + version: "1.1.0" + dynamicOptions: { + "rerun": "false" + } + gateway: + enabled: true + priority: 90 + extensionRef: + name: "gateway" + version: "1.0.5" +---- + +更多配置说明请参考link:https://github.com/kubesphere/ks-upgrade/tree/release-4.1/docs[扩展组件升级配置说明] + +=== 集群状态检查 + +在升级集群之前,执行以下`scripts/pre-check.sh`脚本文件,检查集群状态及是否满足升级条件。 + +[source,bash] +---- +bash pre-check.sh +---- + +=== 升级 host 集群 + +执行以下命令,升级 host 集群、安装扩展组件并迁移数据。 + +[source,bash] +---- +# 指定镜像仓库地址 +# export IMAGE_REGISTRY=swr.cn-southwest-2.myhuaweicloud.com/ks +# 指定扩展组件镜像仓库地址 +# export EXTENSION_IMAGE_REGISTRY=swr.cn-southwest-2.myhuaweicloud.com/ks +bash upgrade.sh host | tee host-upgrade.log +---- + +执行升级命令后,可以在新的终端窗口中运行以下命令,实时观察`kubesphere-system`命名空间下 Pod 的状态变化: + +[source,bash] +---- +watch kubectl get pod -n kubesphere-system +---- + +=== 升级 member 集群 + +执行以下命令,升级 member 集群、安装扩展组件 agent 并迁移数据。 + +[source,bash] +---- +# 指定镜像仓库地址 +# export IMAGE_REGISTRY=swr.cn-southwest-2.myhuaweicloud.com/ks +# 指定扩展组件镜像仓库地址 +# export EXTENSION_IMAGE_REGISTRY=swr.cn-southwest-2.myhuaweicloud.com/ks +bash upgrade.sh member | tee member-upgrade.log +---- + +执行升级命令后,可以在新的终端窗口中运行以下命令,实时观察`kubesphere-system`命名空间下 Pod 的状态变化: + +[source,bash] +---- +watch kubectl get pod -n kubesphere-system +---- + +在 member 集群升级成功之后,需要在 host 集群上执行以下命令,移除 member 集群的污点,使扩展组件 agent 能够调度到 member 集群上。 + +[source,bash] +---- +kubectl get clusters.cluster.kubesphere.io -o json | jq 'del(.status.conditions[] | select(.type=="Schedulable"))' | kubectl apply -f - +---- + +=== 升级网关 + +网关的升级会导致 Nginx Ingress Controller 重启,依赖网关提供的服务会产生中断,请在业务低峰期进行升级。 + +在开始升级前,请通过以下命令检查集群中部署的网关实例及状态: + +[source,bash] +---- +helm -n kubesphere-controls-system list -a +---- + +通过以下命令逐一升级网关: + +[source,bash] +---- +# 指定镜像仓库地址 +# export IMAGE_REGISTRY=swr.cn-southwest-2.myhuaweicloud.com/ks +bash upgrade.sh gateway kubesphere-router- | tee gateway-upgrade.log +---- + +或者通过以下命令升级所有网关: + +[source,bash] +---- +# 指定镜像仓库地址 +# export IMAGE_REGISTRY=swr.cn-southwest-2.myhuaweicloud.com/ks +bash upgrade.sh gateway all | tee gateway-upgrade.log +---- + +在网关升级完成后,通过以下命令检查网关的部署状态: + +[source,bash] +---- +helm -n kubesphere-controls-system list -a +---- + +=== 完成升级 + +升级完成后,请确保所有服务正常运行,并检查系统的健康状态。可以通过以下命令验证: + +[source,bash] +---- +for ns in $(kubectl get namespaces -l kubesphere.io/workspace=system-workspace -o jsonpath='{.items[*].metadata.name}'); do + kubectl get pods -n $ns --no-headers --ignore-not-found | grep -vE 'Running|Completed' +done +---- + +确保所有 Pod 状态为 `Running`。如有问题,请查看相关容器日志以进行故障排除。 \ No newline at end of file