本記事では、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再構築時にも元のデータを再利用して迅速に復旧できます。一般的にこのモードの使用を推奨します。
最適化シナリオ よく使われるOceanBaseクラスタの使用シナリオに対応するパラメータテンプレートが提供されています。使用シナリオに従って選択すると、パラメータ設定が自動的に行われます。最適化シナリオの詳細については、設定のベストプラクティスを参照してください。 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つ以上含むこと
クラスタトポロジーの設定
クラスタトポロジーは、主にクラスタのすべてのゾーン情報を設定します。通常は少なくとも3つのゾーンを設定する必要があります。+ ゾーンの追加をクリックするか、対応するゾーンの横にある削除アイコンをクリックして、ゾーンを追加または削除できます。
パラメータ説明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 モジュールの右上にある 最小構成で設定 ボタンをクリックすると、ダッシュボードが自動的に最小構成でリソースを埋めます。オプション設定
監視、パラメータ設定、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によって遮断され、削除するには事前に解除する必要があります。 テナントのリソースプール設定を入力します。
パラメータ説明レプリカの分散 各ゾーンの前にあるチェックボックスをクリックすることで、テナントがどのゾーンに分散されるかを設定できます。また、対応するゾーン内での優先順位、レプリカタイプ、ユニット数も設定できます。 リソースユニット構成 テナントの各ユニットのリソースを設定します。レプリカの分散モジュールに表示されている利用可能なリソースの状況に応じて、適宜設定することを推奨します。 送信して作成を待ちます。
設定完了後、送信 をクリックし、テナントリスト の 状態 が 正常に稼働 に変わったら、テナントの作成が成功したことを意味します。
ステップ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ページでさらに探求するか、リンクからご確認ください。