この記事はWeChatの公開アカウント「Hacker Afternoon Tea」から転載したもので、著者はShaoです。この記事を転載する場合は、Hacker Afternoon Tea公式アカウントまでご連絡ください。 Rook は、クラウド ネイティブ環境とネイティブに統合するためのさまざまなストレージ ソリューションのプラットフォーム、フレームワーク、サポートを提供するオープン ソースのクラウド ネイティブ ストレージ オーケストレーターです。 Rook は、ストレージ ソフトウェアを自己管理、自己スケーリング、自己修復機能を備えたストレージ サービスに変換します。これは、展開、ブートストラップ、構成、プロビジョニング、スケーリング、アップグレード、移行、災害復旧、監視、およびリソース管理を自動化することによって実現されます。 Rook は、基盤となるクラウドネイティブのコンテナ管理、スケジューリング、オーケストレーション プラットフォームによって提供される機能を使用して、その機能を実行します。 Rook は拡張ポイントを活用してクラウド ネイティブ環境に深く統合し、スケジュール、ライフサイクル管理、リソース管理、セキュリティ、監視、ユーザー エクスペリエンスのシームレスなエクスペリエンスを提供します。 Cassandra クイックスタートCassandra は、超高速のパフォーマンスと調整可能な一貫性を備えた、可用性が高く、フォールト トレラントなピアツーピアの NoSQL データベースです。単一障害点のない大規模なスケーラビリティを提供します。 Scylla は、C++ で Cassandra をハードウェアに近い形で書き直したものです。シェアードナッシング アーキテクチャを採用しており、真の線形スケーラビリティと主要なハードウェア最適化を実現し、超低レイテンシと非常に高いスループットを実現します。これは Cassandra の代替品であり、同じインターフェースを使用するため、Rook でもサポートされています。 前提条件Rook Cassandra オペレーターを実行するには、Kubernetes クラスターが必要です。 Rook 用の Kubernetes クラスターが準備されていることを確認する (Cassandra では flexvolume プラグインは必要ありません) Cassandraオペレーターをデプロイする まず、次のコマンドを使用して Rook Cassandra Operator をデプロイします。
これにより、名前空間 rook-cassandra-system にオペレーターがインストールされます。オペレーターが起動して実行中であることを確認できます。
Cassandra/Scylla クラスターの作成と初期化オペレーターが実行されているので、clusters.cassandra.rook.io リソースのインスタンスを作成して、Cassandra/Scylla クラスターのインスタンスを作成できます。このリソースの一部の値は構成可能なので、cluster.yaml を参照して、好みに合わせて設定を調整してください。 Cassandra クラスターを作成する準備ができたら、次のコマンドを実行します。
次のコマンドを使用して、新しい Cassandra クラスターを表す Kubernetes オブジェクトが作成されたかどうかを確認できます。これは、Rook が Kubernetes を正常に拡張して、Cassandra クラスターを Kubernetes クラウド ネイティブ環境の第一級オブジェクトにしたことを示しているため重要です。
必要なメンバーがすべて実行されているかどうかを確認するには、次のコマンドで、cluster.yaml に指定されたメンバー数と同じ数のエントリが表示されるはずです。
Cassandra クラスターのステータスをそのステータスから追跡することもできます。クラスターの現在のステータスを確認するには、次のコマンドを実行します。
データベースへのアクセス
新しいクラスターで cqlsh シェルを取得するには:
新しいクラスターを作成すると、Rook はクライアントがクラスターにアクセスするためのサービスを自動的に作成します。サービス名は慣例に従っています
Kubernetes クラスターで実行されているポッドは、このサービスを使用して Cassandra に接続できます。以下は Python ドライバーを使用した例です。
スケールアップオペレーターはラックの拡張と新しいラックの追加をサポートします。変更するには、以下を使用できます。
スケールダウンオペレーターはラックのスケールダウンをサポートします。変更するには、以下を使用できます。
掃除このチュートリアルに関連するすべてのリソースをクリーンアップするには、次のコマンドを実行します。 注意: これにより、データベースが破壊され、関連するすべてのデータが削除されます。
トラブルシューティングクラスターが起動しない場合は、まずオペレーターのログを確認します。
オペレーター ログですべてが正常に見える場合は、Cassandra インスタンスの 1 つのログを確認することもできます。
Cassandra モニタリングCassandra ラックに対して jmx_exporter を有効にするには、CassandraCluster CRD でラックに対して jmxExporterConfigMapName オプションを指定する必要があります。 例えば:
すべてのメトリックを取得するための簡単な構成マップの例:
ConfigMap のデータ フィールドには、jmx エクスポーター設定を含む jmx_exporter_config.yaml キーが含まれている必要があります。 構成マップが更新されても、Pod の自動リロード メカニズムは存在しません。 configmap を変更した後は、すべてのラック ポッドを手動で再起動する必要があります。
Ceph ストレージ クイックスタートこのガイドでは、Ceph クラスターの基本的なセットアップについて説明し、クラスター内で実行されている他のポッドからブロック、オブジェクト、およびファイル ストレージを使用できるようにします。 最小バージョンRook は Kubernetes v1.11 以降をサポートしています。 重要: K8s 1.15 以前を使用している場合は、Rook CRD の別のバージョンを作成する必要があります。サンプル マニフェストの pre-k8s-1.16 サブフォルダーにある crds.yaml を作成します。 前提条件Rook で使用できる Kubernetes クラスターがあることを確認します。 Ceph ストレージ クラスターを構成するには、次のローカル ストレージ オプションの少なくとも 1 つが必要です。
次のコマンドを使用して、パーティションまたはデバイスがファイル システムでフォーマットされているかどうかを確認できます。
FSTYPE フィールドが空でない場合、対応するデバイスの上にファイル システムが存在します。この場合、Ceph で vdb を使用できますが、vda とそのパーティションは使用できません。 要約運が良ければ、次の kubectl コマンドとサンプル yaml ファイルを使用して、シンプルな Rook クラスターを作成できます。
クラスター環境Rook のドキュメントは、実稼働環境で Rook を起動することに重点を置いています。テスト環境の一部の設定を緩和するための例もいくつか提供されています。このガイドの後半でクラスターを作成するときは、次のクラスター マニフェストの例を検討してください。
Rookオペレーターを展開する最初のステップは、Rook オペレーターを展開することです。使用している Rook のバージョンに対応するサンプル yaml ファイルを使用していることを確認します。
Operator を本番環境で起動する前に、いくつかの設定を検討することをお勧めします。
Rook Ceph クラスターを作成するRook オペレーターが実行されているので、Ceph クラスターを作成できます。クラスターが再起動後も存続できるようにするには、dataDirHostPath プロパティがホストに対して有効になるように設定してください。 クラスターを作成します。
kubectl を使用して、rook-ceph 名前空間内のポッドを一覧表示します。すべて実行されると、次のポッドが表示されるはずです。 osd ポッドの数は、クラスター内のノードの数と構成されているデバイスの数によって異なります。上記の cluster.yaml を変更しない場合は、ノードごとに 1 つの OSD が作成されると考えられます。 CSI、rook-ceph-agent (flex ドライバー)、rook-discover ポッドも、設定に応じてオプションになります。
クラスターが正常であることを確認するには、Rook ツールボックスに接続し、ceph status コマンドを実行します。
ストレージRook によって公開される 3 つのストレージ タイプの詳細については、次のガイドを参照してください。
CephダッシュボードCeph には、クラスターのステータスを表示できるダッシュボードがあります。 道具Rook クラスターのデバッグとトラブルシューティング用の Ceph クライアントのフルセットを含むツールボックス コンテナーを作成しました。 モニター各 Rook クラスターには、Prometheus で監視するためのメトリック コレクター/エクスポーターがいくつか組み込まれています。 破壊するクラスターのテストが完了したら、次の手順に従ってクラスターをクリーンアップしてください。 ネットワーク ファイル システム (NFS)NFS を使用すると、リモート ホストはネットワーク経由でファイル システムをマウントし、ローカルにマウントされているかのようにそれらのファイル システムと対話できます。これにより、システム管理者はネットワーク上の中央サーバーにリソースを統合できるようになります。
ボリュームを公開するには、PVC 経由で NFS サーバー ポッドに接続する必要があります。 ホストパス、AWS Elastic Block Store、GCP Persistent Disk、CephFS、Ceph RBD など、あらゆるタイプの PVC に接続およびエクスポートできます。これらのボリュームの制限は、NFS 経由で共有される場合にも適用されます。これらのボリュームの詳細と制限については、Kubernetes のドキュメントで詳しく知ることができます。 3. NFS をマウントするポッドを実行する可能性のあるすべての Kubernetes ノードに NFS クライアント パッケージをインストールする必要があります。 CentOS ノードに nfs-utils をインストールするか、Ubuntu ノードに nfs-common をインストールします。 NFSオペレーターの導入まず、次のコマンドを使用して Rook NFS オペレーターをデプロイします。
オペレーターが起動して実行中であることを確認できます。
名前 準備完了 ステータス 再起動 年齢
NFS Admission Webhook をデプロイする (オプション)アドミッション Webhook は、API サーバーへのアドミッション要求を受信する HTTP コールバックです。アドミッション Webhook には、検証アドミッション Webhook と変更アドミッション Webhook の 2 種類があります。 NFS Operator は、API サーバーに送信された NFSServer オブジェクトを etcd (永続性) に保存する前に検証する検証アドミッション Webhook をサポートしています。 NFS でアドミッション Webhook を有効にするには (たとえば、アドミッション Webhook を検証する)、次の手順を実行する必要があります。 まず、cert-manager がインストールされていることを確認します。まだインストールされていない場合は、cert-manager インストール ドキュメントの手順に従ってインストールできます。あるいは、次の単一のコマンドを実行することもできます。
これにより、cert-manager の最新バージョン (v0.15.1) が簡単にインストールされます。完了したら、cert-manager コンポーネントが正しくデプロイされ、実行状態になっていることを確認します。
cert-manager が実行されると、NFS Webhook をデプロイできるようになります。
Webhook が稼働していることを確認します。
OpenShift セキュリティ コンテキスト制約を作成する (オプション) OpenShift クラスターでは、追加のセキュリティ コンテキスト制約をいくつか作成する必要があります。 OpenShift で実行していない場合は、このセクションをスキップして次のセクションに進むことができます。 nfs-server ポッドのセキュリティ コンテキスト制約を作成するには、次の yaml を使用できます。これは、/cluster/examples/kubernetes/nfs の下の scc.yaml にもあります。 注意: OpenShift の古いバージョンでは apiVersion: v1 が必要になる場合があります
次のコマンドで scc を作成できます。
ポッド セキュリティ ポリシーを作成する (推奨) ポッドセキュリティポリシーも作成することをお勧めします
このファイルを psp.yaml という名前で保存し、次のコマンドで作成します。
NFS サーバーの作成と初期化オペレーターが実行されているので、nfsservers.nfs.rook.io リソースのインスタンスを作成して、NFS サーバーのインスタンスを作成できます。 NFS サーバー リソースのさまざまなフィールドとオプションを使用して、サーバーとそのボリュームをエクスポート用に構成できます。 NFSサーバーを作成する前に、ServiceAccountとRBACルールを作成する必要があります。
このファイルを rbac.yaml という名前で保存し、次のコマンドを使用して作成します。
このガイドには、NFS サーバーを使用してボリュームをエクスポートする主な例が 3 つあります。
デフォルトのストレージクラスの例最初の例では、実行している環境のデフォルトの StorageClass によってサポートされるストレージをエクスポートする NFS サーバー インスタンスを作成する手順を説明します。環境によっては、これがホスト パスになる場合もあれば、クラウド プロバイダーの仮想ディスクになる場合もあります。いずれにしても、この例ではデフォルトの StorageClass が存在している必要があります。 まず、次の NFS CRD インスタンス定義を nfs.yaml という名前のファイルに保存します。
nfs.yaml ファイルを保存したら、次のように NFS サーバーを作成します。
XFS ストレージクラスの例Rook NFS は xfs_quota を介してディスク クォータをサポートします。したがって、ボリュームのディスク クォータを指定する必要がある場合は、次の例に従ってください。 この例では、prjquota オプションを使用して xfs としてマウントされた基礎ボリュームを使用します。基礎となるボリュームを作成する前に、xfs ファイルシステムと prjquota mountOptions を使用して StorageClass を作成する必要があります。 Kubernetes の多くの分散ストレージ プロバイダーは xfs ファイル システムをサポートしています。通常、storageClass パラメータの fsType: xfs または fs: xfs によって定義されます。ただし、ストレージ クラスのファイル システム タイプを実際に指定する方法は、そのストレージ プロバイダーによって異なります。詳細については、https://kubernetes.io/docs/concepts/storage/storage-classes/ を参照してください。 GCE PDとAWS EBSのStorageClassの例を以下に示します。
xfs ファイルシステムと prjquota mountOptions を持つ StorageClass を作成したら、次の例を使用して NFS サーバー インスタンスを作成できます。
この PVC および NFS サーバー インスタンスを nfs-xfs.yaml として保存し、次のコマンドを使用して作成します。
Rook Ceph ボリュームの例この代替例では、NFS サーバーのエクスポートとして別の基礎ボリュームを使用します。これらの手順では、クライアントがネットワーク経由でアクセスできるように Ceph RBD ブロック ボリュームをエクスポートする方法について説明します。 Rook Ceph クラスターが起動したら、NFS サーバーの作成に進むことができます。 この PVC および NFS サーバー インスタンスを nfs-ceph.yaml として保存します。
nfs-ceph.yaml に保存した NFS サーバー インスタンスを作成します。
NFSサーバーの検証次のコマンドを使用して、新しい NFS サーバーとそのエクスポートを表す Kubernetes オブジェクトが作成されたかどうかを確認できます。
NFS サーバー ポッドが起動して実行されていることを確認します。
NFS サーバー ポッドが実行状態の場合、公開された NFS 共有が正常に作成され、クライアントはネットワーク経由でアクセスを開始できます。 エクスポートを訪問Rook バージョン v1.0 以降、Rook は NFS の動的プロビジョニングをサポートします。この例では、nfs で動的構成機能を使用する方法を示します。 NFS Operator および NFSServer インスタンスをデプロイした後。ボリュームを動的にプロビジョニングするには、次の例のようなストレージクラスを作成する必要があります。
これを sc.yaml などのファイルとして保存し、次のコマンドを使用してストレージクラスを作成できます。
注: StorageClass は次の 3 つのパラメータを渡す必要があります。
上記のストレージクラスを作成した後、次の例に示すように、ストレージクラスを参照する PV クレームを作成できます。
また、たとえば pvc.yaml という名前のファイルとして保存し、次のコマンドを使用して PV クレームを作成することもできます。
消費 輸出これで、上記の PersistentVolumeClaim クレームを使用してエクスポートされたボリュームを使用するサンプル Web サーバー アプリを作成することで、作成した PV を使用できるようになります。この例を構成するポッドは 2 つあります。 NFS共有の内容を読み取り、表示するWebサーバーポッド ウェブサイトが常に更新されるように、NFS共有にランダムデータを書き込むライターポッド cluster/examples/kubernetes/nfs フォルダから busybox ポッド (ライター) と Web サーバーを起動します。
期待される busybox ライター ポッドと Web サーバー ポッドの両方が起動して実行されていることを確認しましょう。
Web サーバーをネットワーク経由でアクセスできるようにするには、そのためのサービスを作成しましょう。
次に、先ほど起動した busybox ライター ポッドを使用して、nginx がデータを正しく提供していることを確認できます。次の 1 行コードでは、kubectl exec を使用して、busybox ライター ポッドで wget を使用して Web サーバー ポッドによってホストされている Web ページを取得するコマンドを実行します。 busybox ライター ポッドが新しいタイムスタンプを書き込み続けると、返される出力も約 10 秒ごとに更新されることがわかります。
掃除して破壊するこのチュートリアルに関連するすべてのリソースをクリーンアップするには、次のコマンドを実行します。
トラブルシューティングNFS サーバー ポッドが表示されない場合、最初の手順は NFS オペレーター ログを確認することです。
|
<<: ノーコードプラットフォームがSaaSを介してスタートアップの成長を促進する方法
>>: レポート: 2021 年第 2 四半期のクラウド市場の総支出は 400 億ドルを超える
もっと多くを得たいと思ったとき、私たちは必ず、得るものよりはるかに多くを与えることになります。私を例...
CDN が誕生して以来、従来の CDN、クラウド CDN、共有 CDN の 3 世代が存在しましたが...
Hostga「Indescribable」は、今週の金曜日から来週の月曜日まで、アメリカの戦没者追悼...
A5 Webmaster Network(www.admin5.com)は4月25日、今月23日、か...
シンガポールとオーストラリアにあるOVHの2つのデータセンターのVPSが、長い間在庫切れだったが、再...
私は1年以上SEO業務に携わっています。以前はウェブサイトを作っただけで、ウェブサイトのSEOキーワ...
hostgnome (HOSTGNOME LTD 13468575、ASN: AS79、2003年に...
新しい時代の IT インフラストラクチャの発展に伴い、従来のインフラストラクチャに代わってクラウド ...
raksmart Japanはどうですか? raksmart Japanのクラウドサーバーはいかがで...
Hiformance は、私が間違っていなければ、今年設立された企業です。同社は米国に登録されていま...
10月24日のフェニックステクノロジーニュースによると、メディアは今朝、DianpingがすでにBa...
以下は、Huizhou SEO Blog のために Ye Jianhui が書いたウェブサイト SE...
Changsha Internet Marketing は、インターネット マーケティング担当者とし...
対外貿易マーケティングとは、「広告」、「マスプロモーション」、「バイラルマーケティング」、「テレマー...
オンラインマーケティングの実施方法、オンラインマーケティングの実施方法、この記事では、一般的に使用さ...