Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

VKSクラスターへのNetApp Tridentのインストール

共同作成者 banum-netapp

NetApp Trident を動的ストレージ プロビジョニング ツールとして vSphere Kubernetes Service クラスターにインストールし、NetApp ONTAP ストレージを Kubernetes ワークロードと統合します。

開始する前に
  • ONTAPクラスターが構成され、VMware Kubernetes環境に接続されていることを確認してください。

  • ワークロードでiSCSIまたはNVMeプロトコルをストレージに使用する場合は、VKSクラスタにiSCSIまたはNVMeツールがインストールされていることを確認してください。

  • 必ず `kubectl`を、kubeconfigファイルを使用してVKSクラスターに接続できるマシンにインストールしてください。

    kubeconfig はリソース タブからダウンロードできます
手順
  1. Helm チャートを使用して Trident Operator をインストールするには、Trident ドキュメントの手順に従ってください:

    Helm インストールを実行する前に、 trident 名前空間を作成してラベルを付けてください。Trident は特権ワークロードを実行するため、 enforce=privileged ラベルが必要です。これがないと、Kubernetes ポッドセキュリティアドミッションコントローラーが Trident ポッドの起動をブロックします。

    kubectl create namespace trident
    kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged
    例を表示
    helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace trident

    デバッグログを有効にするには、以下を追加します --set tridentDebug=true

    helm install trident netapp-trident/trident-operator --version 100.2606.0 --namespace trident --set tridentDebug=true
    メモ Trident Operatorを使用して、Tridentを手動でインストールすることもできます。Tridentドキュメントの手順を確認してください:"Trident オペレーターを手動でデプロイする"
    `trident`名前空間に必要なPodセキュリティラベルが付いていることを確認してから、Tridentを手動でインストールしてください。
  2. すべての Trident ポッドがクラスター内で実行されていることを確認してください。

    例を表示
    kubectl get pods -n trident
    Tridentを設置
    メモ Trident ポッドが `PodSecurity`アドミッションエラーで起動しない場合、インストール前にポッドのセキュリティラベルが `trident`ネームスペースに適用されていない可能性があります。 `--overwrite`を使用して再適用し、ポッドが起動することを確認してください。
    kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged --overwrite

ストレージバックエンドと環境用のStorageClass設定ファイルを準備する

  1. 必要な接続の詳細とストレージパラメータを定義して、ONTAP の Trident バックエンドを設定します。

  2. Kubernetes で、NetApp ストレージバックエンドにマッピングするストレージクラスを定義します。これらのクラスは、パフォーマンス特性やレプリケーションポリシーなどのパラメータを指定します。

    ワークロードの要件に応じて、以下のプロトコルに対応する Trident バックエンドとストレージクラスを定義します:

    • NAS(ontap-nas ドライバ)

    • NAS Economy(ontap-nas-economy ドライバ)

    • iSCSI、FC、またはNVMeプロトコル用のSAN(ontap-sanドライバ)

    • iSCSI 用 SAN Economy (ontap-san-economy ドライバ)

      NAS

      TridentBackendConfigとStorageClassを作成して、ONTAP NASでNFSベースの永続ストレージ プロビジョニングを有効にします。バックエンド構成には、Kubernetes Secret に保存されている認証情報が含まれており、ONTAP SVM と管理 LIF を参照します。

      ユーザー名とパスワード認証を使用したバックエンドシークレットとバックエンド設定ファイルのサンプル( tbc-nas.yaml として保存):

      # tbc-nas.yaml
      apiVersion: v1
      kind: Secret
      metadata:
        name: tbc-nas-secret
        namespace: trident
      type: Opaque
      data:
        username: "<base64-encoded cluster admin username>"
        password: "<base64-encoded cluster admin password>"
      ---
      apiVersion: trident.netapp.io/v1
      kind: TridentBackendConfig
      metadata:
        name: tbc-nas
        namespace: trident
      spec:
        version: 1
        storageDriverName: ontap-nas
        managementLIF: <ONTAP management LIF>
        backendName: tbc-nas
        svm: <your SVM name>
        storagePrefix: <your prefix for all volume names created using this backend configuration>
        defaults:
          nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
        credentials:
          name: tbc-nas-secret

      クライアント証明書認証を使用するバックエンドシークレットとバックエンド構成ファイルのサンプル( `tbc-nas.yaml`として保存):

      # tbc-nas.yaml
      apiVersion: v1
      kind: Secret
      metadata:
        name: ontap-nas-secret
        namespace: trident
      type: Opaque
      stringData:
        clientPrivateKey: <client private key value>
      ---
      apiVersion: trident.netapp.io/v1
      kind: TridentBackendConfig
      metadata:
        name: tbc-nas
        namespace: trident
      spec:
        version: 1
        storageDriverName: ontap-nas
        managementLIF: <ONTAP management LIF>
        backendName: tbc-nas
        svm: <your SVM name>
        storagePrefix: <your prefix for all volume names created using this backend configuration>
        credentials:
          name: ontap-nas-secret
        clientCertificate: <client certificate>

      StorageClass定義( `sc-nas.yaml`として保存):

      `mountOptions`は、NFSボリュームの追加マウントオプションを指定するオプションパラメータです。 `nconnect`オプションを使用すると、単一のNFSマウントに対して複数のTCP接続を並列で確立できるため、高スループットのワークロードのパフォーマンスを向上させることができます。デフォルト値は1ですが、ONTAPシステムで許可される最大値まで増やすことができます。

ONTAPは、nconnect対応クライアント上の単一のNFSマウントに対して、最大16個の接続をサポートします。Tridentはマウントオプションを直接Kubernetesワーカーノードに渡すため、ワーカーノードのNFSクライアントとONTAPの両方でサポートされている値を選択してください。次の例では、4つの接続を使用します。

# sc-nas.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nas
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  media: "ssd"
  provisioningType: "thin"
  snapshots: "true"
allowVolumeExpansion: true
mountOptions:
- nconnect=4

qtrees を使用した NFS ベースの永続的なストレージ プロビジョニングを有効にするために、ONTAP NAS Economy ドライバー用の TridentBackendConfig と StorageClass を作成します。バックエンド構成には、Kubernetes Secret に保存された認証情報が含まれており、お客様の ONTAP SVM と管理 LIF を参照します。

ユーザー名とパスワード認証を使用したバックエンドシークレットとバックエンド設定ファイルのサンプル( tbc-nas-economy.yaml として保存):

# tbc-nas-economy.yaml
apiVersion: v1
kind: Secret
metadata:
  name: tbc-nas-economy-secret
  namespace: trident
type: Opaque
data:
  username: "<base64-encoded cluster admin username>"
  password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-nas-economy
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-nas-economy
  managementLIF: <ONTAP management LIF>
  backendName: tbc-nas-eco
  svm: <your SVM name>
  storagePrefix: <your prefix for all volume names created using this backend configuration>
  defaults:
    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
  credentials:
    name: tbc-nas-economy-secret

StorageClass定義( `sc-nas-economy.yaml`として保存):

# sc-nas-economy.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nas-economy
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas-economy"
  media: "ssd"
  provisioningType: "thin"
allowVolumeExpansion: true
mountOptions:
- nconnect=4

iSCSIを使用したONTAP SAN用のTridentBackendConfigとStorageClassを作成して、iSCSIベースのブロック ストレージ プロビジョニングを有効にします。バックエンド構成ではontap-sanドライバーを使用し、Kubernetes Secretに保存されている資格情報を含めます。省略した場合、 `sanType`パラメーターはデフォルトでiSCSIプロトコルになります。

ユーザー名とパスワード認証を使用するバックエンドシークレットとバックエンド設定ファイル(保存先: tbc-iscsi.yaml):

# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-iscsi-secret
  namespace: trident
type: Opaque
data:
  username: "<base64-encoded cluster admin username>"
  password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-iscsi
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <ONTAP management LIF>
  backendName: ontap-iscsi
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-iscsi-secret

クライアント証明書認証を使用するバックエンドシークレットとバックエンド構成ファイル( `tbc-iscsi.yaml`として保存):

# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-iscsi-secret
  namespace: trident
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-iscsi
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <ONTAP management LIF>
  backendName: ontap-iscsi
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-iscsi-secret
  clientCertificate: <client certificate>

StorageClass定義( `sc-iscsi.yaml`として保存):

# sc-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-iscsi
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true

NVMe ベースのブロック ストレージ プロビジョニングを有効にするために、ONTAP SAN with NVMe 用の TridentBackendConfig と StorageClass を作成します。バックエンド構成では、ontap-san ドライバを使用し、Kubernetes Secret に格納された認証情報が含まれます。 sanType パラメータは nvme に設定する必要があります。

ユーザー名とパスワード認証を使用するバックエンドシークレットとバックエンド設定ファイル(保存先: tbc-nvme.yaml):

# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nvme-secret
  namespace: trident
type: Opaque
data:
  username: "<base64-encoded cluster admin username>"
  password: "<base64-encoded cluster admin password>"
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-nvme
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  sanType: nvme
  managementLIF: <ONTAP management LIF>
  backendName: ontap-nvme
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-nvme-secret

クライアント証明書認証を使用するバックエンドシークレットとバックエンド構成ファイル( `tbc-nvme.yaml`として保存):

# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nvme-secret
  namespace: trident
type: Opaque
stringData:
  clientPrivateKey: <client private key>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-nvme
  namespace: trident
spec:
  version: 1
  storageDriverName: ontap-san
  sanType: nvme
  managementLIF: <ONTAP management LIF>
  backendName: ontap-nvme
  svm: <your SVM name>
  credentials:
    name: backend-tbc-ontap-nvme-secret
  clientCertificate: <client certificate>

StorageClass定義( `sc-nvme.yaml`として保存):

# sc-nvme.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nvme
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true

SANドライバおよびNASドライバでサポートされているアクセスモードとボリュームモードに関する情報、およびYAMLファイルの追加サンプルについては、Tridentのドキュメントを参照してください。

VolumeSnapshotClass 設定ファイルを作成する

VolumeSnapshotClass の定義を作成します。この構成により、永続ボリュームに対するスナップショットベースの操作が可能になります。

VolumeSnapshotClass定義( `snapshot-class.yaml`として保存):

# snapshot-class.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: trident-snapshotclass
driver: csi.trident.netapp.io
deletionPolicy: Retain

構成ファイルをクラスターに適用します

前の手順で作成した構成ファイルを `kubectl`を使用してvSphere Kubernetes Serviceクラスタに適用します。これにより、クラスターに必要なシークレット、バックエンド構成、ストレージクラス、およびスナップショットクラスが作成されます。

手順
  1. 設定したプロトコルごとにTridentBackendConfigとStorageClassファイルを適用します。

    kubectl apply -f tbc-nas.yaml -n trident
    kubectl apply -f sc-nas.yaml
    
    kubectl apply -f tbc-nas-economy.yaml -n trident
    kubectl apply -f sc-nas-economy.yaml
    
    kubectl apply -f tbc-iscsi.yaml -n trident
    kubectl apply -f sc-iscsi.yaml
    
    kubectl apply -f tbc-nvme.yaml -n trident
    kubectl apply -f sc-nvme.yaml
    
    kubectl apply -f snapshot-class.yaml
  2. リソースが正常に作成されたことを確認してください。

    TridentBackendConfigオブジェクトを確認:

    kubectl get tbc -n trident

    StorageClassオブジェクトを確認します:

    kubectl get storageclass

    VolumeSnapshotClassを確認:

    kubectl get volumesnapshotclass

デフォルトの Trident ストレージクラスとスナップショットクラスを設定する

vSphere Kubernetes Serviceクラスターで、TridentのStorageClassおよびVolumeSnapshotClassをデフォルトとして設定します。

手順
  1. デフォルトのTrident StorageClassを設定します。

    Trident-backed StorageClassをクラスターのデフォルトとして設定すると、ストレージクラスが指定されていない場合にPersistentVolumeClaimsが自動的にそれを使用します。

    デフォルトとして設定されている StorageClass が1つだけであることを確認してください。別の StorageClass がすでにデフォルトに設定されている場合は、そのアノテーションを `false`に設定してください。

    CLIから:

    kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  2. デフォルトのTrident VolumeSnapshotClassを設定します。

    Tridentを基盤とするVolumeSnapshotClassをクラスターのデフォルトとして設定することで、永続ボリュームに対してスナップショットベースの操作が有効になります。これにより、スナップショットクラスが指定されていない場合に、VolumeSnapshotsが自動的にTrident CSIドライバーを使用するようになります。

    デフォルトとして設定されている VolumeSnapshotClass が1つだけであることを確認してください。別の VolumeSnapshotClass がすでにデフォルトに設定されている場合は、その注釈を `false`に設定してください。

    CLIから:

    kubectl patch volumesnapshotclass <snapshot class name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'

ワークロードのストレージを要求するには、Kubernetes Persistent Volume Claims を使用します。

Tridentは、バックエンドのNetAppストレージから必要なボリュームを自動的にプロビジョニングします。VKSクラスタでPVCを使用してワークロードをデプロイする例については、"永続ストレージを使用してワークロードをデプロイする"を参照してください。