NetApp Tech OnTap NetApp Logo
NetApp Tech OnTap
     
kubernetes external dynamic storage provisioner Trident をインストールして一通り使ってみる。

インストールからアプリデプロイ時にストレージを動的にプロビジョニングするまで

シェアするNetAppオフィシャルFacebook   ツイート

 

TL;DR

この記事では NetApp trident storage orchestrator をインストールし、設定を行い実際に kubernetes/OpenShift からストレージをプロビジョニングするところまでを確認します。

trident のインストール、StorageClass の作成、 PersistenVolumeClaim の作成、PV の動的な作成を一連の流れで説明したものとなります。

そのため、ストレージの設定や OS の設定については簡易的なものとなっており、本番運用を検討する際には最適な設計が必要となります。

また、本記事では Kubernetes/OpenShift のインストールや設定についてはすでにできているものとして trident に特化した内容となっています。

ドキュメント上 oc コマンドを使用していますが、kubectl でも実施可能です。

前提条件

  • docker がインストール済みであること
  • kubernetes または OpenShift を導入済みであること
  • kubectl または oc コマンドが使用できること

動作確認した環境

  • CentOS 7.3
  • Docker 17.10
  • OpenShift origin 3.6
  • trident 17.10.1

ホストOS設定

検証した環境

ホスト OS 設定

trident をデプロイするホストへ以下のパッケージをインストールし、サービスを有効化する。

検証した環境

ストレージ設定

trident を起動する上で必要となるバックエンドストレージの設定を実施します。

今回は NFS のデータ永続化領域を準備します。

ONTAP に ssh でログイン後、CLI でコマンドを実行していきます。
以下の設定では SVMを作成し、データアクセスのためのインターフェース作成、 SVM 管理者が操作(ボリュームの作成・削除・変更)ができるアグリゲートも併せて設定します。

Broadcast domainipspace については標準で準備されているものを使う想定です。

環境に応じて使用ください。

コマンドラインで指定するパラメータは以下の通りです。

  • #{SVMNAME}: 設定対象の SVM を指定
  • #{IPSPACE} ipspace を指定、特に設定していないのであれば default
  • #{AGGR} SVM に関連付ける aggregate を指定
  • #{DATA-LIF} NFS 通信用のネットワークインターフェース
  • #{MGMT-LIF} SVM 管理用のネットワークインターフェース
  • #{HOME-NODE} LIF を作成するホームノード
  • #{HOME-PORT} LIF を作成するホームポート
  • #{IP} NFS 通信をする LIF IP
  • #{SVM-MGMT-IP} 管理通信をする LIF IP
  • #{NETMASK} ネットマスク

ストレージ設定

例: 以下の例では IP の割当は ONTAPsubnet 機能を使用して動的に割り当てています

ストレージ設定

事前確認

kubectl または oc が入っていることを確認

ストレージ設定

Pod から ストレージへ接続できることを確認

ストレージ設定

Docker image のダウンロード

trident デプロイ中にイメージがローカルになければダウンロードしますが、タイムアウトが発生し失敗することもあるため
事前にダウンロードします。

ストレージ設定

Trident インストーラのダウンロード

インストーラのダウンロードは以下のURL からダウンロードしたいバージョンを確認しダウンロード URL をメモしてください。

例えば、 17.10.1 であれば以下の URL となります。

https://github.com/NetApp/trident/releases/download/v17.10.1/trident-installer-17.10.1.tar.gz

インストール後、解凍します。

OCI

tridentctl のインストール

tridentctl という trident を操作するコマンドラインユティリティです。
tridentctl をパスの通った場所へ配置します

OCI

tridentctl のバージョンを確認します。

command not found のようなエラーが出た場合は配置した場所にパスが通っているか、

想定の場所にコピーできているかを確認してください。

OCI

バックエンドの設定ファイルを作成

コンフィグファイルの作成を行います。

ここで指定する dataLIF に指定する ipsvm には存在しないものを指定すると以降で行うデプロイに失敗します。

OCI

設定パラメータについては以下の URL を参照ください。

設定に必要なパラメータについて抜粋しました。

パラメータ 説明 デフォルト値 version 常に 1 storageDriverName “ontap-nas”, “ontap-nas-economy”, “ontap-san” のいずれか managementLIF クラスタ管理または SVM 管理の IP アドレス “10.0.0.1” dataLIF データ通信用の LIF IP svm 使用する SVM username cluster または SVM へ接続するユーザ名 password cluster または SVMへ接続するユーザ名のパスワード storagePrefix ボリュームを作成する際にボリューム名に付与するもの “trident”

接続の確認

OpenShift クラスタに admin として接続できることを確認。

OCI

アプリケーションをデプロイするネームスペースに trident をインストール

大きく backend の json ファイルを setup ディレクトリで確認

OCI

namespace を作成し、trident をデプロイします。

OCI

trident のインストーラーを起動します。

OCI

trident の起動を確認します。
trident のポッドが起動するには数分時間がかかります。
oc get pods の結果が以下の容易なればデプロイ完了です。

OCI

trident-xxxxx-xxxx というコンテナが起動していればデプロイ成功です。

よく起きる事象

trident-ephemeral で止まる場合には backend.json が間違っているので IPSVM が正しいことを確認

OCI

動作確認

trident へバックエンドストレージを追加
バックエンドの追加をします。

OCI

ログの確認を行います, “Added a new backend” が表示され、その後エラーが発生していなければ完了です。

OCI

追加した内容を確認します。

OCI

StorageClass の定義

StorageClass の定義ファイルを作成します。

今回は trident-installer に入っているサンプルを使用し、Storage Class を作成します。

OCI

つ目の Storage Class の確認を行います。

OCI

apiVersion: storage.k8s.io/v1 がすでに使用可能ですが今回は、サンプルに包含されているものをそのまま使います。

Storage Class を作成します。

OCI

作成後の確認

OCI

PVC の作成

StorageClass と同様に trident-installer に入っているサンプルで PVC を作成します。

OCI

サンプルアプリケーションのデプロイ

ここではサンプルとしてウェブサーバをデプロイし、動的にストレージをプロビジョニングします。

OCI

ここではサンプルPod がデプロイされたことを確認。

OCI

Pod からストレージがマウントされていることを確認します。

OCI

必要であれば削除処理実施

Pod を削除します。

OCI

PVC を削除します。

OCI

trident のアンインストールはインストーラディレクトリに存在する
uninstall_trident.sh を実行することで削除します。

OCI

上記の削除処理をしてもストレージに永続化されたデータは残った状態となります。

Technical resources

本ドキュメントを作成する上で参考にした情報源は以下の通りです。

2017 11 12

Go further, faster
お問い合わせ   |   購入方法   |   フィードバック   |   採用情報  |   登録   |   プライバシーポリシー   |   © 2017 NetApp