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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储 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 进行备份和恢复。

谢谢关注。



相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
7月前
|
人工智能 运维 Kubernetes
2025 超详细!Lens Kubernetes IDE 多平台下载安装与集群管理教程
Lens 是一款企业级 Kubernetes 可视化操作平台,2025版实现了三大技术革新:AI智能运维(异常检测准确率98.7%)、多云联邦管理(支持50+集群)和实时3D拓扑展示。本文介绍其安装环境、配置流程、核心功能及高阶技巧,帮助用户快速上手并解决常见问题。适用于 Windows、macOS 和 Ubuntu 系统,需满足最低配置要求并前置依赖组件如 kubectl 和 Helm。通过 Global Cluster Hub 实现多集群管理,AI辅助故障诊断提升运维效率,自定义监控看板和插件生态扩展提供更多功能。
|
7月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
Kubernetes 应用服务中间件 nginx
Kubernetes上安装Metallb和Ingress并部署应用程序
Kubernetes上安装Metallb和Ingress并部署nginx应用程序,使用LoadBalancer类型的KubernetesService
779 111
|
8月前
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。
|
10月前
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
3026 11
|
11月前
|
存储 运维 Kubernetes
K8s业务迁移最佳实践: 灵活管理资源备份与调整策略,实现高效简便的应用恢复
在当今快速变化的云原生领域,Kubernetes(K8s)集群的运维面临着诸多挑战,其中灾备与业务迁移尤为关键。ACK备份中心支持丰富的资源调整策略,在数据恢复阶段即可自动适配目标集群环境,确保业务无缝重启。
|
11月前
|
存储 运维 Kubernetes
云端迁移:备份中心助力企业跨云迁移K8s容器服务平台
本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。
|
12月前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
1900 1
|
12月前
|
Kubernetes Linux 开发工具
centos7通过kubeadm安装k8s 1.27.1版本
centos7通过kubeadm安装k8s 1.27.1版本
|
12月前
|
Kubernetes Docker 容器
rancher docker k8s安装(一)
rancher docker k8s安装(一)
112 2

推荐镜像

更多