kubernetesバックアップとリカバリ

4531 ワード

kubernetesバックアップとリカバリ


 
  • etcdデータ
  • をバックアップ
    まず、ETCDには3つのバックアップがあり、同期するので、1台のmasterマシンでETCDバックアップを実行するだけでいいです.
    また、次のコマンドを実行する前に、現在のマシンのkube-apiserverが実行されていることを確認します.
    ps -ef|grep kube-apiserver 
    
    export ETCD_SERVERS=$(ps -ef|grep apiserver|grep -Eo "etcd servers=.*2379"|awk -F= '{print $NF}')
    mkdir -p /var/lib/etcd_backup/
    export ETCDCTL_API=3 
    etcdctl snapshot --endpoints=$ETCD_SERVERS --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem save /var/lib/etcd_backup/backup_$(date "+%Y%m%d%H%M%S").db 
    Snapshot saved at /var/lib/etcd_backup/backup_20180107172459.db

     
    実行が完了すると、/var/lib/etcd_backupでバックアップのsnapshotを見つけます
    [root@iZwz95q64qi83o88y9lq4cZ etcd_backup]# cd /var/lib/etcd_backup/
    [root@iZwz95q64qi83o88y9lq4cZ etcd_backup]# ls
    backup_20180107172459.db
    [root@iZwz95q64qi83o88y9lq4cZ etcd_backup]# du -sh backup_20180107172459.db
    8.0M    backup_20180107172459.db

     
  • ETCDのバックアップによるKubernetesクラスタ
  • のリカバリ
    まず、マスターマシンを3台ずつ停止して、クベapiserverが停止していることを確認し、次のコマンドを実行して値を0にします.
    ps -ef|grep kube-api|grep -v grep |wc -l
    0

     
    それぞれ3台のMasterノードでETCDサービスを停止
    service etcd stop

    ETCDデータディレクトリの削除
    mv /var/lib/etcd/data.etcd /var/lib/etcd/data.etcd_bak

    各ノードでデータをリカバリするには、まず、バックアップデータが/var/lib/etcd_に存在すると仮定して、各masterノードにデータをコピーする必要があります.backup/backup_20180107172459.db
    scp /var/lib/etcd_backup/backup_20180107172459.db root@master1:/var/lib/etcd_backup/
    scp /var/lib/etcd_backup/backup_20180107172459.db root@master2:/var/lib/etcd_backup/
    scp /var/lib/etcd_backup/backup_20180107172459.db root@master3:/var/lib/etcd_backup/

    リカバリコマンドの実行
    set -x
    export ETCD_NAME=$(cat /usr/lib/systemd/system/etcd.service|grep ExecStart|grep -Eo "name.*-name-[0-9].*--client"|awk '{print $2}')
    export ETCD_CLUSTER=$(cat /usr/lib/systemd/system/etcd.service|grep ExecStart|grep -Eo "initial-cluster.*--initial"|awk '{print $2}')
    export ETCD_INITIAL_CLUSTER_TOKEN=$(cat /usr/lib/systemd/system/etcd.service|grep ExecStart|grep -Eo "initial-cluster-token.*"|awk '{print $2}')
    export ETCD_INITIAL_ADVERTISE_PEER_URLS=$(cat /usr/lib/systemd/system/etcd.service|grep ExecStart|grep -Eo "initial-advertise-peer-urls.*--listen-peer"|awk '{print $2}')
    ETCDCTL_API=3 etcdctl snapshot --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-client-key.pem restore /var/lib/etcd_backup/backup_20180107172459.db  --name $ETCD_NAME  --data-dir /var/lib/etcd/data.etcd  --initial-cluster $ETCD_CLUSTER  --initial-cluster-token $ETCD_INITIAL_CLUSTER_TOKEN  --initial-advertise-peer-urls $ETCD_INITIAL_ADVERTISE_PEER_URLS 
    chown -R etcd:etcd /var/lib/etcd/data.etcd

     
    それぞれ3つのマスターノードでETCDを起動し、サービスコマンドで起動成功を確認します.
    # service etcd start
    # service etcd status
    # export ETCD_SERVERS=$(cat /etc/kubernetes/manifests-backups/kube-apiserver.yaml |grep etcd-server|awk -F= '{print $2}')
    ETCDCTL_API=3 etcdctl endpoint health --endpoints=$ETCD_SERVERS  --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd-client.pem --key=/etc/kubernetes/ssl/etcd-key.pem 
    https://192.168.250.198:2379 is healthy: successfully committed proposal: took = 2.238886ms
    https://192.168.250.196:2379 is healthy: successfully committed proposal: took = 3.390819ms
    https://192.168.250.197:2379 is healthy: successfully committed proposal: took = 2.925103ms

     
    クラスタが正常に回復したかどうかを確認すると、クラスタが正常に起動していることがわかります.以前に導入されたアプリケーションもあります.
    # kubectl get cs
    NAME                 STATUS    MESSAGE              ERROR
    controller-manager   Healthy   ok
    scheduler            Healthy   ok
    etcd-0               Healthy   {"health": "true"}
    etcd-2               Healthy   {"health": "true"}
    etcd-1               Healthy   {"health": "true"}
    

    Kubernetesのバックアップは主にETCDのバックアップで完了しています.リカバリでは、kube-apiserverを停止し、ETCDを停止し、データをリカバリし、ETCDを起動し、kube-apiserverを起動する順序を主に考慮します.
     
    転載先:https://www.cnblogs.com/fengjian2016/p/9468041.html