本記事では、Kubernetes環境にOceanBaseクラスタをデプロイする方法について説明します。本記事は本番環境でのデプロイの参考となります。より詳細なカスタムデプロイや設定方法については、OceanBase K8s運用ツールドキュメントを参照してください。
前提条件
デプロイを開始する前に、環境が以下の要件を満たしていることを確認してください。
ハードウェアリソース
本番環境の安定性とパフォーマンスを確保するため、Kubernetesの残りリソースは以下の推奨設定を満たすことをお勧めします:
CPU:利用可能なCPUが24個以上あること。
メモリ:利用可能なメモリが72GB以上あること。
ストレージ:SSDストレージを使用し、利用可能な容量が400GB以上あること。
ソフトウェア依存関係
Kubernetesクラスタ:バージョンはv1.18以上である必要があります。
helm:ob-operatorとOceanBase Dashboardのデプロイに使用します。helmインストールドキュメントを参照してインストールしてください。
cert-manager:ob-operatorはcert-managerに依存して証書を管理します。cert-managerインストールドキュメントを参照してインストールしてください。
ストレージ:クラスタ内に利用可能なstorage classが必要です。一般的なストレージシステムについてテストを行いました。詳細は以下の表を参照してください。ストレージ互換性のテスト結果を参考にニーズを満たしているか判断できます。本記事では、local-path-provisionerを例として使用します。
ストレージ方式テストバージョン互換性説明local-path-provisioner 0.0.23 ✅ 開発およびテスト環境での使用を推奨します Rook CephFS v1.6.7 ❌ CephFSはfallocateシステムコールをサポートしていません Rook RBD (Block) v1.6.7 ✅ OpenEBS (cStor) v3.6.0 ✅ GlusterFS v1.2.0 ✅ マシンのカーネルバージョンが5.14以上の場合互換性あり Longhorn v1.6.0 ✅ JuiceFS v1.1.2 ✅ NFS v5.5.0 ❌ NFSプロトコルが4.2以上の場合クラスタは起動しますが、テナントリソースの回収はできません MySQLクライアントまたはOBClient:OceanBaseクラスタへの接続に使用します。
手順
説明
本記事では、ob-operator V2.3.3とOceanBase Dashboard V0.5.0を例に手順を説明します。他のバージョンでは若干異なる場合があります。
ステップ1:ob-operatorのデプロイ
ob-operatorは、Kubernetes環境におけるOceanBaseのコア管理コンポーネントです。Helmを使用したデプロイが推奨されます。
ob-operatorリポジトリの追加
helm repo add ob-operator https://oceanbase.github.io/ob-operator/ helm repo update ob-operatorob-operatorのインストール
helm install ob-operator ob-operator/ob-operator --namespace=oceanbase-system --create-namespace--namespaceはインストールする名前空間を設定します。必要に応じてカスタマイズ可能ですが、oceanbase-systemの使用を推奨します。インストール成功の確認
kubectl get pod -n oceanbase-system期待される出力結果は以下のとおりで、Podの
STATUSはRunningです。NAME READY STATUS RESTARTS AGE oceanbase-controller-manager-644b489fcc-6hlwf 2/2 Running 0 1m
ステップ2:OceanBase Dashboardのデプロイ
OceanBase Dashboardは、視覚化されたクラスタ管理と監視機能を提供します。
OceanBase Dashboardのインストール
helm install oceanbase-dashboard ob-operator/oceanbase-dashboard --namespace=oceanbase-system --set service.type=NodePort説明
service.typeのデフォルト値はNodePortです。環境がLoadBalancerをサポートしている場合は、service.typeをLoadBalancerに設定して外部IPを取得できます。アクセスアドレスの取得
# サービスポートの確認 kubectl get svc -n oceanbase-system oceanbase-dashboard-oceanbase-dashboardOceanBase Dashboardへのログイン
前の手順で確認したサービスポートを使用し、ブラウザからOceanBase Dashboardにアクセスします。デフォルトのアカウントとパスワードはどちらも
adminです。初回ログイン時にパスワードを変更する必要があります。service.typeがNodePortタイプに指定されている場合は、http://<任意ノードIP>:<NodePortポート>でアクセスできます。service.typeがLoadBalancerタイプに指定されている場合は、http://<External-IP>:<ポート>でアクセスできます。
ステップ3:OceanBaseクラスタのデプロイ
OceanBase Dashboardにログインした後、左側のナビゲーションバーの クラスター をクリックし、クラスタページで クラスター一覧 の右上にある クラスターを作成 をクリックして、クラスターを作成 ページに進みます。
基本情報の設定
このページでは、クラスタの 名前空間、クラスター名、クラスタモード、rootパスワード などの情報を設定できます。
パラメータ説明名前空間 ドロップダウンリストからOceanBaseクラスタを作成する名前空間を選択します。ドロップダウンリストの + 名前空間の追加 をクリックして新しい名前空間を作成することもできます。新しい名前空間を作成する場合、空間名は小文字で始まり、小文字または数字で終わる必要があります。小文字、数字、 -を含むことができ、長さは63文字以下である必要があります。リソース名 KubernetesにおけるOceanBaseクラスタのカスタムリソース名であり、同一の名前空間内の既存のOceanBaseクラスタリソース名と重複してはなりません。カスタムリソース名は、小文字で始まり、小文字または数字で終わる必要があります。小文字、数字、 -を含むことができ、長さは63文字以下である必要があります。クラスタ名 OceanBaseクラスタ名を設定します。クラスタ名は英字で始まり、英字または数字で終わる必要があります。英字、数字、アンダースコアを含むことができ、長さは2~32文字である必要があります。 クラスタモード ドロップダウンリストからクラスタのデプロイメントモードを選択します。異なるクラスタモードはOceanBaseデータベースのバージョン要件が異なり、クラスタのデプロイメントモードは障害発生時の復旧ポリシーに影響します。実際の環境とクラスタバージョンに応じて選択する必要があります。 - 通常モード:特別な処理を行わず、podのIPアドレスを直接使用してブートストラップします。現在、calicoとkube-ovnプラグインを認識しており、障害が発生してpodが再構築される際には、障害発生前のIPアドレスを使用します。OceanBaseクラスタには他のpodが使用しないように、専用のサブネットを割り当てることを推奨します。K8sクラスタで他のネットワークプラグインを使用している場合、拡張してから縮小する障害復旧ポリシーを採用しているため、大量のデータをコピーするのにより長い時間がかかり、多数派ノードの障害からの復旧ができない場合があります。
- 単体モード:
127.0.0.1を使用してブートストラップします。単一ノードクラスタのデプロイに限定されます。127.0.0.1をOBServerサービスアドレスとして指定することで、podが再構築された際に元のデータを再利用して迅速に復旧できます。 - serviceモード:各OBServerサービスに対して別のserviceを作成し、serviceのcluster IPアドレスを使用してブートストラップします。podが再構築された際にも元のデータを再利用して迅速に復旧できるため、一般的にこのモードの使用を推奨します。
最適化シナリオ 海洋底クラスタの一般的な使用シナリオに基づいたパラメータテンプレートを提供しており、使用シナリオに従って選択するとパラメータ設定が自動的に行われます。最適化シナリオの詳細については、設定のベストプラクティスを参照してください。 rootパスワード sysテナントのrootユーザーパスワードです。ランダム生成 をクリックすると、Dashboardがランダム文字列を自動生成します。また、カスタマイズして設定することもできます。パスワードをカスタマイズする場合、パスワード設定は以下の要件を満たす必要があります: - 長さが8~32文字であること
- 英字、数字、特殊文字(
~!@#%^&*_-+=|()[]:;,.?/)のみを含むこと - 大文字、小文字、数字、特殊文字をそれぞれ2つ以上含むこと
削除保護 チェックボックスをオンにすることで、削除保護を有効にできます。有効にすると、OceanBaseクラスタを削除する操作がWebhookによって遮断され、削除するには事前に無効にする必要があります。 詳細設定 高度な設定 の展開アイコンをクリックすると、proxyroパスワード を設定できます。高度な設定 が開いていない場合、Dashboardはproxyroパスワードとしてランダム文字列を自動生成します。
proxyroパスワードはsysテナントのproxyroユーザーパスワードであり、OceanBaseクラスタのproxyroパスワードとODPのproxyroパスワードが一致している場合にのみ、ODPは対応するOceanBaseクラスタにアクセスできます。ランダム生成 をクリックすると、Dashboardがランダム文字列を生成します。また、カスタマイズして設定することもできます。パスワードをカスタマイズする場合、パスワード設定は以下の要件を満たす必要があります:- 長さが8~32文字であること
- 英字、数字、特殊文字(
~!@#%^&*_-+=|()[]:;,.?/)のみを含むこと - 大文字、小文字、数字、特殊文字をそれぞれ2つ以上含むこと
クラスタトポロジーの設定
クラスタトポロジーは、主にクラスタのすべてのZone情報を設定します。通常は少なくとも3つのZoneを設定する必要があります。+ Zoneの追加 または対応するZoneの削除アイコンをクリックして、Zoneを追加または削除できます。
パラメータ説明zone名 OceanBaseデータベース内のZone名を設定します。カスタマイズ可能です。Zone名は英字で始まり、英字または数字で終わる必要があります。英字、数字、アンダースコアを含むことができ、長さは2~32文字である必要があります。 サーバー数 現在のZoneに含まれるOBServerサービスの数を設定します。 K8sクラスタ このパラメータは、複数のK8sクラスタをデプロイするシナリオにのみ適用されます。このZoneをどのK8sクラスタにデプロイするかを設定します。単一のK8sクラスタにデプロイする場合は空欄のままにしておいてください。複数のK8sクラスタにデプロイする方法の詳細については、複数K8sクラスタのデプロイを参照してください。 Topology Topology の前の展開ボタンをクリックすると、アフィニティ設定が可能です。node selector、pod affinity、tolerationの設定をサポートします。設定は、現在のZone内のOBServerサービスのpodにのみ有効です。 OBServerリソースの設定
パラメータ説明イメージ OceanBaseクラスタのデプロイに使用するイメージを設定します。イメージリスト をクリックするとすべてのイメージを確認できます。イメージのタグはOceanBaseデータベースのバージョン番号に対応しています。LTSバージョンのイメージの使用を推奨します。イメージは registry/image:tagの完全な形式で記述する必要があります。例:oceanbase/oceanbase-cloud-native:4.2.0.0-101000032023091319。リソース CPU、メモリ、ストレージリソースを含みます。ストレージでは、データ、実行ログ、redoログを格納するために3つの独立したPVCを作成します。データ、実行ログ、redoログの設定は、少なくとも メモリ の3倍である必要があります。PVCに独立したライフサイクルを有効にすることができます。PVC独立ライフサイクル を選択すると、OBServerリソースを削除してもPVCは連鎖して削除されず、手動で削除する必要があります。
OBserver モジュールの右上にある 最小構成で設定 ボタンをクリックすると、Dashboardが自動的に最小構成でリソースを埋めます。オプション設定
監視、パラメータ設定、NFSバックアップボリュームのマウント の後ろのボタンをクリックすると、対応する内容を設定できます。
モジュールパラメータ説明監視 イメージ 監視を有効にすると、obagentをサイドカー容器として配置し、監視機能を提供できます。ここでは、obagentのデプロイメントに使用するイメージを設定します。イメージリスト をクリックするとすべてのイメージを見ることができます。イメージタグはobagentのバージョン番号に対応しています。イメージは完全に registry/image:tagの形式で記述する必要があります。例:oceanbase/obagent:4.2.0-100000062023080210。リソース obagentのデプロイメントに必要なCPU数とメモリを入力します。正の整数を入力する必要があります。 パラメータ設定 パラメータ名 OceanBaseクラスタのパラメータを入力します。 パラメータ値 該当するパラメータに適切な値を設定します。設定されたパラメータ値はすべてのOBServerサービスに反映されます。 操作 削除 フィールドをクリックすると、対応するパラメータを削除できます。 説明
+ パラメータを追加 をクリックすると、パラメータを設定するための新しい行を追加できます。
NFSバックアップボリュームのマウント アドレス NFSを使用したバックアップ・リストアを行う場合は、ここでNFSサービスのアドレスを設定します。 パス バックアップパスを入力します。NFSのパスはOBServerサービスのコンテナにマウントされます。 送信して作成を待機する
上記の設定が完了したら、提出する をクリックし、クラスター一覧 の ステータス が 正常に稼働 に変わるのを待ちます。これでクラスタの作成は完了です。
説明
通常、2~3分で作成が完了する予定です。
ステップ4:テナントの作成
クラスタのデプロイが完了したら、業務用テナントを作成してアプリケーションで使用することを推奨します。左側のナビゲーションバーの テナント をクリックし、テナントページで テナント一覧 の右上にある テナントの作成 をクリックして、テナントの作成 ページに進みます。
テナントの基本情報を入力する
パラメータ説明OBクラスタ ドロップダウンリストから、作成するテナントが存在するOceanBaseクラスタを選択します。 リソース名 Kubernetesにおけるテナントのカスタムリソース名です。テナントはクラスタ内の同一namespace下に作成されます。 テナント名 作成するテナント名。 パスワード テナントのrootアカウントのパスワードです。ランダム生成 をクリックすると、Dashboardが自動的にランダム文字列を生成しますが、手動で設定することも可能です。パスワードを手動で設定する場合、以下の要件を満たす必要があります: - 長さが8~32文字
- 英字、数字、特殊文字(
~!@#%^&*_-+=|()[]:;,.?/)のみ含む - 大文字、小文字、数字、特殊文字をそれぞれ2文字以上含む
最適化シナリオ よく使われるOceanBaseデータベースの使用シナリオに対応するパラメータテンプレートが提供されています。使用シナリオに従って選択すると、パラメータが自動的に設定されます。最適化シナリオの詳細については、設定のベストプラクティスを参照してください。 接続ホワイトリスト テナントに接続できるホワイトリストアドレスです。デフォルトでは %は任意のアドレスを表します。削除保護 チェックボックスをオンにすることで、削除保護を有効にできます。有効にすると、テナントの削除操作がWebhookによって遮断され、削除する前に解除する必要があります。 テナントのリソースプール設定を入力する
パラメータ説明レプリカの分散 各Zoneの前にあるチェックボックスをクリックすることで、テナントがどのZoneに分散するかを設定できます。また、対応するZone内での優先順位、レプリカタイプ、unit数を設定できます。 リソースユニット構成 テナントの各unitのリソースを設定します。利用可能なリソース の状況を参考に、適宜設定することを推奨します。 送信して作成を待機する
設定完了後、提出する をクリックします。ステータス が 正常に稼働 に変わるのを テナント一覧 で待ちます。これにより、テナントの作成が成功したことを示します。
ステップ5:ODPのデプロイ
ODP(別名OBProxy)は、アプリケーションが分散型OceanBaseクラスタに接続するために必要なコンポーネントであり、リクエストを正しいOBServerノードにルーティングします。左側のナビゲーションバーの OBProxy をクリックし、OBProxyページで クラスター一覧 の右上にある OBProxyクラスタの作成 をクリックして、OBProxyクラスタの作成 ページに進みます。
基本情報を設定する
パラメータ説明リソース名 Kubernetesで作成されるdeploymentの名前です。設定する名前は、小文字で始まり、小文字または数字で終わる必要があります。小文字、数字、 -を含むことができ、長さは63文字を超えてはなりません。OBProxyクラスタ名 ODPのアプリケーション名。 OBクラスタへの接続 ドロップダウンリストから接続するOceanBaseクラスタを選択できます。デフォルトでは、rs_list方式で選択したOceanBaseクラスタに接続します。 名前空間 KubernetesでODPをデプロイする名前空間です。OceanBaseクラスタを選択すると、選択したOceanBaseクラスタのnamespaceがデフォルトで自動的に入力されます。 OBProxy rootパスワード ODP管理テナント( proxysys)のrootユーザーパスワードです。ランダム生成 をクリックすると、Dashboardが自動的にランダム文字列を生成しますが、手動で設定することも可能です。パスワードを手動で設定する場合、以下の要件を満たす必要があります:- 長さが8~32文字
- 英字、数字、特殊文字(
~!@#%^&*_-+=|()[]:;,.?/)のみ含む - 大文字、小文字、数字、特殊文字をそれぞれ2文字以上含む
その他の設定
パラメータ説明イメージ ODPデプロイに使用するイメージを設定します。イメージリスト をクリックしてすべてのイメージを確認できます。最新バージョンのデプロイを推奨します。イメージタグはODPのバージョン番号に対応しており、イメージは registry/image:tagの完全な形式で記述する必要があります。例:oceanbase/obproxy-ce:4.3.3.0-5。サービスタイプ プルダウンリストからODP用に作成するサービスタイプを選択します。Kubernetesクラスタ内でのみアクセスが必要な場合は、ClusterIPを選択できます。クラスタ外部からのアクセスが必要な場合は、状況に応じてNodePortまたはLoadBalancerを選択できます。 レプリカ数 ODPのレプリカ数を設定します。 CPUコア数 ODPに割り当てるCPUコア数を設定します。 メモリサイズ ODPに割り当てるメモリリソースを設定します。 パラメータ設定 + 追加 をクリックすると、KV形式でODPのパラメータを設定できます。 送信して作成を待機
上記の設定が完了したら、送信 をクリックし、クラスター一覧 の ステータス が Running に変わるのを待ちます。これにより、ODPの作成が成功したことを示します。
ステップ6:接続検証
デプロイが完了したら、OBProxyの詳細ページで サービスアドレス を確認し、このアドレスを使用してクラスタに接続できます。
以下のコマンドを実行し、ODPを介して obcluster クラスタの obtenant2 テナントに接続します。テナント接続の詳細については、接続方法の概要を参照してください。
mysql -h10.10.10.1 -P2883 -uroot@obtenant2#obcluster -p****** oceanbase
出力は次のとおりです:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.25 OceanBase_CE 4.3.5.3 (r103000092025080818-e8da5f0afb288ed0add0613740c6ccf2a3c6830b) (Built Aug 8 2025 18:43:02)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [oceanbase]>
関連ドキュメント
このドキュメントでは、初期環境の構築に必要な最小限のデプロイ方法のみを説明しています。当社は、包括的な運用保守・監視機能や、より高い可用性が求められるマルチKubernetesクラスタでのデプロイモードもサポートしています。詳細については、Dashboardページでさらに探求するか、リンクからご確認ください。