在CentOS上部署Kubernetes(K8s)集群时,备份和恢复是确保系统稳定性和数据安全性的关键步骤。以下是一个全面的备份恢复方案,涵盖了备份和恢复etcd数据库、配置NFS存储以及使用Velero进行备份和恢复的详细步骤。
etcd是Kubernetes的存储系统,备份etcd数据至关重要。以下是备份和恢复etcd数据的步骤:
备份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
删除需要恢复的Pod:
kubectl delete pod pod1
恢复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/
重启kubelet服务:
systemctl restart kubelet
验证恢复结果:
kubectl get pods
在CentOS上配置NFS存储以供Kubernetes使用,可以按照以下步骤进行:
安装NFS服务器:
sudo yum install -y nfs-utils
配置NFS共享目录:
sudo mkdir -p /mnt/nfssudo groupadd nogroupsudo chown -R nobody:nogroup /mnt/nfs
配置NFS导出文件:
sudo vi /etc/exports
/mnt/nfs *(rw, sync, no_subtree_check)
启动并启用NFS服务:
sudo systemctl start nfs-serversudo systemctl enable nfs-server
导出共享目录:
sudo exportfs -a
配置防火墙:
sudo firewall-cmd --permanent --add-servicenfssudo firewall-cmd --permanent --add-servicemountdsudo firewall-cmd --permanent --add-servicerpc-bindsudo firewall-cmd --reload
检查NFS状态:
sudo systemctl status nfs-server
在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是一个开源的工具,用于备份和还原Kubernetes资源和持久卷数据。以下是使用Velero进行备份和恢复的步骤:
安装Velero:
kubectl apply -f https://raw.githubusercontent.com/velero/velero/master/installer/velero.yaml
配置Velero:
velero configure --backup-location=s3://your-backup-bucket --region=your-region
执行备份:
velero backup create my-backup --include-namespaces=default
执行恢复:
velero restore create my-restore --backup-name=my-backup --target-namespace=default
通过以上步骤,你可以在CentOS上为Kubernetes集群配置一个全面的备份和恢复方案,确保数据的安全性和系统的稳定性。