在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集群配置一個全面的備份和恢復方案,確保數據的安全性和系統的穩定性。