eks.tke.cloud.tencent.com/pod-ip: "xx.xx.xx.xx"
eks.tke.cloud.tencent.com/metrics-port: "9110"
以下将介绍 TKE 集群 A 中的资源迁移到 TKE Serverless 集群 B 中的详细操作步骤。
操作步骤请参见 创建存储桶。
下载 Velero 最新版本安装包到集群环境中,本文以 v1.8.1 版本为例。
wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
执行以下命令解压安装包,安装包提供 Velero 命令行执行文件和一些示例文件。
tar -xvf velero-v1.8.1-linux-amd64.tar.gz
执行以下命令,将 Velero 可执行文件从解压后的目录迁移到系统环境变量目录下直接使用,本文以迁移至 /usr/bin
目录为例。示例如下:
cp velero-v1.8.1-linux-amd64/velero /usr/bin/
配置 velero 客户端,开启 CSI 特性。
velero client config set features=EnableCSI
执行以下命令在集群 A 和集群 B 中安装 Velero ,创建 Velero 工作负载以及其他必要的资源对象。
velero install --provider aws \
--plugins velero/velero-plugin-for-aws:v1.1.0,velero/velero-plugin-for-csi:v0.2.0 \
--features=EnableCSI \
--features=EnableAPIGroupVersions \
--bucket <BucketName> \
--secret-file ./credentials-velero \
--use-volume-snapshots=false \
--backup-location-config region=ap-guangzhou,s3ForcePathStyle="true",s3Url=https://cos.ap-guangzhou.myqcloud.com
注意:TKE Serverless 集群不支持部署 Daemonset,因此本文示例都不支持使用 restic 插件。
./velero install --provider aws --use-volume-snapshots=false --bucket gtest-1251707795 --plugins velero/velero-plugin-for-aws:v1.1.0 --secret-file ./credentials-velero --backup-location-config region=ap-guangzhou,s3ForcePathStyle="true",s3Url=https://cos.ap-guangzhou.myqcloud.com
安装参数说明详情见 velero 安装参数,您也可以使用命令 velero install --help
查看。
其他安装参数说明:
安装参数 | 参数说明 |
---|---|
--plugins | 使用 AWS S3 兼容 API 插件 “velero-plugin-for-aws”;使用 CSI 插件 velero-plugin-for-csi 对 csi-pv 进行备份,建议开启。 |
--features | 启用可选功能:启用 API 组版本功能 该功能用于兼容不同 API 组版本,建议开启;启用 CSI 快照功能 该功能用于备份 CSI 支持的 PVC,建议开启。 |
--use-restic | Velero 支持使用免费开源备份工具 Restic 备份和还原 Kubernetes 存储卷数据 (不支持 hostPath 卷,详情请参见 Restic 限制),该集成是 Velero 备份功能的补充,在迁移 TKE Serverless 集群的场景下,开启该参数会导致备份失败。 |
--use-volume-snapshots=false | 关闭默认存储卷快照备份 |
velero backup-location get
NAME PROVIDER BUCKET/PREFIX PHASE LAST VALIDATED ACCESS MODE DEFAULT
default aws <BucketName> Available 2022-03-24 21:00:05 +0800 CST ReadWrite true
至此,Velero 安装完成。了解 Velero 更多安装介绍,请参见 Velero 官网文档。
说明:
- 如不需要备份 PVC,可跳过该步骤。
- 更多存储快照相关功能,请参见 使用 CBS CSI 插件对 PVC 进行备份与恢复。
确认已安装 CBS-CSI 插件。
使用以下 YAML,创建 VolumeSnapshotClass 对象。示例如下:
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshotClass
metadata:
labels:
velero.io/csi-volumesnapshot-class: "true"
name: cbs-snapclass
driver: com.tencent.cloud.csi.cbs
deletionPolicy: Delete
执行以下命令,检查 VolumeSnapshotClass 是否创建成功。示例如下:
$ kubectl get volumesnapshotclass
NAME DRIVER DELETIONPOLICY AGE
cbs-snapclass com.tencent.cloud.csi.cbs Delete 17m
说明:如不需要备份 PVC,可跳过该步骤。
在集群 A 中部署 Velero 实例中含有 PVC 的 minio 工作负载,这里使用 cbs-csi 动态存储类来创建 PVC 和 PV。
使用集群中 provisioner 为 com.tencent.cloud.csi.cbs
的存储类来动态创建 pv。pvc 示例如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
volume.beta.kubernetes.io/storage-provisioner: com.tencent.cloud.csi.cbs
name: minio
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: cbs-csi
volumeMode: Filesystem
使用 Helm 工具,创建一个引用上述 pvc 的 MinIO 测试服务,MinIO 安装方式请参见 MinIO 安装。在此示例中,已经为 MinIO 服务绑定了负载均衡器,可以在浏览器中使用公网地址访问管理页面。
登录 MinIO Web 管理页面,上传用于测试的图片。如下图所示:
kubectl patch backupstoragelocation default --namespace velero \
--type merge
--patch '{"spec":{"accessMode":"ReadWrite"}}'
Timeout to ensure pod sandbox
:TKE Serverless 集群 Pod 内的组件会与管控面通讯以保持健康检测,当 Pod 创建完后,Pod 持续 6 分钟网络不通,则会被管控面发起销毁重建。此时需检查 Pod 关联的安全组是否放通了 169.254 路由的访问。ImageGCFailed
:TKE Serverless 集群 Pod 默认磁盘大小为 20GiB, 如果磁盘使用空间达到 80%,TKE Serverless 集群管控面就会触发容器镜像的回收流程,尝试回收未使用的容器镜像来释放磁盘空间。如果未能释放任何空间,则会有一条事件提醒:ImageGCFailed: failed to garbage collect required amount of images
,提醒用户磁盘空间不足。常见磁盘空间不足的原因有:
本页内容是否解决了您的问题?