新しい会話を開始

未解決

1 Rookie

 • 

63 メッセージ

26

2024年4月17日 08:45

コンテナ事始め(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用に活用することで、コンテナの世界にもエンタープライズクラスのストレージ性能や可用性を持ち込み、コンテナアプリケーションもこれまでの仮想化アプリケーション同様に安心して使っていただくことが可能になります。では、また次のネタが見つかれば投稿します。

レスポンスがありません。
イベントは見つかりませんでした!

Top