未解決
1 Rookie
•
65 メッセージ
1
64
コンテナ事始め(6) PowerScaleをOpenShiftのPersistent Volumeに利用する
前回の投稿「コンテナ事始め(5) OpenShiftクラスタのシャットダウン方法」はこちらから
こんにちは。デル・テクノロジーズでクラウド、コンテナ関連を担当している平原です。PowerStore環境のネットワーク周りの検討が必要になったので、まずは自宅にPowerScaleを導入してOpenShiftから利用してみました。環境はコミュニティの皆さんのほうが詳しいと思いますが、OneFS SimulatorをESXにデプロイしています。
OpenShiftからデルストレージを使うには?
コンテナ事始め(3)の回でも触れましたが、OpenShift/K8sから外部ストレージ上にPersistent Volumeを利用するにはCSIドライバというものが必要になります。今回のvSphere環境へのOpenShiftデプロイではvSphere CSIドライバは事前に組み込まれていましたが、当社および他社の外部ストレージを利用するにはCSIドライバを別途インストールする必要があります。
なお、当社CSIドライバ (PowerScaleの場合) は下記サイトにあり
https://github.com/dell/csi-powerscale
また、インストール手順を含むドキュメントはこちらになります。
https://dell.github.io/csm-docs/docs/
では、一連の手順を紹介していきましょう。
OneFS Simulatorのデプロイ
- この手順は皆さんのほうが詳しいので割愛します。下記要件に基づき、OneFS Simulator 9.3を選択しました。
https://dell.github.io/csm-docs/docs/prerequisites/ - デプロイ後、NFSの有効化とPersitent Volumeが作成されるディレクトリを作成しました。なおディレクトリは “/ifs/data/csi” でなくても構いませんが、サンプルのyamlファイルを出来るだけ編集したくなかったので、デフォルト値を採用しています。
PowerScale CSIドライバのインストール
- ドライバのインストール手順は下記手順に従います。インストール形式はいくつか選択ができ、K8sの世界で一般的なOperatorやHELMを使ってのインストールもサポートされています。今回はOperatorによるインストールを選択しました。ちなみにOperatorとは、アプリケーションやミドルウェアの導入、ライフサイクル管理や運用タスクを自動化し、一貫性を確保するための手段を提供するものです。これによって誰が作業しても同じ運用結果を得ることが可能になります。
https://dell.github.io/csm-docs/docs/deployment/csmoperator/
下記コマンドでCSM Operatorを git clone します
git clone -b v1.5.0 https://github.com/dell/csm-operator.git
ディレクトリ csm-operator に移動し、下記コマンドでインストーラを実行します
bash scripts/install.sh
- 下記コマンドでCSM Operatorのインストールを確認します。ネームスペース dell-csm-operator に作成されています
kubectl get pods -n dell-csm-operator 下記ドキュメントに従って、PowerScale CSIドライバをインストールします
https://dell.github.io/csm-docs/docs/deployment/csmoperator/drivers/powerscale/
下記コマンドでネームスペース isilon を作成します
kubectl create namespace isilon
- ドキュメント中にあるyamlをコピーしてきて、secret.yaml ファイルを作成します。コピーしてきた中身のうち、clusterName: “cluster2” 以降のエントリは削除してください。そして黄色で囲っている部分を環境に合わせて編集します
- 下記コマンドで secret.yaml を実行します。OpenShift上に isilon-creds という名前のシークレットが作成されます
kubectl create secret generic isilon-creds -n isilon --from-file=config=secret.yaml
- 先の手順と同じようにドキュメント中にあるyamlをコピーしてきて、empty_secret.yaml ファイルを作成します。
- 下記コマンドで empty_secret.yaml を実行します。OpenShift上に isilon-certs-0 という名前のシークレットが作成されます
kubectl create -f empty-secret.yaml - ディレクトリ csm-operator/samples 配下にある CRD (Custom Resource Definition) ファイルを現在のディレクトリにコピーします。v2.8.0~v2.10.0の導入したいドライバのバージョンに合わせて選択しますが、今回は最新版の storage_csm_powerscale_v2100.yaml をコピーします
- コピーしてきたCRDファイルを編集します。X_CSI_ISI_AUTH_TYPE を検索し、value を ”0” から ”1” に変更します。このあたりはPowerScaleのスペシャリストの方のほうが詳しいと思いますが、OneFS 9.2以降、ベーシック認証からセッションベース認証にデフォルトが変更されたことによるものです
- 下記コマンドで、編集した storage_csm_powerscale_v2100.yaml を実行します
kubectl create -f storage_csm_powerscale_v2100.yaml
また、下記コマンドでインストール状況を確認します
kubectl get csm --all-namespaces
kubectl get csidriver - OpenShiftコンソールからも確認できます。OpenShiftクラスタのすべてのノードに関連するPodがデプロイされ、正常にインストールされた場合は Running ステートになっています
ストレージクラスの作成
CSIドライバのインストールが完了しても、まだOpenShiftからPowerScaleを利用できることができません。ストレージクラスを作成して、そこにPowerScale CSIドライバを紐づける必要があります
OpenShiftコンソールのAdministoratorパースペクティブでStorage-StorageClassesを選択します。画面右上の「Create StorageClass」ボタンをクリックします。下記パラメータを入力、選択を終えたら、作成します
名前: isilon-sc
回収ポリシー: 削除
ボリュームバインディングモード: 即時
プロビジョナー: csi-isilon.dellemc.com
追加パラメータ
AccessZone: System
IsiPath: /ifs/data/csi
RootClientEnabled: false
動作確認①
実際にPowerScaleにPersistent Volumeが作成できるか確認します
- 適当にプロジェクト (ここではkazuh) を作成し、移動します
- Persistent Volume Claimを作成します。Bound状態になって作成されたら、詳細画面から PersitentVolumes の情報を確認し、OneFS側でもこれと同じ名前のディレクトリが作成されていることを確認します
動作確認②
ボリューム作成だけではつまらないので、最小のCentOS環境をデプロイし、この環境に作成したPVCをアタッチしてみます
- OpenShiftコンソールのAdministoratorパースペクティブでWorkloads-Deploymentsを選択します。画面右上の「デプロイメントの作成」ボタンをクリックします。「YAMLビュー」に切り替え、下記ファイルをコピー、作成します
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: kazuh
name: pv-test
annotations: {}
spec:
selector:
matchLabels:
app: centos
replicas: 2
template:
metadata:
labels:
app: centos
spec:
containers:
- name: centos
image: centos:latest
command: ["/bin/sleep", "3600"]
- しばらくすると2つのCentOSのPodが起動します。起動したら アクション-ストレージ追加 を選択します
- デプロイされたCentOSに作成したPVCを選択してアタッチします
- PVCがマウントされた新しいPodが起動してきます
- 起動したPodのリンクをクリックし、「ターミナル」タブから書き込み操作をしてみます。指定したマウントポイントに移動し、適当にファイルを作成してみてください。そして、OneFS側にも作成されたことを確認します
- もう一方のPodからもターミナルで入って、マウントポイントに移動します。このPVCはRWXなので、前のステップで作成したファイルが確認できます
いかがだったでしょうか?このようにデルストレージをOpenShift/K8sのPersistent Volume用に活用することで、コンテナの世界にもエンタープライズクラスのストレージ性能や可用性を持ち込み、コンテナアプリケーションもこれまでの仮想化アプリケーション同様に安心して使っていただくことが可能になります。では、また次のネタが見つかれば投稿します。