kubernetes与velero的第一次尝试

拓朴露台
• 阅读 1105

背景

接上文:Kubernetes中gitlab的一次迁移。nexus也要迁移一下。这里更想体验一些velero。很多文章上面看到过:https://mp.weixin.qq.com/s/VC6kVfcBCUQfG6RwM6F1QA腾讯云TKE文档中也有类似的例子:https://cloud.tencent.com/document/product/457/50122。不想使用传统方式了想体验一下velero!
so velero迁移一下kube-ops namespace 到另外一个集群的kube-ops1 namespace

velero 迁移kubernetes体验

1. 下载安装 velero

注意: 1-3步骤在备份和还原集群上面都要操作安装
https://github.com/vmware-tanzu/velero看了一眼最新版本1.18.1.就下载了对应版本linux-amd64.tar.gz(墙裂,下载不下来。为是下载了放在自己的对象存储上面了!)

[root@sh-master-02 ~]# wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
[root@sh-master-02 ~]# tar zxvf velero-v1.8.1-linux-amd64.tar.gz 
[root@sh-master-02 ~]# cd velero-v1.8.1-linux-amd64/
[root@sh-master-02 velero-v1.8.1-linux-amd64]# cp velero /usr/local/bin && chmod +x /usr/local/bin/velero
[root@sh-master-02 velero-v1.8.1-linux-amd64]# velero version

kubernetes与velero的第一次尝试

2. 关于对象存储的开通

阳明大佬还有其他很多文章都是采用了minio.腾讯云的cos 还有 阿里云的oss也是可以的。偷懒了直接使用cos!
先创建一个对象存储桶
kubernetes与velero的第一次尝试

3. 配置安装velero服务端

配置密钥文件:
cat credentials-velero

[default]
aws_access_key_id=<access key id>
aws_secret_access_key=<secret access key>

按照如下命令安装 velero 服务端:

velero install  --provider aws --plugins velero/velero-plugin-for-aws:v1.1.0 --bucket  kubernetes-xxxx \
--secret-file credentials-velero \
--use-restic \
--default-volumes-to-restic \
--backup-location-config \
region=ap-guangzhou,s3ForcePathStyle="true",s3Url=https://cos.ap-guangzhou.myqcloud.com

注意:gion s3 url bucket为腾讯与oos对应参数基本要配置的就是bucket存储桶名词 还有地域!
kubernetes与velero的第一次尝试
kubernetes与velero的第一次尝试
等待velero命名空间下pod running!

[root@sh-master-02 velero]# kubectl get pods -n velero

kubernetes与velero的第一次尝试

4. 备份集群1 kube-ops集群内应用

1. velero backup create命令直接创建

[root@sh-master-02 velero]# velero backup create kube-ops --include-namespaces kube-ops --default-volumes-to-restic

kubernetes与velero的第一次尝试

2. yaml方式创建

cat migrate-kube-ops-2022-03-18-01-backup.yaml

apiVersion: velero.io/v1
kind: Backup
metadata: 
  name: migrate-kube-ops-2022-03-18-01-backup
  # 必须得是 velero 安装的命名空间
  namespace: velero
spec: 
  # 仅包含 nginx-example 命名空间的资源
  includedNamespaces: 
   - kube-ops
  # 包含不区分命名空间的资源
  includeClusterResources: false 
  # 备份数据存储位置指定
  storageLocation: default 
  # 卷快照存储位置指定
  volumeSnapshotLocations: 
    - default 
  # 使用 restic 备份卷
  defaultVolumesToRestic: true

注意:includeClusterResources: false 这个地方一定记得false看腾讯与官方文档写的true!我备份失败了......如果有失败看下这个参数!

[root@sh-master-02 velero]#kubectl apply -f migrate-kube-ops-2022-03-18-01-backup.yaml

kubernetes与velero的第一次尝试
注意: backup create 任务的命名要具有唯一性。建立新的命名任务要用不同的名称!

2. 登陆腾讯云cos管理后台查看备份文件创建

kubernetes与velero的第一次尝试

5. 将kube-ops命名空间下应用还原到集群2kube-ops1命名空间下

注:登陆集群2(要还原的集群)前提1-3已经操作
cat restore.yaml

apiVersion: velero.io/v1
kind: Restore
metadata: 
  name: migrate-kube-ops1-restore
  namespace: velero
spec: 
  backupName: kube-ops
  includedNamespaces: 
    - kube-ops
  
  # 按需填写需要恢复的资源类型,nginx-example 命名空间下没有想要排除的资源,所以这里直接写 '*'
  includedResources: 
    - '*'
  
  includeClusterResources: null
  
  # 还原时不包含的资源,这里额外排除 StorageClasses 资源类型。
  excludedResources: 
    - storageclasses.storage.k8s.io
 
  # 使用 labelSelector 选择器选择具有特定 label 的资源,由于此示例中无须再使用 label 选择器筛选,这里先注释。
  # labelSelector:
  #   matchLabels:
  #     app: nginx
  
  # 设置命名空间关系映射策略
  namespaceMapping: 
    kube-ops: kube-ops1
  restorePVs: true
[root@k8s-master-01 velero]# kubectl apply -f  restore.yaml
[root@k8s-master-01 velero]# velero describe restore migrate-kube-ops1-restore

kubernetes与velero的第一次尝试
等待状态 Pase completed......
kubernetes与velero的第一次尝试
注意:还原的任务也要具有唯一性
等待pod running发现ingress ingressroute没有备份过来
kubernetes与velero的第一次尝试

6. 创建对应ingress ingressroute 登陆gitlab nexus,并修改host or dns解析进行测试:

kubernetes与velero的第一次尝试
kubernetes与velero的第一次尝试
目的基本实现 将一个namespace 下应用迁移到了另外一个集群的namespace下!

更进一步的想法

  1. 其实开始为想得是只备份还原nexus单个应用....下次体验一些备份还原单个应用
  2. 存储类的区别。开始本来想导入tke集群的。且按照腾讯云官方文档:https://cloud.tencent.com/document/product/457/52331.做了持久卷动态映射

    apiVersion: v1
    kind: ConfigMap
    metadata: 
      name: change-storage-class-config
      namespace: velero
      labels: 
     velero.io/plugin-config: ""
     velero.io/change-storage-class: RestoreItemAction
    data: 
      # 存储类名映射到腾讯云动态存储类 cbs
      cbs-csi: cbs
    

    但是导入的时候没有生效还是找cbs-csi存储类!。所以就先导入到有cbs-csi存储类的集群了。具体替换存储类要好好研究一下!

  3. ingress ingress为什么没有备份....有时间研究一下
  4. 特别感谢:https://velero.io/docs/v1.8/csi/

    https://mp.weixin.qq.com/s/VC6kVfcBCUQfG6RwM6F1QA https://cloud.tencent.com/document/product/457/52331

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Rancher开源Harvester:基于K8s的超融合基础架构软件
2020年12月17日,业界应用最为广泛的Kubernetes管理平台创建者RancherLabs(以下简称Rancher)宣布推出全新开源软件Harvester,一个通过Kubernetes构建的超融合基础架构(HCI)软件。!图片(https://img.rwimg.top/7592_5649bc00e54d4b30a1419db9c4
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
Kubernetes中用Helm安装Ceph存储服务
Kubernetes中用Helm安装Ceph存储服务注意:本文仅供参考。在Kubernetes中建议使用Rook项目,更为方便、兼容性更好。在Kubernetes中使用Ceph已经有专门的项目rook(https://rook.io(https://
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Dubbo 3.0 前瞻之对接 Kubernetes 原生服务
Kubernetes是当前全球最流行的容器服务平台,在Kubernetes集群中,Dubbo应用的部署方式往往需要借助第三方注册中心实现服务发现。Dubbo与Kubernetes的调度体系的结合,可以让原本需要管理两套平台的运维成本大大减低,而且Dubbo适配了Kubernetes原生服务也可以让框架本身更加融入云原生体系。基于D
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Kubernetes 副本机制篇
前言在上文KubernetesPod操作篇(https://my.oschina.net/OutOfMemory/blog/3145092)介绍了kubernetes的核心组件Pod,本文继续介绍kubernetes的副本机制,正是因为副本机制你的部署能自动保待运行,并且保持健康,无须任何手动干预。探针kubernetes可以通
Stella981 Stella981
3年前
Kubernetes 调度器实现初探
Kubernetes调度器Kubernetes是一个基于容器的分布式调度器,实现了自己的调度模块。在Kubernetes集群中,调度器作为一个独立模块通过pod运行。从几个方面介绍Kubernetes调度器。调度器工作方式Kubernetes中的调度器,是作为单独组件运行,一般运行在Master中,和Master数量保持
Stella981 Stella981
3年前
Serverless Kubernetes 入门:对 Kubernetes 做减法
作者|贤维 阿里巴巴高级技术专家导读:ServerlessKubernetes是阿里云容器服务团队对未来Kubernetes演进方向的一种探索,通过对Kubernetes做减法,降低运维管理负担,简化集群管理,让Kubernetes从复杂到简单。背景Kubernetes作为通用的容器编排系统,承载了广泛的
Stella981 Stella981
3年前
Kubernetes 两步验证
作者:CODING王炜1\.背景如果对Kubernetes集群安全特别关注,那么我们可能想要实现这些需求:如何实现Kubernetes集群的两步验证,除了集群凭据,还需要提供一次性的Token校验?如何验证部署的镜像是否安全合规,使得仅允许部署公司内部镜像仓库的Docker镜像?
Stella981 Stella981
3年前
Kubernetes 中 kubectl.sh 各种参数(待译)
kubectl是控制Kubernetes的集群管理器。详情查看https://github.com/kubernetes/kubernetes用法: kubectl\flags\ kubectl\command\可用命令: get                
拓朴露台
拓朴露台
Lv1
他乡共酌金花酒,万里同悲鸿雁天
文章
1
粉丝
0
获赞
0
热门文章

暂无数据