KubernetesのCockroachDB DBMSオーケストラ

翻訳者のまえがきCockroachDBの紹介を公開してからわずか1週間後にこの分散型でスケーラブルなオープンソースDBMSの最初の最終リリースが行われ、本番環境での公式な準備が整いました。 だから-それは、Kubernetesでのマイクロサービスの現実でそれを「調理する」方法を学ぶ時です。

この記事では、Kubernetesとそのベータ関数StatefulSetを使用して、デプロイメントを調整し、安全でない3ノードCockroachDBクラスターを管理する方法を示します。

はい。KubronetesでCockroachDBなどのステートフルアプリケーションを実行するには、現在ベータレベルでサポートされているシステムの複雑な機能を使用する必要があります。 KubernetesでCockroachDBを実行してテストする方が簡単ですが、ここで説明するアプローチは、Kubernetesで必要な機能が最終的に完成したときに、DBMSを運用環境に展開するように設計されています。 (注perev。:Kubernetesのステートフルアプリケーションの問題とその解決方法の1つについて、 Kubernetes Operatorsについて説明しました 。)

安全でないクラスター(つまり、暗号化を無効にして-およそTransl。)をデプロイすること 、本番環境のデータには推奨されないことに注意してください。 著者は、安全なクラスターの展開プロセスが改善された後、ガイドを更新することを約束します。

ステップ1.デプロイメントのための環境の選択


KubernetesでCockroachDBを実行する環境(クラウドまたはオンプレミス)を選択します。 記事に記載されている手順では、両方のオプションを考慮に入れており、それぞれに独自のニュアンスがあります。

したがって、初心者にとっては、Kubernetesに関連して使用される用語を理解しておくと便利です。


ステップ2. Kubernetesをインストールして実行する


クラウドで


プロジェクトのドキュメントに従って、コンピューターからKubernetesクラスターをインストールして起動します。


このステップの中心部分はKubernetesスクリプトの起動です。このスクリプトは、GCEまたはAWSの4つのインスタンスを作成し、それらを単一のKubernetesクラスターに結合します。これはすべてコンピューターからリモートで行います。 次の手順もコンピューターから実行されます。

局所的に


Kubernetesのドキュメントに従って、オペレーティングシステムにminikubeとkubectlをインストールします。 その後、ローカルKubernetesクラスターを起動します。

$ minikube start Starting local Kubernetes cluster... Kubectl is now configured to use the cluster. 

ステップ3. CockroachDBクラスターの開始


クラウドで


既製のcockroachdb-statefulset.yamlファイルを使用して、コンピューターからStatefulSetを作成します。

 kubectl create -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml 

翻訳者のメモ :Cockroach Labsの開発者が用意した既製のcockroachdb-statefulset.yamlを使用する前に、その内容を研究することが役立ちます。 幸いなことに、著者はKubernetesで何がどのように開発されているかを理解するのに役立つコメントを処理しました。 そして、もちろん、CockroachDBの実験操作または戦闘操作からの期待に応じて変更できます。

局所的に


minikube.shスクリプトとcockroachdb-statefulset.yaml構成ファイルをダウンロードし、スクリプトを実行します。

 $ wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/minikube.sh $ wget https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml $ sh minikube.sh 

このスクリプトは、永続ボリュームおよび永続ボリューム要求を作成するプロセスを自動化します。 また、 cockroachdb-statefulset.yaml構成を使用してkubectl createコマンドを実行し、 kubectl createします。

全般


このステップのその他のアクションは、クラウドおよびオンプレミスのアプリケーションで一般的です。

kubectl getコマンドを使用して、永続ボリュームと関連するクレームが作成されたことを確認します。

 $ kubectl get persistentvolumes NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE pvc-52f51ecf-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-0 26s pvc-52fd3a39-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-1 27s pvc-5315efda-8bd5-11e6-a4f4-42010a800002 1Gi RWO Delete Bound default/datadir-cockroachdb-2 27s 

ローカルボリュームの場合、同じコマンドの出力は次のようになります。

 NAME CAPACITY ACCESSMODES STATUS CLAIM REASON AGE pv0 1Gi RWO Bound default/datadir-cockroachdb-0 27s pv1 1Gi RWO Bound default/datadir-cockroachdb-1 26s pv2 1Gi RWO Bound default/datadir-cockroachdb-2 26s 

少し待って、3つの囲炉裏が正常に作成されたことを確認します。 それでも表示されない場合は、しばらくしてからもう一度確認してください。

 $ kubectl get pods NAME READY STATUS RESTARTS AGE cockroachdb-0 1/1 Running 0 2m cockroachdb-1 1/1 Running 0 2m cockroachdb-2 1/1 Running 0 2m 

StatefulSet構成では、すべてのCockroachDBノードがstderrに書き込むように構成されているため、問題を分析するためにログファイルまたはノードにアクセスする必要がある場合は、ハース自体の物理ログチェックの代わりにkubectl logs <podname>使用します。

ステップ4.組み込みSQLクライアントの使用


Cockroachdb cockroachdb-publicホスト名を置き換えてCockroachDBクラスターに接続する、インタラクティブな一時(1回限りの使用のために作成された)ウィンドウで組み込みのSQLクライアントを実行します。

 $ kubectl run cockroachdb -it --image=cockroachdb/cockroach --rm --restart=Never \ -- sql --insecure --host=cockroachdb-public 

CockroachDB SQLコマンドを実行します(詳細については、 プロジェクトのドキュメントを参照)。

 CREATE DATABASE bank; CREATE TABLE bank.accounts (id INT PRIMARY KEY, balance DECIMAL); INSERT INTO bank.accounts VALUES (1234, 10000.50); SELECT * FROM bank.accounts; +------+----------+ | id | balance | +------+----------+ | 1234 | 10000.50 | +------+----------+ (1 row) 

SQLクライアントでのコマンドの実行が完了したら、<Ctrl> + <d>、<Ctrl> + <c>を押すか、 \qコマンドを入力して一時サブを終了および削除します。

ステップ5.ノードドロップのシミュレーション


replicas: 3よるとreplicas: 3 StatefulSet構成のreplicas: 3 、Kubernetesは3つのポッド/ノードが常に実行されていることを確認します。 サブ/ホストが落ちた場合、Kubernetesは同じネットワーク名と永続ストレージを持つ新しいホストを自動的に作成します。

これを実際に見てみましょう。

  1. CockroachDBノードの1つを強制終了します。

     $ kubectl delete pod cockroachdb-2 pod "cockroachdb-2" deleted 

  2. 再起動中を確認します。

     $ kubectl get pod cockroachdb-2 NAME READY STATUS RESTARTS AGE cockroachdb-2 0/1 ContainerCreating 0 3s 

  3. 少し待って、準備ができていることを確認します。

     $ kubectl get pod cockroachdb-2 NAME READY STATUS RESTARTS AGE cockroachdb-2 1/1 Running 0 1m 

ステップ6.クラスターのスケーリング


クラウドで


Kubernetesスクリプトは4つのノードを作成しました:1つのマスターと3つのワーカー。 ポッドは作業ノードにのみ配置されるため、同じノードに2つのポッドが存在しないようにするには(実稼働のベストプラクティスの推奨事項を参照)、新しい作業ノードを追加し、StatefulSet構成を編集して別のサブを追加する必要があります。

  1. 作業ノードを追加します。 これを行うには、GCEでマネージドインスタンスグループのサイズを変更し、AWSでAuto Scalingグループのサイズを変更します。
  2. kubectl scaleコマンドを使用して、StatefulSetに以下を追加します。

     $ kubectl scale statefulset cockroachdb --replicas=4 statefulset "cockroachdb" scaled 

  3. 4番目の下が追加されていることを確認します。

     $ kubectl get pods NAME READY STATUS RESTARTS AGE cockroachdb-0 1/1 Running 0 2h cockroachdb-1 1/1 Running 0 2h cockroachdb-2 1/1 Running 0 9m cockroachdb-3 1/1 Running 0 46s 

局所的に


ポッドの数を増やすには、同じkubectl scaleコマンドを実行し、操作の成功を確認するだけで十分です( kubectl get pods )。

ステップ7.クラスターを停止する


クラウドで


CockroachDBクラスターを停止するには:

  1. kubectl deleteコマンドを使用して、作成されたすべてのリソース(ログおよび削除された永続ボリュームを含む)をクリアします。

     $ kubectl delete pods,statefulsets,services,persistentvolumeclaims,persistentvolumes,poddisruptionbudget \ -l app=cockroachdb 

  2. kubernetesディレクトリからcluster/kube-down.sh実行しcluster/kube-down.sh

最初にリソースを削除せずにKubernetesを停止した場合、削除された永続ボリュームはクラウドに存在し続けることに注意してください。

局所的に



:ログを保存するには、各サブのstderrからログをコピーしてから、クラスターとそのすべてのリソースを削除してください。 kubectl logs <podname>コマンドを使用して、pod stderrストリームにアクセスします。

翻訳者のあとがき :ここでCockroach LabsのWebサイトから翻訳された資料(リンクはソースで提供されています)は、プロジェクトのGitリポジトリで更新されたマークダウンドキュメントに対応しています。

私たち自身はまだ運用環境でCockroachDBを使用していませんが、この興味深いプロジェクトをよく見て、その潜在的な可能性を確認しています。

Source: https://habr.com/ru/post/J328756/


All Articles