5.4.2.2. etcd データの復元
静的 Pod で etcd を復元する前に、以下を確認します。
etcdctl
バイナリーが利用可能であるか、またはコンテナー化インストールの場合はrhel7/etcd
コンテナーが利用可能でなければなりません。以下のコマンドを実行して etcd パッケージで
etcdctl
バイナリーをインストールできます。# yum install etcd
このパッケージは systemd サービスもインストールします。etcd を静的 Pod で実行時に systemd サービスとして実行されないようにサービスを無効にしてマスクします。サービスを無効にしてマスクすることで、誤って開始したり、システムの再起動時に自動的にサービスの再起動がされないようにします。
# systemctl disable etcd.service
# systemctl mask etcd.service
静的 Pod で etcd を復元するには、以下を実行します。
Pod が実行中の場合、Pod のマニフェスト YAML ファイルを別のディレクトリーに移動して etcd Pod を停止します。
# mkdir -p /etc/origin/node/pods-stopped
# mv /etc/origin/node/pods/etcd.yaml /etc/origin/node/pods-stopped
古いデータはすべて移動します。
# mv /var/lib/etcd /var/lib/etcd.old
etcdctl を使用して、Pod を復元するノードでデータを再作成します。
etcd スナップショットを etcd Pod のマウントパスに復元します。
# export ETCDCTL_API=3
# etcdctl snapshot restore /etc/etcd/backup/etcd/snapshot.db \ --data-dir /var/lib/etcd/ \ --name ip-172-18-3-48.ec2.internal \ --initial-cluster "ip-172-18-3-48.ec2.internal=https://172.18.3.48:2380" \ --initial-cluster-token "etcd-cluster-1" \ --initial-advertise-peer-urls https://172.18.3.48:2380 \ --skip-hash-check=true
バックアップの etcd.conf ファイルからクラスターの適切な値を取得します。
データディレクトリーに必要なパーミッションおよび selinux コンテキストを設定します。
# restorecon -RvF /var/lib/etcd/
Pod のマニフェスト YAML ファイルを必要なディレクトリーに移動して etcd Pod を再起動します。
# mv /etc/origin/node/pods-stopped/etcd.yaml /etc/origin/node/pods/