k8s备份恢复实践--velero

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 使用Velero备份k8资源到minio,阿里云oss,七牛云Kodo

k8s备份恢复实践--velero


使用Velero备份k8资源到minio,阿里云oss,七牛云Kodo

环境linux + kubectl

#1.velero简介

  • Velero是用于Kubernetes资源备份、恢复、迁移的开源工具
  • 客户端(velero命令行) -> 服务端(部署在k8s) -> 对象储存(s3或兼容s3储存)
  • velero将k8s资源备份为json文件,可以通过namespace、label等进行筛选备份或恢复
  • github地址 https://github.com/vmware-tanzu/velero

#2.velero安装

#2.1 安装velero客户端
#wget https://github.com/vmware-tanzu/velero/releases/download/v1.13.2/velero-v1.13.2-linux-amd64.tar.gz
wget http://files.elvin.vip/k8s/velero-v1.13.2-linux-amd64.tar.gz
tar -zxf velero-v1.13.2-linux-amd64.tar.gz
mv velero-v1.13.2-linux-amd64/velero /usr/local/bin/
velero version

#启用命令补全
velero completion bash > /etc/bash_completion.d/velero
. /etc/bash_completion.d/velero

#查看帮助
velero -h
#2.2 安装velero服务端

在kubernetes集群安装velero 需要配置好​kubectl​​和​​kubeconfig​

#查看k8s node
kubectl get node
#2.2.1 k8s安装velero使用minio储存

docker安装mino

#创建minio
docker rm -f minio
docker run -dit --name minio -u 0 \
  -h minio --net host --restart always \
  -e MINIO_ROOT_USER="minio" \
  -e MINIO_ROOT_PASSWORD="miniow2p0w2r4" \
  -v /data/minio:/data -w /data \
registry.aliyuncs.com/elvin/minio:2022 \
  minio server /data --console-address '0.0.0.0:9001'

#创建bucket velero
docker exec -it minio bash -c 'mc mb velero; mc ls'
#minio储存地址 http://minio-ip:9000

k8s安装minio

kubectl -f https://gitee.com/alivv/elvin-demo/raw/master/k8s/3.data-minio.yml

#volumes使用hostPath: /opt 可根据需求修改pvc部分 
#minio储存地址 http://minio.kube-public.svc:9000

安装velero使用k8s-minio储存


#创建凭证 create auth
mkdir -p /k8s/velero
cat >~/k8s/velero/auth-minio.txt <<EOF
[default]
aws_access_key_id = minio
aws_secret_access_key = miniow2p0w2r4
EOF

#velero install
velero install \
  --image registry.aliyuncs.com/elvin/velero:v1.13.2 \
  --plugins registry.aliyuncs.com/elvin/velero-plugin-for-aws:v1.9.2 \
  --provider aws \
  --bucket velero \
  --use-volume-snapshots=false \
  --secret-file ~/k8s/velero/auth-minio.txt \
  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.kube-public.svc:9000 

#自定义镜像地址 --image --plugins

velero version
#2.2.2 k8s安装velero使用阿里云oss

在阿里云oss创建bucket
bucket名称elvin-k8s region为oss-cn-shanghai
oss的region和访问域名 https://help.aliyun.com/zh/oss/user-guide/regions-and-endpoints


#创建凭证 create auth
mkdir -p /k8s/velero/velero
cat >~/k8s/velero/velero/auth-oss.txt <<EOF
[default]
aws_access_key_id = 
aws_secret_access_key = lVNCxCVGciaJqUa5axxx
EOF

#install
velero install \
  --image registry.aliyuncs.com/elvin/velero:v1.13.2 \
  --plugins registry.aliyuncs.com/elvin/velero-plugin-for-aws:v1.9.2 \
  --provider aws \
  --use-volume-snapshots=false \
  --bucket elvin-k8s \
  --secret-file ~/k8s/velero/auth-oss.txt \
  --backup-location-config region=oss-cn-shanghai,s3ForcePathStyle="false",s3Url=http://oss-cn-shanghai.aliyuncs.com 

#oss使用virtual hosting访问方式,配置s3ForcePathStyle="false"

velero version
#2.2.3 k8s安装velero使用七牛云

在七牛云创建储存https://portal.qiniu.com/kodo/bucket
获取S3空间域名,打开创建的储存,空间概述,S3 域名,点击查询
七牛云储存region和访问域名 https://developer.qiniu.com/kodo/4088/s3-access-domainname


#创建凭证 create auth
mkdir -p /k8s/velero/velero
cat >~/k8s/velero/auth-qiniu.txt <<EOF
[default]
aws_access_key_id = foqsLZBJSr7yF59_3sB5RguezMh0l223s2NcC9Kz
aws_secret_access_key = BTBwrrCE7TLKjztpsBZX2GA45Cb3yR9Fxxxx
EOF

#install
velero install \
  --image registry.aliyuncs.com/elvin/velero:v1.13.2 \
  --plugins registry.aliyuncs.com/elvin/velero-plugin-for-aws:v1.9.2 \
  --provider aws \
  --use-volume-snapshots=false \
  --bucket 817nb3 \
  --secret-file ~/k8s/velero/auth-qiniu.txt \
  --backup-location-config region=cn-east-1,s3ForcePathStyle="false",s3Url=http://s3.cn-east-1.qiniucs.com

#七牛云bucket使用S3空间域名前部分

velero version

#3. 使用velero备份和恢复

#3.1 备份和恢复测试

#部署nginx-demo
kubectl apply -f https://gitee.com/alivv/elvin-demo/raw/master/k8s/2.1.nginx-demo.yml
kubectl get pod

#备份namespaces为default的所有资源
velero backup create k8s-backup-test --include-namespaces default

#查看备份
velero backup get

#删除nginx-demo
kubectl delete -f https://gitee.com/alivv/elvin-demo/raw/master/k8s/2.1.nginx-demo.yml
kubectl get pod

#使用velero恢复nginx-demo
velero restore create nginx-demo \
  --from-backup k8s-backup-test \
  --include-namespaces default \
  --selector name=nginx-demo 

#查看恢复
velero restore get

#查看pod nginx-demo
kubectl get pod -n default
#卸载velero后重新安装以验证备份正常
velero uninstall
#查看备份
velero backup get

#3.2 备份和定时任务

#备份所有资源保留72小时
velero backup create k8s-bakcup-all-$(date +%F) --ttl 72h
#查看备份
velero backup get
#周期性任务
velero schedule create -h

#定时任务,每天16点(UTC时区)备份,保留7天(168h)
velero create schedule k8s-bakcup-all --schedule="0 16 * * *" --ttl 168h

#查看定时任务
velero get schedule

#3.3 velero备份和迁移

  • 创建velero使用的储存
  • 在k8s-A集群安装velero并备份
  • 在k8s-B集群安装velero并恢复,即完成k8s迁移

#4 velero其它实例

#velero基本命令
velero get backup #查看备份
velero get schedule #查看定时备份
velero get restore #查看已有的恢复
velero get plugins #查看插件

#备份所有
velero backup create k8s-bakcup-all --ttl 72h
#恢复集群所有备份,对已经存在的服务不会覆盖
velero restore create --from-backup k8s-bakcup-all
#仅恢复default的namespace,包括集群资源
velero restore create --from-backup k8s-bakcup-all --include-namespaces default --include-cluster-resources=true
#恢复储存pv,pvc
velero restore create pvc --from-backup k8s-bakcup-all --include-resources persistentvolumeclaims,persistentvolumes
#恢复指定资源deployments,configmaps 
velero restore create deploy-test --from-backup k8s-bakcup-all --include-resources deployments,configmaps 
#筛选备份name=nginx-demo -l, --selector:通过指定label来匹配要backup的资源
velero backup create nginx-demo --from-backup k8s-bakcup-all --selector name=nginx-demo

#筛选备份恢复对象
--include-namespaces  筛选命名空间所有资源,不包括集群资源
--include-resources   筛选的资源类型
--exclude-resources   排除的资源类型
--include-cluster-resources=true 包括集群资源

#将test1命名空间资源恢复到test2  
velero restore create test1-test2 --from-backup k8s-bakcup-all --namespace-mappings test1:test2 

#备份hooks
#Velero支持在备份任务执行之前和执行后在容器中执行一些预先设定好的命令
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
7月前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
307 2
|
2月前
|
存储 负载均衡 测试技术
ACK Gateway with Inference Extension:优化多机分布式大模型推理服务实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with Inference Extension组件,在Kubernetes环境中为多机分布式部署的LLM推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
3月前
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
3月前
|
存储 人工智能 物联网
ACK Gateway with AI Extension:大模型推理的模型灰度实践
本文介绍了如何使用 ACK Gateway with AI Extension 组件在云原生环境中实现大语言模型(LLM)推理服务的灰度发布和流量分发。该组件专为 LLM 推理场景设计,支持四层/七层流量路由,并提供基于模型服务器负载感知的智能负载均衡能力。通过自定义资源(CRD),如 InferencePool 和 InferenceModel,可以灵活配置推理服务的流量策略,包括模型灰度发布和流量镜像。
|
4月前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。
|
4月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
4月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
6月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
6月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
7月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多