Diamond プラットフォームのデプロイ

インストーラパッケージが生成済みであることが前提です。Diamond ホストに /data のフォルダを準備し、フォルダ内にインストーラパッケージがあることを確認します。

クラスタの事前確認

手動アーキテクチャの場合、すべてのホストが Diamond デプロイの前提条件を満たしている必要があります。 事前確認処理はデプロイプロセスの中で実行されます。ホストの前提要件は以下のとおりです。

項目

Diamond ホスト

Senselink ホスト

ホスト名

/etc/hosts にマッピング済み

同左

OS バージョン

Ubuntu 16.04/CentOS 7.4

Ubuntu 16.04/CentOS 7.4

Python バージョン

2.7.15

2.7.12

Diamond SSH キー

/home/ubuntu/authorized_keys に設定済み

Diamond ホストと同じ

DNS レゾルバ

適切な構成

Diamond ホストと同じ

ディスクボリューム

OS ボリュームが必要

OS ボリュームが必要。少なくとも 1 つのデータボリューム

ディスクの空き容量

100GB

500GB

GPU カード

-

事前にGPUドライバーをインストールか、インストールのためにDiamondに置いておきます

インターネットカード

IP および MAC

IP および MAC

CPU 情報

-

-

メモリ情報

-

-

APT のアップデート

エラーが発生しないこと

エラーが発生しないこと

DiamondによるGPUドライバーのインストール

・GPUドライバーがプリインストールされている場合、以下の手順をスキップできます。

・GPUドライバーをDiamondによってインストールする場合、以下の準備が必要です。

Kernel Source of the Centos7.4 in the GPU hosts

# Confirm Centos kernel version
uname -a
# e.g. 3.10.0-693.el7.x86_64

# use google search keywords [centos7.4 3.10.0-693.el7.x86_64] and the first result may be the right download link. Download kernel-devel package and run rpm install command.

# wget https://buildlogs.centos.org/c7.1708.00/kernel/20170822030048/3.10.0-693.el7.x86_64/kernel-devel-3.10.0-693.el7.x86_64.rpm

# rpm -ivh kernel-devel-3.10.0-693.el7.x86_64.rpm

nouveauを無効にします。

config file /etc/modprobe.d/blacklist.conf

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

全てのECSホストに対してyumでlspciコマンドをインストールします

yum provides */lspci
yum install pciutils

「config.js」にGPUドライバーを配置します。

# vim $install_package_path/diamond/config.js

# Installation of gpu driver is custom by default that means  the GPU Driver on the hosts is Pre-installed.
If you want to install gpu driver by the diamond,you can set the value of the nvidiaDriverVersion field.

GPU

ドライバーバージョン

サンプル

Tesla P4

384.183

nvidiaDriverVersion: '384.183'

Tesla P100

410.129

nvidiaDriverVersion: '410.129'

Tesla T4

410.129

nvidiaDriverVersion: '410.129'

Reboot The ECS Hosts

Diamond デプロイメント構成の生成

セットアップを開始する前に、$install_package_path/config.yaml でファイルを構成します。

項目

説明

HOSTS

ホスト名およびすべてのホストの IP をカンマで区切って指定

'hd1h1 192.168.1.201,hd1h2 192.168.1.202,hd1h3 192.168.1.203,hd1h4 192.168.1.204,hd1h5 192.168.1.205,hd1h6 192.168.1.206'

DIAMOND_HOST

Diamond ホスト名

'hd1h1'

MASTER_HOST

k8s マスターのホスト名

'hd1h2, hd1h3, hd1h4'

WORKER_HOST

k8s ワーカーのホスト名

'hd1h1, hd1h5, hd1h6'

LINK_NODE

Senselink ノードのホスト名

'hd1h2, hd1h5, hd1h6'

ELASTICSEARCH_NODE

サービスのログストレージに使用する Elasticsearch ノードのホスト名

'hd1h2, hd1h5, hd1h6' elasticsearch

K8S_MASTER_SLB_IP

k8s マスターホスト用の内部 SLB の IP。k8s マスターホストが 2 つ以上設定されている場合に必要

'192.168.1.300'

SENSELINK_PORTAL_IP

Senselink ポータル用の外部 SLB のドメインまたは IP

'192.168.1.300'

MYSQL_HOST

MySQL リソースの URL

MYSQL_ROOT_USER

高い特権をもつ MySQL のアカウント (許可、作成、挿入など)

-

MYSQL_ROOT_PASSWORD

上記アカウントのパスワード

MONGO_HOST

MongoDB リソースの URL

MONGO_PORT

MongoDB リソースのポート

MONGO_USERNAME

MongoDB のアカウント

-

MONGO_PASSWORD

上記アカウントのパスワード

REDIS_HOST

Redis リソースの URL

REDIS_PASSWORD

上記アカウントのパスワード

MAIL_HOST

電子メールの SMTP アドレス。上記アカウントの変更に関するイベント発生時に、電子メールを送信する際に使用される。

MAIL_PORT

電子メールの SMTP のポート

MAIL_USERNAME

電子メールアカウント

-

MAIL_PASSWORD

電子メールアカウントのパスワード

OSS_ENABLE

Aliyun OSS の有効化

true または false

OSS_ENDPOINT

OSS のエンドポイント。OSS はイメージストレージに使用される。

OSS_ACCESSID

OSS のアクセス ID

OSS_ACCESSKEY

OSS の アクセスキー

OSS_BUCKETNAME

OSS のバケット名

NGINX_ACCESS_CONTROL_ALLOW_ORIGIN

許可するドメイン名の設定

TIME_ZONE

タイムゾーン

GMT+09:00 by default

Diamond のインストールの実行

Diamond のインストールには時間かかるため (1.5~2 時間)、tmuxscreen を使用してセッションを作成してから次のスクリプトを実行することを推奨します。セッションを作成しない場合、セッションのハングアップが原因でインストールが中断します。

############# run separately ############
##### Please ensure use ubuntu user. #####
# make sure install_package_path is install package path.
sudo su - ubuntu
cd $install_package_path

# Create tmux session for installation
# $ tmux new -s senselink
./setup_diamond.sh |& tee -a ./setup_diamond.log

インストーラの実行中、Diamond ワークフローインストーラの高度な実行ステップが表示されます。Diamond ホストで tail -f $install_package_path/setup_diamond.log を実行してサブコンポーネントの詳細ログを表示することも可能です。

Diamond プラットフォームのインストールが正常に完了すると、ダイヤ型の図が画面に表示されます。Server error というテキストが出力される場合はインストールが失敗したことを示します。詳細はサブコンポーネントログをご確認ください。問題の修正後、前述したコマンドを再実行します。

workflow installation has completed

     ***************
   *******************
     ***************
       ***********
         *******
           ***
            *

Diamond successfully installed

(オプション) k8s サービスノードのポート範囲の変更

Senselink Web サービスでは 80 番ポートが必要になるため、以下のコマンドを使用してk8s クラスタで k8s サービスノードのポート範囲を 1~65535 に変更する必要があります。

# find parameter service-node-port-range and change value to 1-65535
sudo vim /etc/kubernetes/manifests/kube-apiserver.yaml
sudo systemctl daemon-reload
sudo systemctl restart kubelet

(オプション) Diamond ホストへの Diamond SSH プライベートキーの追加

ホストの稼働中、Diamond ホストから他のホストに対して ssh の実行が必要になることがよくあります。このようなシナリオ向けにクレデンシャルが設定済みかもしれませんが、設定していない場合は、diamond.key を Diamond ホストのプライベートキーとして使用できます。すべてのホストには Diamond パブリックキーが設定されています。

以下のスクリプトを実行すると、Diamond キーが現行セッションのプライベートキーのリストに追加されます。

# add diamond.key to host private key list
ssh-agent bash
ssh-add /data/diamond/shells/diamond.key

あるいは、ユーザの Diamond キーをホストのプライベートキーとして永続的に使用することもできます。

##############################################
# Please ensure existing id_rsa wasn't used before run below command.
##############################################
# copy diamond.key as host private key
cp -i /data/diamond/shells/diamond.key /home/ubuntu/.ssh/id_rsa

k8s ワーカーホストに k8s kubeconfig が設定されない問題の解決方法

Diamond ではk8s ワーカーホスト用の k8s kubeconfig は設定されませんが、SenseLink のデプロイでは、ワーカーホストにサービスをデプロイするために k8s kubeconfig が必要です。この問題に対処するには、以下のスクリプトを Diamond ホストで複数回実行し、Diamond ホスト IP と k8s ワーカー IP を host_ip に割り当てます。

host_ip=10.10.10.x
scp /data/diamond/report/k8sKubeConfig $host_ip:~/kubeconfig
ssh $host_ip 'mkdir -p ~/.kube/ && mv ~/kubeconfig ~/.kube/config && sudo mkdir -p /root/.kube/ && sudo cp ~/.kube/config /root/.kube/'

外部 SLB を使用した Diamond ポータルの設定とクラスタのモニタリング

Diamond プラットフォームのインストールが完了すると、Diamond ポータルが稼働します。ポータルサービスは、Kubernetes クラスタにインストールされます。このポータルには http://SLB_IP:30080/ でアクセスできます。

(オプション) 使用頻度の高い K8s コマンドのエイリアスの設定

このセクションの内容はオプションであり、クラスタの稼動時に頻繁にホストに対して ssh を実行する場合に便利です。

トラブルシューティングの際に頻繁に使用する k8s コマンドがいくつかあります。それらのコマンドをエイリアスとして設定することで、長いコマンドを入力する必要がなくなります。

# adding frequent used commands
echo '
alias kaf="kubectl apply -f"
alias kdf="kubectl delete -f"
alias kg="kubectl get"
alias kga="kubectl get all"
alias kgp="kubectl get pods"
alias kd="kubectl describe"
alias kdp="kubectl describe pods"
alias kl="kubectl logs"
alias keti="kubectl exec -ti"
alias sk="kubectl -n senselink"
alias skg="kubectl -n senselink get"
alias skga="kubectl -n senselink get all"
alias skgp="kubectl -n senselink get pods"
alias skd="kubectl -n senselink describe"
alias skdp="kubectl -n senselink describe pods"
alias skl="kubectl -n senselink logs"
alias sketi="kubectl -n senselink exec -ti"
alias ck="kubectl -n component"
alias ckg="kubectl -n component get"
alias ckga="kubectl -n component get all"
alias ckgp="kubectl -n component get pods"
alias ckd="kubectl -n component describe"
alias ckdp="kubectl -n component describe pods"
alias ckl="kubectl -n component logs"
alias cketi="kubectl -n component exec -ti"
' >> ~/.bashrc
source ~/.bashrc

最終更新