VKSクラスターへのNetApp Tridentのインストール
NetApp Trident を動的ストレージ プロビジョニング ツールとして vSphere Kubernetes Service クラスターにインストールし、NetApp ONTAP ストレージを Kubernetes ワークロードと統合します。
-
ONTAPクラスターが構成され、VMware Kubernetes環境に接続されていることを確認してください。
-
ワークロードでiSCSIまたはNVMeプロトコルをストレージに使用する場合は、VKSクラスタにiSCSIまたはNVMeツールがインストールされていることを確認してください。
-
必ず `kubectl`を、kubeconfigファイルを使用してVKSクラスターに接続できるマシンにインストールしてください。
-
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=trueTrident Operatorを使用して、Tridentを手動でインストールすることもできます。Tridentドキュメントの手順を確認してください:"Trident オペレーターを手動でデプロイする" `trident`名前空間に必要なPodセキュリティラベルが付いていることを確認してから、Tridentを手動でインストールしてください。
-
すべての Trident ポッドがクラスター内で実行されていることを確認してください。
例を表示
kubectl get pods -n trident
Trident ポッドが `PodSecurity`アドミッションエラーで起動しない場合、インストール前にポッドのセキュリティラベルが `trident`ネームスペースに適用されていない可能性があります。 `--overwrite`を使用して再適用し、ポッドが起動することを確認してください。 kubectl label namespace trident pod-security.kubernetes.io/enforce=privileged --overwrite
ストレージバックエンドと環境用のStorageClass設定ファイルを準備する
-
必要な接続の詳細とストレージパラメータを定義して、ONTAP の Trident バックエンドを設定します。
-
Kubernetes で、NetApp ストレージバックエンドにマッピングするストレージクラスを定義します。これらのクラスは、パフォーマンス特性やレプリケーションポリシーなどのパラメータを指定します。
ワークロードの要件に応じて、以下のプロトコルに対応する Trident バックエンドとストレージクラスを定義します:
-
NAS(ontap-nas ドライバ)
-
NAS Economy(ontap-nas-economy ドライバ)
-
iSCSI、FC、またはNVMeプロトコル用のSAN(ontap-sanドライバ)
-
iSCSI 用 SAN Economy (ontap-san-economy ドライバ)
NASTridentBackendConfigと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クラスタに適用します。これにより、クラスターに必要なシークレット、バックエンド構成、ストレージクラス、およびスナップショットクラスが作成されます。
-
設定したプロトコルごとに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 -
リソースが正常に作成されたことを確認してください。
TridentBackendConfigオブジェクトを確認:
kubectl get tbc -n tridentStorageClassオブジェクトを確認します:
kubectl get storageclassVolumeSnapshotClassを確認:
kubectl get volumesnapshotclass
デフォルトの Trident ストレージクラスとスナップショットクラスを設定する
vSphere Kubernetes Serviceクラスターで、TridentのStorageClassおよびVolumeSnapshotClassをデフォルトとして設定します。
-
デフォルトの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"}}}' -
デフォルトの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を使用してワークロードをデプロイする例については、"永続ストレージを使用してワークロードをデプロイする"を参照してください。