HUOXIU

Kubernetes に OpenMLDB をデプロイするための完全ガイド

導入

Kubernetesは、業界で広く普及しているクラウドネイティブのコンテナオーケストレーションおよび管理ツールであり、数多くのプロジェクトで広く利用されています。現在、OpenMLDBのオフラインエンジンとオンラインエンジンの両方がKubernetesベースのデプロイメントを完全にサポートしており、より便利な管理を実現しています。この記事では、Kubernetesベースのオフラインエンジンとオンラインエンジンのデプロイメント戦略を紹介します。

Kubernetes ベースのオフラインエンジンとオンラインエンジンのデプロイメントは、完全に分離された2つのデプロイメント戦略です。ユーザーは、特定のニーズに応じて、Kubernetes ベースのデプロイメントをオフラインエンジンとオンラインエンジンのどちらにも使用できます。オフラインエンジンは Kubernetes ベースのデプロイメントに加えて、 localおよびyarnベースのデプロイメントもサポートし、オンラインエンジンはネイティブのコンテナに依存しないデプロイメントもサポートします。これらのデプロイメント戦略は、実際のシナリオに合わせて柔軟に組み合わせることができ、本番環境の要件を満たすことができます。

オフライン エンジンは Kubernetes バックエンドを使用します。

Sparkタスクをデプロイおよび管理するためのオペレーター

spark-on-k8s-operator の公式ドキュメントを参照してください。以下は、 Helmを使用してdefault名前空間にデプロイするためのコマンドです。必要に応じて名前空間と権限情報を変更できます。

helm で my-release の spark-operator/spark-operator をインストールします 
--namespaceデフォルト 
--名前空間を作成する 
--ウェブフックを設定する
。有効にする

真実

kubectl サービスアカウントの作成 Spark --namespaceデフォルト
kubectl で clusterrolebinding バインディングを作成する --clusterrole =編集 --サービスアカウント =デフォルト:スパーク

デプロイが成功したら、spark-operator によって提供されるコード例を使用して、Spark タスクを正常に送信できるかどうかをテストできます。

HDFSサポート

HDFSデータの読み書きを行うKubernetesタスクを設定する場合は、Hadoop設定ファイルを準備し、事前にConfigMapを作成する必要があります。ConfigMapの名前とファイルパスは必要に応じて変更できます。ConfigMapを作成するコマンドの例は次のとおりです。

 kubectl で設定マップ hadoop-config を作成します --from-file=/tmp/hadoop/etc/ 

Kubernetes サポートのためのオフライン エンジン構成

オフラインエンジンのTaskManager設定ファイルでは、Kubernetes関連の設定を指定できます。関連する設定項目は次のとおりです。

設定 タイプ 注記
スパークマスター 「Kubernetes」または「k8s」をサポートしています
オフラインデータプレフィックス HDFS パスを使用することをお勧めします。
k8s.hadoop.configmap デフォルト値は「hadoop-config」です。
k8s.mount.local.path デフォルト値は「/tmp」です。

Kubernetesを使用してオフラインエンジンを実行する場合、計算タスクはクラスター上で実行されます。そのため、オフラインストレージのパスをHDFSパスに設定することをお勧めします。そうしないと、タスクのデータの読み取り/書き込みに失敗する可能性があります。TaskManager設定ファイル内の関連項目の設定例を以下に示します。

オフラインデータプレフィックス=hdfs:///foo/bar/ 

: OpenMLDB オフライン エンジンの TaskManager の完全な構成ファイルは、次の場所にあります: https://openmldb.ai/docs/zh/main/deploy/conf.html#taskmanager-conf-taskmanager-properties

タスクの提出と管理

TaskManagerとKubernetesを設定すると、ローカルモードやYarnモードと同様に、コマンドラインからオフラインタスクを送信できるようになります。これは、SQLコマンドラインクライアントだけでなく、様々な言語のSDKからも利用できます。

たとえば、データのインポート タスクを送信する場合:

データを INFILE 'hdfs:///hosts' にロードし、テーブル db1.t1 OPTIONS(delimiter = ','、mode = 'overwrite'); 

Hadoop ConfigMap の内容を確認します。

 kubectl get configmap hdfs-config -o yaml 

Spark タスク、Pod の内容、ログを表示します。

 kubectl SparkApplication を取得kubectl ポッドを取得

オンライン エンジンはKubernetes 上にデプロイされます。

プロジェクト倉庫

オンライン エンジンの Kubernetes ベースのデプロイメント ソリューションは、スタンドアロンのデプロイメント ツールとして OpenMLDB をサポートしており、そのソース コード リポジトリは次の場所にあります: https://github.com/4paradigm/openmldb-k8s

必要とする

このデプロイメントツールは、Helm Chartsを使用して実装された、OpenMLDBオンラインエンジン用のKubernetesベースのデプロイメントソリューションを提供します。以下のバージョンでテスト済みです(それより低いバージョンは未検証です)。

  • Kubernetes 1.19以上

  • ヘルム 3.2.0 以上

また、Docker HubからプリコンパイルされたOpenMLDBイメージを使用する場合、現在サポートされているのはOpenMLDBバージョン0.8.2以降のみです。ユーザーは、当社のツールを使用して、他のバージョンのOpenMLDBイメージを独自に作成することもできます(「イメージ作成ツール」セクションを参照)。

準備: ZooKeeper のデプロイ

すでにZooKeeperをご利用の場合は、この手順をスキップしてください。そうでない場合は、インストールに進んでください。

 helm で zookeeper をインストールします。oci://registry-1.docker.io/bitnamicharts/zookeeper --set persistence.enabled=false 

データを永続化するには、すでに作成されたストレージ クラスを指定できます。

 helm で zookeeper をインストールします。oci://registry-1.docker.io/bitnamicharts/zookeeper --set persistence.storageClass=local-storage 

ZooKeeper パラメータ設定の詳細については、 このリンクを参照してください。

OpenMLDBの導入

リポジトリのソースコードをダウンロードする

このリポジトリのソース コードをダウンロードし、作業ディレクトリをこのリポジトリのルート ディレクトリに設定します。

git クローン https
: //github
.com /4paradigm/openmldb
- k8s
.git

cd openmldb - k8s

ZooKeeperアドレスを設定する

charts/openmldb/conf/tablet.flags および charts/openmldb/conf/nameserver.flags ファイル内のzk_cluster実際の ZooKeeper アドレスに変更します。デフォルトのzk_root_path/openmldbです

OpenMLDBの導入

Helm では、次のコマンドを使用してワンクリックでデプロイできます。

 helm で openmldb をインストールします。/charts/openmldb 

--setコマンドを使用して、OpenMLDB レプリカの数など、その他のデプロイメントオプションを設定できます。サポートされているオプションの一覧については、 OpenMLDB Chart の設定ドキュメントを参照してください

いくつかの重要な構成項目には注意が必要です。

  • デフォルトでは、データの保存に一時ファイルが使用されるため、ポッドを再起動するとデータが失われます。以下の方法を使用して、PVCを特定のストレージクラスにバインドすることをお勧めします。

 helm で openmldb をインストールします。/charts/openmldb --set persistence.dataDir.enabled=true --set persistence.dataDir.storageClass=local-storage 
  • デフォルトでは、 Docker Hub の4pdosc/openmldb-onlineイメージが使用されます(OpenMLDB 0.8.2 以上のみサポート)。独自のイメージを使用する場合は、 install時に--set image.openmldbImageを使用してイメージ名を指定できます。ローカルイメージを作成するには、イメージ作成ツールをご利用ください。

 helm で openmldb をインストールします。/charts/openmldb --set image.openmldbImage=openmldb-online:0.8.2 

予防

  • デプロイされた OpenMLDB サービスには、Kubernetes 内の同じ名前空間内でのみアクセスできます。

  • この方法でデプロイされたOpenMLDBクラスターにはTaskManagerモジュールがデプロイされていないため、 LOAD DATAおよびSELECT INTOステートメント、およびオフライン関連機能は使用できません。OpenMLDBにデータをインポートするには、OpenMLDBのオンラインインポートツール OpenMLDB Connector 、またはSDKを使用できます。テーブルデータをエクスポートするには、 オンラインデータエクスポートツールを使用できます

  • 本番環境では、Kubernetes上にタブレットがデプロイされている物理ノードでTHPを無効にする必要があります。THPを無効にすると、削除されたテーブルメモリが完全に解放されない問題が発生する可能性があります。THPの無効化手順については、 こちらをご覧ください。

ミラー作成ツール

デプロイではデフォルトでDocker Hub上のOpenMLDBイメージが使用されますが、ユーザーは独自のローカルイメージを作成することもできます。イメージ作成ツールは、コードリポジトリ( https://github.com/4paradigm/openmldb-k8s )にあるスクリプトdocker/build.shです

このスクリプトは次の 2 つのパラメータをサポートしています。

  • 最初のパラメータは OpenMLDB のバージョン番号です。

  • 2番目のパラメータは、OpenMLDBデプロイメントパッケージのソースです。デフォルトでは、中国本土のミラーアドレスから取得されます。GitHubから取得したい場合は、2番目のパラメータをgithub

例えば:

cd ドッカー

shビルド .sh 0.8.2

関連資料

  • OpenMLDB 公式サイト: https://openmldb.ai/

  • OpenMLDB GitHub ホームページ: https://github.com/4paradigm/OpenMLDB

  • OpenMLDB ドキュメント: https://openmldb.ai/docs/zh/

  • OpenMLDB WeChat グループ: