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

本文涉及的产品
对象存储 OSS,20GB 3个月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
对象存储 OSS,内容安全 1000次 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 进行备份和恢复。

谢谢关注。



相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
18天前
|
存储 运维 Kubernetes
云端迁移:备份中心助力企业跨云迁移K8s容器服务平台
本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。
|
8天前
|
Kubernetes Ubuntu Linux
我应该如何安装Kubernetes
我应该如何安装Kubernetes
|
1月前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
118 1
|
1月前
|
Kubernetes Linux 开发工具
centos7通过kubeadm安装k8s 1.27.1版本
centos7通过kubeadm安装k8s 1.27.1版本
|
1月前
|
Kubernetes Docker 容器
rancher docker k8s安装(一)
rancher docker k8s安装(一)
40 2
|
1月前
|
Kubernetes 网络安全 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
204 2
|
1月前
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
28 1
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
51 1
|
1月前
|
Kubernetes 监控 调度
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
|
1月前
|
缓存 Kubernetes 应用服务中间件
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令