7 Kubernetesクラスタのバックアップおよびリストア
重要:
このドキュメントで説明されているソフトウェアは、Extended SupportまたはSustaining Supportにあります。 詳細は、「Oracleオープン・ソース・サポート・ポリシー」を参照してください。
このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお勧めします。
この章では、Oracle Cloud Native EnvironmentでKubernetesクラスタをバックアップおよびリストアする方法について説明します。
コントロール・プレーン・ノードのバックアップ
Kubernetesクラスタをコントロール・プレーン・ノードの障害から保護するためのバックアップ戦略の採用は、特にコントロール・プレーン・ノードが1つのみのクラスタにとって重要です。 複数のコントロール・プレーン・ノードがある高可用性クラスタの場合も、レプリケーションおよびフェイルオーバーの機能によって提供される回復力を超えたときのフォールバック計画が必要です。
障害時リカバリ計画の一環としてバックアップを実行する場合は、クラスタを停止する必要はありません。 オペレータ・ノードで、olcnectl module backup
コマンドを使用して、クラスタ内のすべてのコントロール・プレーン・ノードのキー・コンテナおよびマニフェストをバックアップします。
重要:
Kubernetesコントロール・プレーン・ノードに必要な主要なコンテナのみがバックアップされます。 アプリケーション・コンテナはバックアップされません。
たとえば:
olcnectl module backup \ --environment-name myenvironment \ --name mycluster
バックアップ・ファイルは、オペレータ・ノードの/var/olcne/backups
ディレクトリに格納されます。 このファイルは、次のパターンに従ったタイムスタンプ付きのフォルダに保存されます。
/var/olcne/backups/environment-name/kubernetes/module-name/timestamp
このディレクトリとディレクトリ内のファイルは、次のように、その他のものと同様に操作できます。
sudo ls /var/olcne/backups/myenvironment/kubernetes/mycluster/20191007040013 control1.example.com.tar control2.example.com.tar control3.example.com.tar etcd.tar
コントロール・プレーン・ノードのリストア
これらのリストアステップは、計画された障害時リカバリ・シナリオの一環としてKubernetesクラスタを再構築する必要がある場合に使用することを意図しています。 完全なクラスタ障害が発生した場合を除き、レプリケーションとフェイルオーバーによる自己回復が可能な高可用性クラスタでは、コントロール・プレーン・ノードを個別に手動でリカバリする必要はありません。
コントロール・プレーン・ノードをリストアするには、既存のOracle Cloud Native Environmentがあり、Kubernetesモジュールをデプロイしている必要があります。 存在していない環境はリストアできません。
コントロール・プレーン・ノードをリストアするには:
-
先に進む前に、コントロール・プレーンのノードでPlatform Agentが適切に実行されていることを確認します。
systemctl status olcne-agent.service
-
オペレータ・ノードで、
olcnectl module restore
コマンドを使用して、クラスタ内のコントロール・プレーン・ノードのキー・コンテナおよびマニフェストをリストアします。 たとえば:olcnectl module restore \ --environment-name myenvironment \ --name mycluster
/var/olcne/backups/environment-name/kubernetes/module-name/
の最新のタイムスタンプ・フォルダのファイルは、クラスタを以前の状態にリストアするために使用されます。前提条件を満たすために、コントロール・プレーン・ノードに追加の設定ステップを実行するようにプラットフォームCLIによって求められる場合があります。 その場合は、指示に従い、
olcnectl module restore
コマンドを再度実行します。 -
コントロール・プレーン・ノードで
kubectl
コマンドを使用して、リストア操作が成功したことを確認できます。 たとえば:kubectl get nodes NAME STATUS ROLES AGE VERSION control1.example.com Ready master 9m27s v1.21.x+x.x.x.el8 worker1.example.com Ready <none> 8m53s v1.21.x+x.x.x.el8 kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE coredns-5bc65d7f4b-qzfcc 1/1 Running 0 9m coredns-5bc65d7f4b-z64f2 1/1 Running 0 9m etcd-control1.example.com 1/1 Running 0 9m kube-apiserver-control1.example.com 1/1 Running 0 9m kube-controller-control1.example.com 1/1 Running 0 9m kube-flannel-ds-2sjbx 1/1 Running 0 9m kube-flannel-ds-njg9r 1/1 Running 0 9m kube-proxy-m2rt2 1/1 Running 0 9m kube-proxy-tbkxd 1/1 Running 0 9m kube-scheduler-control1.example.com 1/1 Running 0 9m kubernetes-dashboard-7646bf6898-d6x2m 1/1 Running 0 9m