第1章 etcd のバックアップ
etcd は OpenShift Container Platform のキーと値のストアであり、すべてのリソースオブジェクトの状態を保存します。
クラスターの etcd データを定期的にバックアップし、OpenShift Container Platform 環境外の安全な場所に保存するのが理想的です。インストールの 24 時間後に行われる最初の証明書のローテーションが完了するまで etcd のバックアップを実行することはできません。ローテーションの完了前に実行すると、バックアップに期限切れの証明書が含まれることになります。さらに、ピーク時には障害が発生させる要素となる可能性があるため、ピーク時以外に etcd バックアップを取得することも推奨されています。
etcd のバックアップを取得した後に、マスターホストが失われた状態からの復旧や、クラスターの直前の状態への復元を実行できます。
etcd データのバックアッププロセスは、適切な証明書が提供されている etcd クラスターに接続できるマスターホストで実行できます。
1.1. etcd データのバックアップ
以下の手順に従って、etcd スナップショットを作成し、静的 Kubernetes API サーバーリソースをバックアップして etcd データをバックアップします。このバックアップは保存でき、etcd を復元する必要がある場合に後で使用することができます。
単一マスターホストからのバックアップのみを保存する必要があります。クラスター内の各マスターホストからのバックアップは必要ありません。
OpenShift Container Platform 4.3.0 または 4.3.1 で etcd のバックアップを取る場合、この手順により、etcd スナップショットおよび静的 Kubernetes API サーバーリソースが含まれる単一ファイルが生成されます。復元時に、etcd-snapshot-restore.sh
スクリプトには、この単一ファイルを受け入れるために必要な後方互換性があります。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 クラスター全体のプロキシーが有効になっているかどうかを確認している。
ヒントoc get proxy cluster -o yaml
の出力を確認して、プロキシーが有効にされているかどうかを確認できます。プロキシーは、httpProxy
、httpsProxy
、およびnoProxy
フィールドに値が設定されている場合に有効にされます。
手順
マスターノードのデバッグセッションを開始します。
$ oc debug node/<node_name>
ルートディレクトリーをホストに切り替えます。
sh-4.2# chroot /host
/home/core
ディレクトリーに移動します。sh-4.4# cd /home/core
-
クラスター全体のプロキシーが有効になっている場合は、
NO_PROXY
、HTTP_PROXY
、およびHTTPS_PROXY
環境変数をエクスポートしていることを確認します。 etcd-snapshot-backup.sh
スクリプトを実行し、バックアップの保存先となる場所を渡します。sh-4.4# /usr/local/bin/etcd-snapshot-backup.sh /home/core/assets/backup
この例では、マスターホストの
/home/core/assets/backup/
ディレクトリーにファイルが 2 つ作成されます。-
snapshot_<datetimestamp>.db
: このファイルは etcd スナップショットです。 static_kuberesources_<datetimestamp>.tar.gz
:このファイルには、静的な Kubernetes API サーバーリソースが含まれます。etcd 暗号化が有効にされている場合、etcd スナップショットの暗号化キーも含まれます。注記etcd 暗号化が有効にされている場合、セキュリティー上の理由から、この 2 つ目のファイルを etcd スナップショットとは別に保存することが推奨されます。ただし、このファイルは etcd スナップショットから復元するために必要になります。
etcd 暗号化はキーではなく値のみを暗号化することに注意してください。つまり、リソースタイプ、namespace、およびオブジェクト名は暗号化されません。
-