20.6.1 HADBのコマンドの実行方法
DockerおよびKubernetesを使用してHADBのコマンドを実行する手順を説明します。
手順
-
HADBサーバ起動コンテナのシェルを取得する
次のコマンドを実行してください。
■コマンドの実行例
kubectl exec -it hadb-server-5fd5cc7fb8-8jv58 /bin/bash
[説明]
次のとおりに指定してください。
-
Pod名(ここではhadb-server-5fd5cc7fb8-8jv58)
kubectl get podsコマンドで取得した,HADBサーバ起動コンテナが配置されているPodの名前を指定してください。
-
シェル(ここでは/bin/bash)
引数を指定する場合は,指定するシェルの前にダブルダッシュ(--)を指定してください。
■コマンドの実行例
kubectl exec -it hadb-server-5fd5cc7fb8-8jv58 -- /bin/bash -l
-
-
ユーザをHADB管理者に切り替える
手順1.のコマンドを実行すると,HADBサーバ起動コンテナのシェルプロンプトが表示されます。この時点では,HADBサーバ起動コンテナ内のrootユーザでログインしている状態になるため,次のrunuserコマンドを実行して,ユーザをHADB管理者に切り替えてください。
■コマンドの実行例
[root@hadb-server-5fd5cc7fb8-8jv58 /]# runuser adbmanager [adbmanager@hadb-server-5fd5cc7fb8-8jv58 /]$ cd [adbmanager@hadb-server-5fd5cc7fb8-8jv58 ~]$
[説明]
下線部分は,コンテナ内のシェルプロンプトです。表示内容は実行環境によって異なります。また,adbmanagerは,HADBサーバ起動コンテナ内のHADB管理者のユーザ名です。
-
HADBのコマンドを実行する
通常のLinuxと同じようにHADB管理者で各種コマンドを実行できます。各種コマンドの詳しい使い方については,HADB コマンドリファレンスの各章を参照してください。ただし,adbstopコマンドは実行しないでください。
なお,adbimportコマンドを実行する場合に,必要な入力データファイルがコンテナの外部にあるときは,次のどちらかを実施してください。
-
コンテナ内からアクセス可能な場所に,入力データファイルを格納する
-
コンテナ内に入力データファイルをコピーする
コンテナ内に入力データファイルをコピーする場合は,次のコマンドを実行してください。ホストOS上の入力データファイル(/root/import/data.csv)を,HADBサーバ起動コンテナ内のディレクトリ(/home/adbmanager/)にコピーできます。
■コマンドの実行例
kubectl cp /root/import/data.csv hadb-server-5fd5cc7fb8-8jv58:/home/adbmanager/
[説明]
下線部分はPod名です。kubectl get podsコマンドで取得した,HADBサーバ起動コンテナが配置されているPod名を指定してください。
- メモ
-
上記のコマンドでコピーしたファイルは,ファイルの所有者がコンテナ内のHADB管理者になっていません。HADBサーバ起動コンテナのシェルプロンプトを取得したあとに,chownコマンドを使用して,HADB管理者に所有者を変更してください。
-
-
HADBサーバ起動コンテナのシェルを終了する
コンテナ内のシェルプロンプトでexitを入力してください。runuserコマンドでユーザを切り替えている場合,exitを複数回実行してください。
- 重要
-
コンテナ内でadbstopコマンドを実行しないでください。adbstopコマンドを実行してHADBサーバを終了させると,HADBサーバ起動コンテナ自体も同時に停止してしまいます。なお,コンテナ内でadbstopコマンドを実行してしまった場合は,Deploymentオブジェクトの定義のreplicas数に応じて,KubernetesがHADBサーバ起動コンテナを含むPodオブジェクトを再作成します。そのため,HADBサーバ起動コンテナを再度手動で作成したり,HADBサーバ起動コンテナを含むDeploymentオブジェクトを再作成したりする必要はありません。