abhilashthale.tech
  • Home
  • BlogCategories
    • coding
    • other
    • n
  • Images to Pdf
  • My Files
  • Shares Average
  • About Me
  • Server Stats
  • Day
  • Night
  • Birds
  • Waves
  • Net
  • Dots
  • Halo
  • Rings
  • Fog
  • Clouds

    Kubernetes Etcd Steps (Backup + Break + Restore)

    by abhilashthale - March 22, 2026

    ####################### KUBERNETES ETCD FULL LAB (BACKUP + BREAK + RESTORE) #######################

    ################################ STEP 1: CHECK CLUSTER ############################################

    kubectl get nodes
    kubectl get pods -A

    ##############################################################################################

    ################################ STEP 2: TAKE BACKUP (NO etcdctl ON HOST) ####################

    exec -n kube-system etcd-controlnode -- etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://127.0.0.1:2379 snapshot save /var/lib/etcd-backup3.db

    ##############################################################################################

    ################################ STEP 3: BREAK CLUSTER ########################################

    kubectl delete deployment webserver-deployment
    kubectl delete pod samplepod

    kubectl get all

    ##############################################################################################

    ################################ STEP 4: STOP ETCD ############################################

    mv /etc/kubernetes/manifests/etcd.yaml /tmp/

    # Verify

    crictl ps | grep etcd

    ##############################################################################################

    ################################ STEP 5: RESTORE SNAPSHOT #####################################

    ctr -n k8s.io run --rm -t 
    --mount type=bind,src=/etc/kubernetes/pki/etcd,dst=/etc/kubernetes/pki/etcd,options=rbind:rw 
    --mount type=bind,src=/var/lib,dst=/var/lib,options=rbind:rw 
    registry.k8s.io/etcd:3.5.16-0 etcd-restore sh

    # Inside container:

    ETCDCTL_API=3 etcdctl snapshot restore /var/lib/etcd/etcd-backup.db 
    --data-dir=/var/lib/etcd-restore

    # VERIFY (VERY IMPORTANT)

    echo /var/lib/*

    exit

    ##############################################################################################

    ################################ STEP 6: UPDATE ETCD MANIFEST #################################

    vi /etc/kubernetes/manifests/etcd.yaml

    # CHANGE THESE THREE PLACES:

    --data-dir=/var/lib/etcd-restore

    # volumeMounts:

    * mountPath: /var/lib/etcd-restore

    # volumes:

    path: /var/lib/etcd-restore

    ##############################################################################################

    ################################ STEP 7: START ETCD ###########################################

    mv /tmp/etcd.yaml /etc/kubernetes/manifests/

    # Wait 20–30 seconds

    ##############################################################################################

    ################################ STEP 8: FIX AUTH (VERY IMPORTANT) ############################

    mv /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/
    sleep 5
    mv /tmp/kube-apiserver.yaml /etc/kubernetes/manifests/

    mv /etc/kubernetes/manifests/kube-controller-manager.yaml /tmp/
    sleep 5
    mv /tmp/kube-controller-manager.yaml /etc/kubernetes/manifests/

    mv /etc/kubernetes/manifests/kube-scheduler.yaml /tmp/
    sleep 5
    mv /tmp/kube-scheduler.yaml /etc/kubernetes/manifests/

    ##############################################################################################

    ################################ STEP 9: (OPTIONAL) BYPASS AUTH ###############################

    vi /etc/kubernetes/manifests/kube-apiserver.yaml

    # Add:

    --authorization-mode=AlwaysAllow

    ##############################################################################################

    ################################ STEP 10: VERIFY ##############################################

    crictl ps

    ps -ef | grep etcd

    kubectl get nodes
    kubectl get pods -A

    ##############################################################################################

    ################################ FINAL MEMORY #################################################

    Backup → Break → Stop → Restore → Fix Mount → Start → Restart Control Plane → Verify

    ##############################################################################################
        

abhilashthale.tech