ACK下使用Velero进行备份、迁移、恢复-之安装篇

本文涉及的产品
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,每月免费额度200元 3个月
云服务器 ECS,u1 4核16GB 1个月
简介: Velero 是用Go 语言 写的一款用于Kubernetes灾难恢复和迁移的工具。

背景:

使用阿里云ACK的备份中心进行备份会出现404,因为flexvolume集群下不支持csdr备份。

安装的时候组件报错异常退出了因此导致控制台404。

只能使用开源的 Velero

图片.png



什么是Velero

Velero 的基本原理就是将Kubernetes 集群资源对象数据备份到对象存储中,并能从对象存储中拉取备份数据来恢复集群资源对象数据。不同于etcd 备份——将集群的全部资源备份起来——Velero 是对Kubernetes 集群内资源对象级别进行备份,可以通过对Type、Namespace、Label等对象进行分类备份或者恢复。Velero的操作(backup, scheduled backup, restore)都是CRD自定义资源,存储etcd中。 Velero的整体模块架构如下图

图片.png

首先,客户端是一个简单的交互客户端Velero-cli,封装了各种命令参数,可以执行安装、配置、备份、恢复等操作。服务端则可以类比成一个典型的kubebuild 的operator,首先是不同的CR,也就是API。中间Controller 层需要用到一些相对比较独立的服务时,都会通过插件系统来对接到内部或者外部的插件服务。底层的数据拷贝层是对接Restic。其它都是外部的插件实现,velero.io/plugins 就代表内部的插件实现,由Velero 或者第三方厂商来实现。




velero 安装

https://velero.io/docs/v1.10/

此处安装的是1.9.3版本,目前最新版本为1.11。


使用velero-plugin 可以对接多个云厂商,此处使用阿里云



1,安装好velero cli工具


mac下

brew install velero


linux下

https://github.com/vmware-tanzu/velero/releases/tag/v1.9.3

wget https://github.com/vmware-tanzu/velero/releases/download/v1.9.3/velero-v1.9.3-linux-amd64.tar.gz

mv velero /usr/local/bin/


图片.png


可以看到 velero server 服务端 无法连接。那是因为还没有安装服务端


2,准备个OSS bucket

类似的 创建命令为

BUCKET=  

REGION=

ossutil mb oss://$BUCKET  --storage-class Standard     --acl=private

此处手动创建了 k8s-file-backup  这个bucket:k8s-file-backup

所以整体访问地址为:

k8s-file-backup.oss-cn-hangzhou-internal.aliyuncs.com


3,创建一个 Velero RAM 账号

用户登录名称 velero-backup

AccessKey ID xxxx

AccessKey Secret xxxx

保留好 上面的AK和AS


4,Policy策略

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:DescribeSnapshots",
                "ecs:CreateSnapshot",
                "ecs:DeleteSnapshot",
                "ecs:DescribeDisks",
                "ecs:CreateDisk",
                "ecs:Addtags",
                "oss:PutObject",
                "oss:GetObject",
                "oss:DeleteObject",
                "oss:GetBucket",
                "oss:ListObjects",
                "oss:DeleteObject",
                "oss:ListBuckets"
            ],
            "Resource": [
                 "acs:oss:*:*:k8s-file-backup/*"
            ],
            "Effect": "Allow"
        }
    ]
}


绑定策略和以上RAM


5,创建一个 认证文件保存以上AK信息

credentials-velero

ALIBABA_CLOUD_ACCESS_KEY_ID=xxxx

ALIBABA_CLOUD_ACCESS_KEY_SECRET=xxxxx



6,  在velero cli 机器上运行命令

velero install \
  --provider alibabacloud \
  --image registry.$REGION.aliyuncs.com/acs/velero:1.4.2-2b9dce65-aliyun \
  --bucket $BUCKET \
  --secret-file ./credentials-velero \
  --use-volume-snapshots=false \
  --backup-location-config region=$REGION,network=internal \
  --use-restic \
  --plugins registry.$REGION.aliyuncs.com/acs/velero-plugin-alibabacloud:v1.0.0-2d33b89 \
  --wait


图片.png


图片.png安装报错


图片.png

lookup registry.hangzhou.aliyuncs.com on 100.100.2.136:53

registry.hangzhou.aliyuncs.com 貌似地址不存在了,只能换成registry.cn-hangzhou.aliyuncs.com



可以拉取镜像了,但启动报错

图片.png


OSS的地址 报错

k8s-file-backup.oss-hangzhou-internal.aliyuncs.com

应该是

k8s-file-backup.oss-cn-hangzhou-internal.aliyuncs.com

看了源代码,貌似没有问题,取region这个配置,判断region=hangzhou,应该改为cn-hangzhou


图片.png


清理安装-删除

kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero


图片.png


继续重新安装,设定的REGION 改变了


BUCKET=k8s-file-backup

REGION=cn-hangzhou


主配置不变

velero install \
  --provider alibabacloud \
  --image registry.$REGION.aliyuncs.com/acs/velero:1.4.2-2b9dce65-aliyun \
  --bucket $BUCKET \
  --secret-file ./credentials-velero \
  --use-volume-snapshots=false \
  --backup-location-config region=$REGION,network=internal \
  --use-restic \
  --plugins registry.$REGION.aliyuncs.com/acs/velero-plugin-alibabacloud:v1.0.0-2d33b89 \
  --wait

直接执行


查看velero 日志,应该是oss policy授权问题

图片.png


重新授权

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "oss:ListBuckets",
            "Resource": "acs:oss:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "oss:ListObjects",
                "oss:GetBucketAcl"
            ],
            "Resource": [
                "acs:oss:*:*:k8s-file-backup"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "oss:GetObject",
                "oss:GetObjectAcl",
                "oss:PutObject",
                "oss:DeleteObject"
            ],
            "Resource": [
                "acs:oss:*:*:k8s-file-backup/*"
            ]
        }
    ]
}


重启pod ,状态都正常了。


图片.png



7,  安装 velero restic helper image


apiVersion: v1
kind: ConfigMap
metadata:
  name: restic-restore-action-config
  labels:
    velero.io/plugin-config: ""
    velero.io/restic: RestoreItemAction
data:
  image: registry.cn-hangzhou.aliyuncs.com/acs/velero-restic-restore-helper:latest
  cpuRequest: 200m
  memRequest: 128Mi
  cpuLimit: 200m
  memLimit: 128Mi


kubectl -n velero apply -f configmap.yaml

图片.png


执行velero version

图片.png

好了,安装完毕。


默认~/.kube/config  , 也可以指定 velero version --kubeconfig  ~/.kube/xxx-config



参考:

https://cloudnative.to/blog/introducing-velero/#%E5%8E%9F%E7%90%86

https://velero.io/docs/


下一篇讲下如何使用Velero 进行备份和恢复。

谢谢关注。



相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
Kubernetes 数据安全/隐私保护 Docker
|
27天前
|
Kubernetes 负载均衡 应用服务中间件
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
|
27天前
|
Kubernetes 网络安全 API
k8s 二进制安装 详细安装步骤(二)
k8s 二进制安装 详细安装步骤(二)
|
27天前
|
Kubernetes 算法 API
k8s 二进制安装 详细安装步骤(一)
k8s 二进制安装 详细安装步骤(一)
|
27天前
|
Kubernetes 数据安全/隐私保护 Docker
kubeadm 工具实验 k8s一键安装
kubeadm 工具实验 k8s一键安装
|
1月前
|
Kubernetes Linux 网络安全
kubeadm安装k8s
该文档提供了一套在CentOS 7.6上安装Docker和Kubernetes(kubeadm)的详细步骤,包括安装系统必备软件、关闭防火墙和SELinux、禁用swap、开启IP转发、设置内核参数、配置Docker源和加速器、安装指定版本Docker、启动Docker、设置kubelet开机启动、安装kubelet、kubeadm、kubectl、下载和配置Kubernetes镜像、初始化kubeadm、创建kubeconfig文件、获取节点加入集群命令、下载Calico YAML文件以及安装Calico。这些步骤不仅适用于v1.19.14,也适用于更高版本。
158 1
|
1月前
|
存储 Kubernetes Linux
K8S必备知识--docker的介绍以及安装
K8S必备知识--docker的介绍以及安装
|
1月前
|
存储 Kubernetes 算法
Linus上k8s安装etcd
Linus上k8s安装etcd
20 1
|
1月前
|
Kubernetes 应用服务中间件 nginx
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
70 5
|
1月前
|
Kubernetes Linux Docker
深度解析:Kubernetes 1.28.2集群安装过程中的关键步骤
本文旨在为读者提供一份详尽的Kubernetes 1.28.2集群安装指南,帮助您从零开始构建稳定、高效的Kubernetes集群。我们将从环境准备、软件安装、集群初始化到节点添加等各个环节进行逐步讲解,确保您能够顺利完成集群的搭建。