centos

k8s在centos上的备份恢复方案

小樊
38
2025-04-19 00:40:04
栏目: 智能运维

在CentOS上部署Kubernetes(K8s)集群时,备份和恢复是确保系统稳定性和数据安全性的关键步骤。以下是一个全面的备份恢复方案,涵盖了备份和恢复etcd数据库、配置NFS存储以及使用Velero进行备份和恢复的详细步骤。

备份etcd数据库

etcd是Kubernetes的存储系统,备份etcd数据至关重要。以下是备份和恢复etcd数据的步骤:

  1. 备份etcd数据

    export ETCDCTL_API=3
    etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key snapshot save snap1.db
    
  2. 删除需要恢复的Pod

    kubectl delete pod pod1
    
  3. 恢复etcd数据

    rm -rf /var/lib/etcd/*
    etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key snapshot restore snap1.db --data-dir /var/lib/etcd/
    
  4. 重启kubelet服务

    systemctl restart kubelet
    
  5. 验证恢复结果

    kubectl get pods
    

配置NFS存储

在CentOS上配置NFS存储以供Kubernetes使用,可以按照以下步骤进行:

  1. 安装NFS服务器

    sudo yum install -y nfs-utils
    
  2. 配置NFS共享目录

    sudo mkdir -p /mnt/nfssudo groupadd nogroupsudo chown -R nobody:nogroup /mnt/nfs
    
  3. 配置NFS导出文件

    sudo vi /etc/exports
    /mnt/nfs *(rw, sync, no_subtree_check)
    
  4. 启动并启用NFS服务

    sudo systemctl start nfs-serversudo systemctl enable nfs-server
    
  5. 导出共享目录

    sudo exportfs -a
    
  6. 配置防火墙

    sudo firewall-cmd --permanent --add-servicenfssudo firewall-cmd --permanent --add-servicemountdsudo firewall-cmd --permanent --add-servicerpc-bindsudo firewall-cmd --reload
    
  7. 检查NFS状态

    sudo systemctl status nfs-server
    
  8. 在Kubernetes中使用NFS存储

    • 创建nfs-pv.yaml文件:

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: nfs-pv
      spec:
        capacity:
          storage: 5Gi
        volumeMode: Filesystem
        accessModes:
          - ReadWriteMany
        persistentVolumeReclaimPolicy: Retain
        nfs:
          path: /mnt/nfs
          server: 192.168.1.100
        mountOptions:
          - nolock
      
    • 创建nfs-pvc.yaml文件:

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: nfs-pvc
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: 5Gi
        storageClassName: nfs
      
    • 将PVC绑定到Pod中:

      apiVersion: v1
      kind: Pod
      metadata:
        name: my-pod
      spec:
        containers:
          - name: my-container
            image: my-image
            volumeMounts:
              - mountPath: "/data"
                name: my-volume
        volumes:
          - name: my-volume
            persistentVolumeClaim:
              claimName: nfs-pvc
      

使用Velero进行备份和恢复

Velero是一个开源的工具,用于备份和还原Kubernetes资源和持久卷数据。以下是使用Velero进行备份和恢复的步骤:

  1. 安装Velero

    kubectl apply -f https://raw.githubusercontent.com/velero/velero/master/installer/velero.yaml
    
  2. 配置Velero

    • 配置备份存储位置:
      velero configure --backup-location=s3://your-backup-bucket --region=your-region
      
  3. 执行备份

    velero backup create my-backup --include-namespaces=default
    
  4. 执行恢复

    velero restore create my-restore --backup-name=my-backup --target-namespace=default
    

通过以上步骤,你可以在CentOS上为Kubernetes集群配置一个全面的备份和恢复方案,确保数据的安全性和系统的稳定性。

0
看了该问题的人还看了