Shashikant shah

Monday, 10 March 2025

Backup and restore etcd in the k8s cluster.

Backup and restore etcd in the k8s cluster.

 
1.Backup certificate.

# mkdir -p /root/backup_cluster/certificate

# cp -rf  /etc/kubernetes/pki  /root/backup_cluster/certificate

# ls /root/backup_cluster/certificate/pki/




2. Backup etcd db.

# mkdir -p /root/backup_cluster/etcd_backup

# ETCDCTL_API=3 etcdctl snapshot save /root/backup_cluster/etcd_backup/etcd_snapshot_v2.db --endpoints=https://127.0.0.1:2379 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/healthcheck-client.crt --key /etc/kubernetes/pki/etcd/healthcheck-client.key

3. Reset kuberenets cluster

# kubeadm reset

# rm -rf .kube

4.Copy all Certificates to /etc/Kubernetes/ directory.

# cp -rf /root/backup_cluster/certificate/pki   /etc/kubernetes/

5. Restore etcd command:

# ETCDCTL_API=3 etcdctl snapshot restore /root/backup_cluster/etcd_backup/etcd_snapshot_v2.db



 # mv default.etcd/member /var/lib/etcd/

 # ls -l /var/lib/etcd



 

6.Initialize a Kubernetes cluster.

(note:- Old CIDR will be updated as etcd is not being updated.)
# kubeadm init --pod-network-cidr=192.171.0.0/16  --apiserver-advertise-address=192.168.56.113 --ignore-preflight-errors=DirAvailable--var-lib-etcd



 


# mkdir -p $HOME/.kube

# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

# sudo chown $(id -u):$(id -g) $HOME/.kube/config
# kubeadm join 192.168.56.113:6443 --token whhuns.xo594wt6cuu8n8by \
        --discovery-token-ca-cert-hash sha256:c77e46bb10ed45d34b17dd384fec50b97ae244d0ff0864ba934ee3f69c436af9 
# kubectl get nodes



 


# kubectl get cs



 

 


 How to change pod subnet CIDR.

i)update cidr  in kube-controller-manager.yaml file.

# vim /etc/kubernetes/manifests/kube-controller-manager.yaml

- --cluster-cidr=192.171.0.0/16



 




ii)update cidr  in kubeadm-config.

# kubectl -n kube-system edit cm kubeadm-config

podSubnet: 192.171.0.0/16



 






iii)update cidr  in ippool.

# kubectl get ippool

# kubectl edit ippool default-ipv4-ippool

cidr: 192.171.0.0/16



 










Note:- need to restart all nodes one by one.
iv) validate cdir in the cluster.
# ps -elf | grep "cidr"



 

v) Check ip for Pod.

# kubectl get pods -o wide



No comments:

Post a Comment