• k8s部署velero去备份etcd


    前期环境说明:
    velero备份必须存储在对象存储里,这里用minio来做对象存储。

    一 minio部署

    # docker pull  minio/minio:RELEASE.2022-04-12T06-55-35Z
    # mkdir -p /data/minio
    
    #创建minio容器,如果不指定,则默认用户名与密码为 minioadmin/minioadmin,可以通过环境变量自定义,如下:
    # docker run --name minio \
    -p 9000:9000 \
    -p 9999:9999 \
    -d --restart=always \
    -e "MINIO_ROOT_USER=admin" \
    -e "MINIO_ROOT_PASSWORD=12345678" \
    -v /data/minio/data:/data \
    minio/minio:RELEASE.2022-04-12T06-55-35Z server /data \
    --console-address '0.0.0.0:9999'
    
    

    访问http:ip:9999
    admin 密码 12345678
    登录成功之后,去创建一个存储桶velerodata

    二 部署velero客户端

    velero分为 客户端和服务端。 其中 velero服务端以pod形式运行在k8s里。

    1 下载velero客户端

    root@k8s-master1:/usr/local/src# wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
    root@k8s-master1:/usr/local/src# tar xvf velero-v1.8.1-linux-amd64.tar.gz
    root@k8s-master1:/usr/local/src# cp velero-v1.8.1-linux-amd64/velero  /usr/local/bin/
    root@k8s-master1:/usr/local/src# velero  --help
    
    

    2 配置velero认证环境

    root@k8s-master1:~# mkdir  /data/velero -p
    root@k8s-master1:/data/velero#
    
    

    3认证文件:为了访问对象存储

    root@k8s-master1:/data/velero# vim velero-auth.txt
    [default]
    aws_access_key_id = admin
    aws_secret_access_key = 12345678
    
    

    三 证书签发

    打通velero和k8s api的通信

    1 准备user-csr文件

    cat  awsuser-csr.json
    {
    "CN": "awsuser",
    "hosts": [],
    "key": {
    "algo": "rsa",
    "size": 2048
    },
    "names": [
    {
    "C": "CN",
    "ST": "BeiJing",
    "L": "BeiJing",
    "O": "k8s",
    "OU": "System"
    }
    ]
    }
    
    

    2准备证书签发环境:

    2.1 下载证书签发工具

    root@k8s-master1:/data/velero# apt install golang-cfssl
    https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl_1.6.1_linux_amd64
    https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssljson_1.6.1_linux_amd64
    https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl-certinfo_1.6.1_linux_amd64
    root@k8s-master1:/data/velero# mv cfssl-certinfo_1.6.1_linux_amd64 cfssl-certinfo
    root@k8s-master1:/data/velero# mv cfssl_1.6.1_linux_amd64 cfssl
    root@k8s-master1:/data/velero# mv cfssljson_1.6.1_linux_amd64 cfssljson
    root@k8s-master1:/data/velero# cp cfssl-certinfo cfssl cfssljson /usr/local/bin/
    root@k8s-master1:/data/velero# chmod  a+x /usr/local/bin/cfssl*
    
    

    2.2执行证书签发:给awsuser用户签发证书

    root@k8s-master1:/data/velero# /usr/local/bin/cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem -ca-key=/etc/kubernetes/ssl/ca-key.pem -config=/etc/kubeasz/clusters/k8s-cluster1/ssl/ca-config.json -profile=kubernetes ./awsuser-csr.json | cfssljson -bare awsuser
    
    

    2.3 验证证书

    root@k8s-master1:/data/velero# ll awsuser*
    -rw-r--r-- 1 root root  220 Apr 14 12:29 awsuser-csr.json
    -rw------- 1 root root 1679 Apr 14 12:30 awsuser-key.pem
    -rw-r--r-- 1 root root  997 Apr 14 12:30 awsuser.csr
    -rw-r--r-- 1 root root 1387 Apr 14 12:30 awsuser.pem
    
    

    2.4 分发证书到api-server证书路径

    root@k8s-master1:/data/velero# cp awsuser-key.pem /etc/kubernetes/ssl/
    root@k8s-master1:/data/velero# cp awsuser.pem /etc/kubernetes/ssl/
    
    

    2.5 生成集群认证config文件:就是awsuser.kubeconfig

    
    export KUBE_APISERVER="https://172.31.7.100:6443"
    kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/ssl/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=./awsuser.kubeconfig
    
    

    2.6设置客户端证书认证:

    kubectl config set-credentials awsuser \
    --client-certificate=/etc/kubernetes/ssl/awsuser.pem --client-key=/etc/kubernetes/ssl/awsuser-key.pem --embed-certs=true --kubeconfig=./awsuser.kubeconfig
    
    
    

    2.7 设置上下文参数

    
    kubectl config set-context kubernetes \
    --cluster=kubernetes --user=awsuser --namespace=velero-system --kubeconfig=./awsuser.kubeconfig
    
    

    2.8 设置默认上下文

    
    kubectl config use-context kubernetes --kubeconfig=awsuser.kubeconfig
    

    最终awsuser.kubeconfig 这个文件创建完成。

    2.9 k8s集群中创建awsuser账户

    kubectl create clusterrolebinding awsuser --clusterrole=cluster-admin --user=awsuser
    
    

    3.0 创建namespace

    
    kubectl create ns velero-system
    

    四 部署velero服务端

    1 安装

    velero --kubeconfig  ./awsuser.kubeconfig install --provider aws --plugins velero/velero-plugin-for-aws:v1.3.1 --bucket velerodata  --secret-file ./velero-auth.txt --use-volume-snapshots=false --namespace velero-system  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://172.31.7.102:9000  # 对象存储的地址minio的地址
    
    

    2 验证安装 查看pod和日志

    
    root@k8s-master1:/data/velero# kubectl  describe pod velero-6755cb8697-phfsr -n velero-system
    
    [root@k8s-master1 velero]# kubectl get pod -n velero-system
    NAME                      READY   STATUS    RESTARTS   AGE
    velero-6755cb8697-sw2qs   1/1     Running   0          3m12s
    
    

    3备份

    DATE=`date +%Y%m%d%H%M%S`
    velero backup create linux66-ns-backup-${DATE} --include-namespaces linux66 --kubeconfig=./awsuser.kubeconfig --namespace velero-system
    # 备份必须指定时间戳,名字不能重复。 指定namespace去备份--include-namespaces 
    
    

    备份完成之后,会在对象存储里多出一个目录

    4 还原

    
    velero restore create --from-backup linux66-ns-backup-20220421111145 --wait --kubeconfig=./awsuser.kubeconfig --namespace velero-system
    # 注意awsuser.kubeconfig  这个文件的路径,和你备份文件的名字。
    

    还原结束后也会多出一个restore的目录

    5 卸载服务端

    如果安装的时候,发现配置文件写的不对,然后卸载即可。直接删除pod和deployment是不管用的。

    velero uninstall  --namespace velero-system
    
    
    
  • 相关阅读:
    异步请求 ajax的使用详解
    关于JAVA-JS-JSP之间传值的各种方法
    C# 对List<T>取交集、连集及差集
    MVC解决方案发布IIS 登录页面需要输入两次帐号问题
    sqlserver查看被锁表、解锁
    C#中using关键字的作用及用法
    Bootstrap组件On和Off语法
    HtmlString类创建HTML Hepler 扩展MVC TextBox组件
    Js运算符优先级
    ajax调用webservice(二) 跨域。
  • 原文地址:https://www.cnblogs.com/huningfei/p/16175409.html
Copyright © 2020-2023  润新知