データの心配は無用、一発で学習:CKA 認定に不可欠な etcd のバックアップと復元のヒントをマスターしましょう。

データの心配は無用、一発で学習:CKA 認定に不可欠な etcd のバックアップと復元のヒントをマスターしましょう。

etcd は、すべての Kubernetes クラスター データのバックエンド データベースとして使用される、一貫性があり可用性の高いキー値ストアです。非常に重要なコンポーネントですので、将来的に問題が発生した場合にできるだけ早く復元できるようにバックアップする必要があります。

1.etcdの基本的な使い方

以下はKubernetes実践環境Killercoda[1]を使用した実践例です。 GitHub アカウントを使用して、現在最新バージョンの Kubernetes を使用している Killercoda プラットフォームにログインします。

キラーコーダプラットフォーム

etcd cli クライアントもシステムにインストールされます。インストールされていない場合は、次のコマンドを実行してインストールできます。

 apt install etcd-client

etcdcli クライアントは証明書を使用して etcd と通信します。 kubeadm モードでデプロイされた Kubernetes は、yaml ファイルを通じて etcd 証明書パスを表示できます。

etcd コンポーネント yaml

--initial-advertise-peer-urls: クラスターは相互に通知します。これはアナウンスメント アドレスであり、ノード ポートを宣言します。 2380 はクラスターで使用され、2379 はクライアントによって使用されます。

または、kubectl get pods etcd-controlplane -o yaml -n kube-system を使用して証明書パス情報を表示します。以下のように表示されます。

etcd コンポーネント yaml

2. Nginxを作成する

複数のレプリカを持つ nginx デプロイメントを作成するには、次のコマンドを使用します。これらのレプリカは、etcd データの回復を確認するために使用されます。

 kubectl create deployment nginx \ --image=nginx \ --replicas=3

新しくデプロイされた Pod が実行されていることを確認します。

ポッドのステータスを表示

3. Etcdデータのバックアップ

etcd バックアップ用のバックアップ ディレクトリ mkdir etcd-backup を作成し、次のコマンドを実行して etcd をバックアップします。

 export ETCDCTL_API=3 etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save ./etcd-backup/etcdbackup.db

実行後、次の図が表示されます。

etcdのバックアップ

4. バックアップデータの検証

次のコマンドを実行して、新しいバックアップ データからキー リストと詳細を取得します。

 etcdctl --write-out=table snapshot status ./etcd-backup/etcdbackup.db

コマンドを実行すると、次の図が表示されます。

5. バックアップをクラスターに復元する

(1)ここでは、以前に作成したnginxデプロイメントを削除し、バックアップを復元してnginxデプロイメントを復元します。

 controlplane $ kubectl delete deployments.apps nginx deployment.apps "nginx" deleted

(2)バックアップからデータを復元し、以下のコマンドを実行します。

 controlplane $ export ETCDCTL_API=3 controlplane $ mkdir -p /var/lib/restore controlplane $ etcdctl snapshot restore etcd-backup/etcdbackup.db --data-dir=/var/lib/restore

--data-dir: データが復元されるディレクトリを指定します。

上記のコマンドを実行すると、以下に示すように、指定されたディレクトリに etcd データ ファイルが生成されます。

バックアップの復元

(3)etcdデータを更新するために、実行中のKubernetesコンポーネントをすべて停止する必要があります。これを実現するために、Kubernetes コンポーネントのマニフェスト ファイルを /etc/kubernetes/manifests/ フォルダーに配置しました。このファイルを一時的にこのパスから移動し、kubelet によってこれらのポッドが自動的に削除されます。

 mkdir tmp mv /etc/kubernetes/manifests/* tmp/

/etc/kubernetes/manifests/ ディレクトリ内のコンポーネント yaml ファイルを削除し、コンテナを削除した後に削除を開始します。 crictl ps -a で表示できます。

(4)コンポーネントコンテナが削除されるのを待った後、etcd.yamlコンポーネントのetcd-data内のhostPathパスパラメータを変更する必要があります。

 ...省略... volumes: -hostPath: path:/etc/kubernetes/pki/etcd type:DirectoryOrCreate name:etcd-certs -hostPath: path:/var/lib/restore type:DirectoryOrCreate name:etcd-data status:{}

/var/lib/restore はデータ復元用のパスです。

(5)k8sクラスタが正常かどうかを確認する

controlplane $ kubectl get cs Warning: v1 ComponentStatus is deprecated in v1.19+ NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy ok controlplane $ kubectl get pod NAME READY STATUS RESTARTS AGE nginx-7854ff8877-6t6dl 1/1 Running 0 46m nginx-7854ff8877-l6dq8 1/1 Running 0 46m nginx-7854ff8877-pbkq9 1/1 Running 0 46m

6. CKA本試験解説

CKA 実問題 - etcd のバックアップと復元

中国の分析:

このプロジェクトでは構成環境を変更する必要はありませんが、このプロジェクトを実行する前に、最初のノードに戻っていることを確認してください。 etcdの問題は実際の試験では問4になります。使用するクラスターは実際の試験の前問のクラスター、つまり問題3のmk8sなので、クラスターを切り替える必要はありません。

タスク \

(1) まず、https://127.0.0.1:2379 で実行されている既存の etcd インスタンスのスナップショットを作成し、そのスナップショットを /srv/data/etcd-snapshot.db ファイルに保存します。

(2)特定のインスタンスのスナップショットの作成は、数秒以内に完了すると予想されます。操作がハングしているように見える場合、コマンドに問題がある可能性があります。 CTRL + C を使用して操作をキャンセルし、再試行してください。

(3)次に、/var/lib/backup/etcd-snapshot-previous.dbにある既存の以前のスナップショットを復元します。

(4)etcdctl経由でサーバーに接続するために、次のTLS証明書とキーが提供されます。

  • CA 証明書: /opt/KUIN00601/ca.crt
  • クライアント証明書: /opt/KUIN00601/etcd-client.crt
  • クライアントキー: /opt/KUIN00601/etcd-client.key

etcdのバックアップと復元の公式ドキュメント[2]

(1)バックアップ

export ETCDCTL_API=3 を使用せずに ETCDCTL_API=3 を使用する場合は、以下の各 etcdctl コマンドの前に ETCDCTL_API=3 を追加します。

コマンドプロンプトに「アクセスが拒否されました」と表示される場合は、十分な権限がないことを意味します。コマンドの先頭に sudo を追加するだけです。

 export ETCDCTL_API=3

まず、テスト環境に質問に記載されているディレクトリ /srv/data/ があるかどうかを確認します。そうでない場合は、自分で作成する必要があります。

 mkdir -p /srv/data

バックアップする場合、etcdctl クライアントはタイトルに示されている 3 つの証明書を使用して証明書を取得する必要があります。

 etcdctl --endpoints=https://127.0.0.1:2379 \ --cacert=/opt/KUIN00601/ca.crt --cert=/opt/KUIN00601/etcd-client.crt --key=/opt/KUIN00601/etcd-client.key save /srv/data/etcd-snapshot.db

バックアップされたデータを確認するには、etcdctl --write-out=table snapshot status /srv/data/etcd-snapshot.db を使用できます。

(2)復旧作業

まず、復元したデータを保存するディレクトリを作成します。

 mkdir -p /var/lib/restore

復元操作を実行し、復元データの保存ディレクトリを指定します。

 etcdctl --endpoints=https://127.0.0.1:2379 \ --cacert=/opt/KUIN00601/ca.crt --cert=/opt/KUIN00601/etcd-client.crt --key=/opt/KUIN00601/etcd-client.key snapshot restore /var/lib/backup/etcd-snapshot-previous.db \ --data-dir=/var/lib/restore

/etc/kubernetes/manifests/ を一時ディレクトリ tmp に移動します。

 mkdir -p /home/tmp mv /etc/kubernetes/manifests/*.yaml /home/tmp

/home/tmp ディレクトリの etcd.yaml ファイルを編集し、etcd-data の hostPath を /var/lib/restore に変更します。

 volumes: -hostPath: path:/etc/kubernetes/pki/etcd type:DirectoryOrCreate name:etcd-certs -hostPath: path:/var/lib/restore type:DirectoryOrCreate name:etcd-data status:{}

/home/tmp ディレクトリ内のコンポーネント ファイルを /etc/kubernetes/manifests/ に移動します。

 mv /home/tmp/*.yaml /etc/kubernetes/manifests/

(3)検証作業

k8s クラスターが正常であることを確認します。

 controlplane $ kubectl get cs Warning: v1 ComponentStatus is deprecated in v1.19+ NAME STATUS MESSAGE ERROR controller-manager Healthy ok etcd-0 Healthy ok scheduler Healthy ok

この時点で、etcd のバックアップと復元操作全体が完了します。

参考文献:

  • [1]キラーコーダ: https://killercoda.com/playgrounds/scenario/kubernetes
  • [2] etcdのバックアップと復元の公式ドキュメント: https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster

<<:  RocketMQはKosmosをベースにAZレベルの高可用性を実現

>>:  Linode Windows VM への「ローカル」アクセスを取得する方法

推薦する

ヘッツナーはどうですか?ドイツのニュルンベルクデータセンターのクラウドサーバーの評価

ヘッツナーはどうですか?ドイツのヘッツナー社のニュルンベルクデータセンターはどうでしょうか?その中核...

単一ページの SEO を最適化する方法

シングルページは、マーケティング戦略やSEO最適化効果を表現する最良の方法として、人々に常に利用され...

結婚式を葬式に変えたヴァッティのワールドカップの巧妙なマーケティングは、血なまぐさい教訓となった

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますワールドカ...

justhost: ノボシビルスク「TTK」データセンターの無制限トラフィック VPS の簡単なレビュー

ロシア極東の「ノボシビルスク」にある justhost の VPS は、2 つの異なるコンピュータ ...

hostkvm: 米国 VPS、3 ネットワーク必須 CU-VIP 回線、月額 5 ドル、1G メモリ/1 コア/15g SSD/500g トラフィック

Hostkvmは今年3月にロサンゼルスで新しいVPSサービスを開始し、3つのネットワークに中国聯通の...

人々に「便利さ」を提供するナビゲーションステーションは、どのようにして自らの活路を見つけることができるのでしょうか。

昨日は地元のウェブマスター交流会に参加し、多くのことを学びました。参加者の中には、1ページでタオバオ...

360 Search: 登録されていないウェブサイトの一部は含まれません

中国の検索市場では百度が唯一の支配的プレーヤーであるのに、なぜ360は検索市場に参入したいのでしょう...

VPS ホスティングはほぼ終了していますが、なぜクラウド ホスティングが好まれるのでしょうか?

インターネットが私たちの生活にますます普及するにつれて、ウェブサイトマーケティングは徐々にさまざまな...

再入荷: buyvm-$5/年/cpanel/仮想ホスト/SSD/独立IP

Buyvmのバーチャルホストbuyshareは少なくとも半年前から在庫切れでした。buyvmのバーチ...

A5 Link Hostingは1か月の試験運用に成功しました。SEOに関するいくつかの提案

親愛なるウェブマスターの友人たち:皆様のご理解、ご協力、ご支援のおかげで、A5 Link Hosti...

テレビのライブ放送ソフトウェアに CCTV チャンネルがない場合はどうすればよいですか? CCTV5 でワールドカップを視聴する 2 つの方法

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています昨年以来、...

常に変化する状況の中で、Baiduをあなたのウェブサイトのようにする方法

トラフィックとユーザーは、ウェブサイトの 2 つの重要な生命線です。この 2 つは互いに補完し合って...

電子商取引時代の代替アプローチ:ファンがいてこそ未来がある

まず、電子商取引の概念、つまり 3 つのステップについてお話しします。電子商取引1.0の時代は、検索...

電子商取引の価格戦争後:2013年の集団的利益追求

2012年は、オンライン小売業界ではレイオフ、オンラインとオフラインの競争など、多くのキーワードが注...

HootSuite CEO: 何もないところから何百万人ものユーザーを引き付ける秘訣

はじめに: HootSuite の CEO が、広告に 1 円も費やすことなく 500 万人の消費者...