# 工作集群离线部署/升级指南 !!! note 本文仅针对离线模式下,使用 DCE 5.0 平台所创建的工作集群的 kubernetes 的版本进行部署或升级, 不包括其它 kubeneters 组件的部署或升级。 本文适用以下离线场景: - 用户可以通过以下操作指南,部署 DCE 5.0 平台所创建的非界面中推荐的 Kubernetes 版本。 - 用户可以通过制作增量离线包的方式对使用 DCE 5.0 平台所创建的工作集群的 kubernetes 的版本进行升级。 整体的思路为: 1. 在联网节点构建离线包 2. 将离线包导入火种节点 3. 更新[全局服务集群](../user-guide/clusters/cluster-role.md#_2)的 Kubernetes 版本清单 4. 使用平台 UI 创建工作集群或升级工作集群的 kubernetes 版本 !!! note 目前支持构建的离线 kubernetes 版本,请参考 [kubean 支持的 kubernetes 版本列表](../../community/kubean.md#kubernetes)。 ## 在联网节点构建离线包 由于离线环境无法联网,用户需要事先准备一台能够 **联网的节点** 来进行增量离线包的构建,并且在这个节点上启动 Docker 或者 podman 服务。 参阅[如何安装 Docker?](../../blogs/2023/230315-install-on-linux.md) 1. 检查联网节点的 Docker 服务运行状态 ```bash ps aux|grep docker ``` 预期输出如下: ```console root 12341 0.5 0.2 654372 26736 ? Ssl 23:45 0:00 /usr/bin/docked root 12351 0.2 0.1 625080 13740 ? Ssl 23:45 0:00 docker-containerd --config /var/run/docker/containerd/containerd.toml root 13024 0.0 0.0 112824 980 pts/0 S+ 23:45 0:00 grep --color=auto docker ``` 2. 在联网节点的 __/root__ 目录下创建一个名为 __manifest.yaml__ 的文件,命令如下: ```bash vi manifest.yaml ``` __manifest.yaml__ 内容如下: ```yaml title="manifest.yaml" image_arch: - "amd64" kube_version: # 填写待升级的集群版本 - "v1.28.0" ``` - __image_arch__ 用于指定 CPU 的架构类型,可填入的参数为 __amd64__ 和 __arm64__ 。 - __kube_version__ 用于指定需要构建的 kubernetes 离线包版本,可参考上文的支持构建的离线 kubernetes 版本。 3. 在 __/root__ 目录下新建一个名为 __/data__ 的文件夹来存储增量离线包。 ```bash mkdir data ``` 执行如下命令,使用 kubean `airgap-patch` 镜像生成离线包。 `airgap-patch` 镜像 tag 与 Kubean 版本一致,需确保 Kubean 版本覆盖需要升级的 Kubernetes 版本。 ```bash # 假设 kubean 版本为 v0.13.9 docker run --rm -v $(pwd)/manifest.yml:/manifest.yml -v $(pwd)/data:/data ghcr.m.daocloud.io/kubean-io/airgap-patch:v0.13.9 ``` 等待 Docker 服务运行完成后,检查 __/data__ 文件夹下的文件,文件目录如下: ```console data ├── amd64 │   ├── files │   │   ├── import_files.sh │   │   └── offline-files.tar.gz │   ├── images │   │   ├── import_images.sh │   │   └── offline-images.tar.gz │   └── os-pkgs │   └── import_ospkgs.sh └── localartifactset.cr.yaml ``` ## 将离线包导入火种节点 1. 将联网节点的 __/data__ 文件拷贝至火种节点的 __/root__ 目录下,在 **联网节点** 执行如下命令: ```bash scp -r data root@x.x.x.x:/root ``` `x.x.x.x` 为火种节点 IP 地址 2. 在火种节点上将 __/data__ 文件内的镜像文件拷贝至火种节点内置的 docker resgitry 仓库。登录火种节点后执行如下命令: 1. 进入镜像文件所在的目录 ```bash cd data/amd64/images ``` 2. 执行 __import_images.sh__ 脚本将镜像导入火种节点内置的 Docker Resgitry 仓库。 ```bash REGISTRY_ADDR="127.0.0.1" ./import_images.sh ``` !!! note 上述命令仅仅适用于火种节点内置的 Docker Resgitry 仓库,如果使用外部仓库请使用如下命令: ```shell REGISTRY_SCHEME=https REGISTRY_ADDR=${registry_address} REGISTRY_USER=${username} REGISTRY_PASS=${password} ./import_images.sh ``` - REGISTRY_ADDR 是镜像仓库的地址,比如1.2.3.4:5000 - 当镜像仓库存在用户名密码验证时,需要设置 REGISTRY_USER 和 REGISTRY_PASS 3. 在火种节点上将 __/data__ 文件内的二进制文件拷贝至火种节点内置的 Minio 服务上。 1. 进入二进制文件所在的目录 ```bash cd data/amd64/files/ ``` 2. 执行 import_files.sh 脚本将二进制文件导入火种节点内置的 Minio 服务上。 ```bash MINIO_USER=rootuser MINIO_PASS=rootpass123 ./import_files.sh http://127.0.0.1:9000 ``` !!! note 上述命令仅仅适用于火种节点内置的 Minio 服务,如果使用外部 Minio 请将 `http://127.0.0.1:9000` 替换为外部 Minio 的访问地址。 “rootuser” 和 “rootpass123”是火种节点内置的 Minio 服务的默认账户和密码。 ## 更新全局服务集群的 kubernetes 版本清单 火种节点上执行如下命令,将 `localartifactset` 资源部署到全局服务集群: ```bash kubectl apply -f data/kubeanofflineversion.cr.patch.yaml ``` ## 下一步 登录 DCE 5.0 的 UI 管理界面,您可以继续执行以下操作: 1. 参照[创建集群的文档](../user-guide/clusters/create-cluster.md)进行工作集群创建,此时可以选择 Kubernetes 增量版本。 2. 参照[升级集群的文档](../user-guide/clusters/upgrade-cluster.md)对自建的工作集群进行升级。