K3S 降级

使用说明

**环境说明 单机 我是从k3s 1.33版本 降级到k3s 1.28.10 **

使用velero 进行数据备份

1. 安装minio

docker run -d -p 9000:9000 -p 9001:9001 --name minio -e "MINIO_ROOT_USER=root" -e "MINIO_ROOT_PASSWORD=A123456." -e "MINIO_COMPRESS=off" -v /data/minio/data:/data -v /data/minio/config:/root/.minio/ 192.168.31.85/amd64/minio:RELEASE.2022-09-17T00-09-45Z server --address ":9000" --console-address ":9001" /data

2. 安装velero

2.1 添加k3s 环境变量到配置文件中
vi /etc/profile
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

# 使其生效
source /etc/profile
2.2 安装velero
# 创建目录
mkdir -p /opt/velero

# 下载二进制文件
wget --no-check-certificate https://github.com/vmware-tanzu/velero/releases/download/v1.18.0/velero-v1.18.0-linux-amd64.tar.gz

# 解压
tar xf velero-v1.18.0-linux-amd64.tar.gz

# 移动到/usr/local/bin 中
cp velero-v1.18.0-linux-amd64/velero /usr/local/bin

# 验证版本
velero version
root@yuanfang:/opt/velero# velero version
Client:
  Version: v1.18.0
  Git commit: 6adcf06b5b0e6fb93998d3e101e2cbdc134fa3c3

3. 准备下载资源

3.1 准备minio 对应的帐号密码
cat > /opt/velero/credentials-velero <<EOF
[default]
aws_access_key_id = root
aws_secret_access_key = A123456.
EOF
3.2 安装velero 到k3s 中
3.2.1 拉去镜像
ctr -n k8s.io --address=/run/k3s/containerd/containerd.sock images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/velero/velero-plugin-for-aws:v1.2.1

ctr -n k8s.io --address=/run/k3s/containerd/containerd.sock images tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/velero/velero-plugin-for-aws:v1.2.1 docker.io/velero/velero-plugin-for-aws:v1.2.1

ctr -n k8s.io --address=/run/k3s/containerd/containerd.sock images rm swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/velero/velero-plugin-for-aws:v1.2.1

ctr -n k8s.io --address=/run/k3s/containerd/containerd.sock images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/velero/velero:v1.18.0

ctr -n k8s.io --address=/run/k3s/containerd/containerd.sock images tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/velero/velero:v1.18.0 docker.io/velero/velero:v1.18.0

ctr -n k8s.io --address=/run/k3s/containerd/containerd.sock images rm swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/velero/velero:v1.18.0
3.2.2 安装
# 改成自己
velero install \
--provider aws \
--plugins velero/velero-plugin-for-aws:v1.2.1 \
--bucket velero \
--secret-file /opt/velero/credentials-velero \
--use-volume-snapshots=false \
--use-node-agent \
--backup-location-config \
region=minio,s3ForcePathStyle="true",s3Url=http://192.168.31.203:9000


#### 安装的日志信息
CustomResourceDefinition/backuprepositories.velero.io: attempting to create resource client
CustomResourceDefinition/backuprepositories.velero.io: attempting to create resource
CustomResourceDefinition/backuprepositories.velero.io: created
CustomResourceDefinition/backups.velero.io: attempting to create resource client
CustomResourceDefinition/backups.velero.io: attempting to create resource
CustomResourceDefinition/backups.velero.io: created
CustomResourceDefinition/backupstoragelocations.velero.io: attempting to create resource client
CustomResourceDefinition/backupstoragelocations.velero.io: attempting to create resource
CustomResourceDefinition/backupstoragelocations.velero.io: created
CustomResourceDefinition/deletebackuprequests.velero.io: attempting to create resource client
CustomResourceDefinition/deletebackuprequests.velero.io: attempting to create resource
CustomResourceDefinition/deletebackuprequests.velero.io: created
CustomResourceDefinition/downloadrequests.velero.io: attempting to create resource client
CustomResourceDefinition/downloadrequests.velero.io: attempting to create resource
CustomResourceDefinition/downloadrequests.velero.io: created
CustomResourceDefinition/podvolumebackups.velero.io: attempting to create resource client
CustomResourceDefinition/podvolumebackups.velero.io: attempting to create resource
CustomResourceDefinition/podvolumebackups.velero.io: created
CustomResourceDefinition/podvolumerestores.velero.io: attempting to create resource client
CustomResourceDefinition/podvolumerestores.velero.io: attempting to create resource
CustomResourceDefinition/podvolumerestores.velero.io: created
CustomResourceDefinition/restores.velero.io: attempting to create resource client
CustomResourceDefinition/restores.velero.io: attempting to create resource
CustomResourceDefinition/restores.velero.io: created
CustomResourceDefinition/schedules.velero.io: attempting to create resource client
CustomResourceDefinition/schedules.velero.io: attempting to create resource
CustomResourceDefinition/schedules.velero.io: created
CustomResourceDefinition/serverstatusrequests.velero.io: attempting to create resource client
CustomResourceDefinition/serverstatusrequests.velero.io: attempting to create resource
CustomResourceDefinition/serverstatusrequests.velero.io: created
CustomResourceDefinition/volumesnapshotlocations.velero.io: attempting to create resource client
CustomResourceDefinition/volumesnapshotlocations.velero.io: attempting to create resource
CustomResourceDefinition/volumesnapshotlocations.velero.io: created
CustomResourceDefinition/datadownloads.velero.io: attempting to create resource client
CustomResourceDefinition/datadownloads.velero.io: attempting to create resource
CustomResourceDefinition/datadownloads.velero.io: created
CustomResourceDefinition/datauploads.velero.io: attempting to create resource client
CustomResourceDefinition/datauploads.velero.io: attempting to create resource
CustomResourceDefinition/datauploads.velero.io: created
Waiting for resources to be ready in cluster...
Namespace/velero: attempting to create resource client
Namespace/velero: attempting to create resource
Namespace/velero: created
ClusterRoleBinding/velero: attempting to create resource client
ClusterRoleBinding/velero: attempting to create resource
ClusterRoleBinding/velero: created
ServiceAccount/velero: attempting to create resource client
ServiceAccount/velero: attempting to create resource
ServiceAccount/velero: created
Secret/cloud-credentials: attempting to create resource client
Secret/cloud-credentials: attempting to create resource
Secret/cloud-credentials: created
BackupStorageLocation/default: attempting to create resource client
BackupStorageLocation/default: attempting to create resource
BackupStorageLocation/default: created
Deployment/velero: attempting to create resource client
Deployment/velero: attempting to create resource
Deployment/velero: created
Velero is installed! ⛵ Use 'kubectl logs deployment/velero -n velero' to view the status.

4. 备份集群中的数据

4.1 备份单个名称空间数据
# 添加注解 这里的名称 是 volumeMounts 的名称 不是pv 和 pvc 的名称
kubectl patch deployment nginx \
-n app \
--type merge \
-p '{
  "spec": {
    "template": {
      "metadata": {
        "annotations": {
          "backup.velero.io/backup-volumes": "config-config-volume,config-html-volume"
        }
      }
    }
  }
}'

# 创建备份
velero backup create app-backup \
--include-namespaces app

# 恢复
velero restore create --from-backup app-backup
4.2 备份集群全部
velero backup create prod-full-backup \
--include-namespaces='*' \
--exclude-namespaces=kube-system,kube-public,velero,kube-node-lease \
--default-volumes-to-fs-backup

# 恢复 可能需要等待一会
velero restore create --from-backup prod-full-backup

5. 可能遇到的问题

# 我环境中是存在mysql 的数据的
# 先备份mysql中的数据 万一迁移数据丢了 还可以找回来
mysqldump -h192.168.31.191 -P30144 -u root -pYUANfang888 \
  --databases $(mysql -h192.168.31.191 -P30144 -u root -pYUANfang888 -e "SHOW DATABASES;" | grep -v -E '^(information_schema|performance_schema|mysql|sys|Database)$') \
  > backup.sql
  
# 再进行数据恢复的时候 登陆到mysql 发下 只存在  performance_schema mysql information_schema sys 这几个库
# 通过命令进行恢复
mysqlcheck -h192.168.31.191 -P30144 -u root -pYUANfang888 --all-databases
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐