Kubernetesは、破裂しました.今何?


もともと公開mccricardo.com .
我々は、いくつかのKubernetesクラスタを運営してきました.誰かが旅行し、キーボードに落ちると、いくつかのサービスを削除します.我々はすぐに必要だそれらをオンラインで入手してください.
いくつかのオプションがあります.

  • 我々は、バージョン管理のすべてを持って-パイプラインやGitopsの和解は、それの世話をする

  • ECTDバックアップを復元します-すべてのKubernetesオブジェクトはETCDに保存されます.定期的にETCDクラスタデータをバックアップすることは、災害シナリオの下で救命者でありえます;

  • 特定のKubernetesバックアップツールを使用してくださいVelero .
  • 道具Velero それはKubernetesオブジェクトのバックアップを行うだけでなく、永続的なボリュームのバックアップを行うためにあなたのクラウドプロバイダに指示するので、素晴らしいです.それは、これはランプアップしています、そして、我々は現在何かを必要とします.バックアップetcd クラスタは常に安全な賭けですways そうすること.
    しばらくの間、私はファンでしたEarliest Testable/Usable/Lovable MVPへの「反対」として.

    これを念頭に置いて、我々が欲しいものは、何かがうまくいかない場合に安全ネット(スケート)を持つ速い方法です.幸運にもetcd 内蔵スナップショット機能を搭載.

    バックアップ


    私たちは、バックアップをするためにETCD展開からいくつかのものを特定する必要があります.
    spec:
      containers:
      - command:
        - etcd
        - --advertise-client-urls=https://172.23.0.3:2379
        - --cert-file=/etc/kubernetes/pki/etcd/server.crt
        - --client-cert-auth=true
        - --data-dir=/var/lib/etcd
        - --initial-advertise-peer-urls=https://172.23.0.3:2380
        - --initial-cluster=backup-control-plane=https://172.23.0.3:2380
        - --key-file=/etc/kubernetes/pki/etcd/server.key
        - --listen-client-urls=https://127.0.0.1:2379,https://172.23.0.3:2379
        - --listen-metrics-urls=http://127.0.0.1:2381
        - --listen-peer-urls=https://172.23.0.3:2380
        - --name=backup-control-plane
        - --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
        - --peer-client-cert-auth=true
        - --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
        - --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
        - --snapshot-count=10000
        - --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
    
    クライアントURL、CERTファイル、キーファイル、および信頼できるCAファイルの値を広告することで武装できます.
    ETCDCTL_API=3 etcdctl --endpoints https://172.23.0.3:2379 \
      --cacert="/etc/kubernetes/pki/etcd/ca.crt" \
      --cert="/etc/kubernetes/pki/etcd/server.crt" \
      --key="/etc/kubernetes/pki/etcd/server.key" \
      snapshot save snapshotdb
    
    {"level":"info","ts":1610913776.2521563,"caller":"snapshot/v3_snapshot.go:119","msg":"created temporary db file","path":"snapshotdb.part"}
    {"level":"info","ts":"2021-01-17T20:02:56.256Z","caller":"clientv3/maintenance.go:200","msg":"opened snapshot stream; downloading"}
    {"level":"info","ts":1610913776.2563014,"caller":"snapshot/v3_snapshot.go:127","msg":"fetching snapshot","endpoint":"https://172.23.0.3:2379"}
    {"level":"info","ts":"2021-01-17T20:02:56.273Z","caller":"clientv3/maintenance.go:208","msg":"completed snapshot read; closing"}
    {"level":"info","ts":1610913776.2887816,"caller":"snapshot/v3_snapshot.go:142","msg":"fetched snapshot","endpoint":"https://172.23.0.3:2379","size":"3.6 MB","took":0.036583317}
    {"level":"info","ts":1610913776.2891474,"caller":"snapshot/v3_snapshot.go:152","msg":"saved","path":"snapshotdb"}
    Snapshot saved at snapshotdb
    
    安全であるために、バックアップはOKです.
     ETCDCTL_API=3 etcdctl --write-out=table snapshot status snapshotdb
    +----------+----------+------------+------------+
    |   HASH   | REVISION | TOTAL KEYS | TOTAL SIZE |
    +----------+----------+------------+------------+
    | 9b193bf0 |     1996 |       2009 |     2.7 MB |
    +----------+----------+------------+------------+
    

    ETCDを復元する


    kube-apiserver 用途etcd 情報を保存して取得するには、IPを最初に停止する必要があります.これはあなたが持っている方法に依存しますkube-apiserver 設定.次にetcdを復元します.
    ETCDCTL_API=3 etcdctl snapshot restore snapshotdb --data-dir="/var/lib/etcd-restore"
    {"level":"info","ts":1610913810.5761065,"caller":"snapshot/v3_snapshot.go:296","msg":"restoring snapshot","path":"snapshotdb","wal-dir":"/var/lib/etcd-restore/member/wal","data-dir":"/var/lib/etcd-restore","snap-dir":"/var/lib/etcd-restore/member/snap"}
    {"level":"info","ts":1610913810.599168,"caller":"mvcc/kvstore.go:380","msg":"restored last compact revision","meta-bucket-name":"meta","meta-bucket-name-key":"finishedCompactRev","restored-compact-revision":7655}
    {"level":"info","ts":1610913810.60404,"caller":"membership/cluster.go:392","msg":"added member","cluster-id":"cdf818194e3a8c32","local-member-id":"0","added-peer-id":"8e9e05c52164694d","added-peer-peer-urls":["http://localhost:2380"]}
    {"level":"info","ts":1610913810.6153672,"caller":"snapshot/v3_snapshot.go:309","msg":"restored snapshot","path":"snapshotdb","wal-dir":"/var/lib/etcd-restore/member/wal","data-dir":"/var/lib/etcd-restore","snap-dir":"/var/lib/etcd-restore/member/snap"}
    
    我々は指示する必要があるetcd このデータフォルダーを使用して一度それを起動し、実行しているkube-apiserver バックオンライン
    volumes:
      - hostPath:
          path: /var/lib/etcd-restore
          type: DirectoryOrCreate
        name: etcd-data
    
    これは少し不気味に見えるが、それは簡単な方法(スケート再び)災害の場合の安全ネットを確保するために、より有能なソリューション(スクーター-)自転車を運転する時間を購入している.たとえば、自転車が十分に良いところまで来るかもしれません.