0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenShift VirtualizationでTrident + ONTAP利用②【OpenShifを構築し、iSCSI Storage用の作成とTrident の導入】

0
Last updated at Posted at 2026-06-16

はじめに

本記事では、前回の実施したOpenshiftの構築後に、Storage通信用のNIC設定を行います。
また、ONTAPでiSCSI Storage基盤を作成し、SVMの管理LIFを含めてStorage用のNetworkのみで利用する手順について記載します。

OpenShift VirtualizationとNetApp Trident利用時におけるベストプラクティスについては、
NetAppのBlogの記載が参考になります。

本記事では利用するONTAPが9.18.1となる為、作成したPersistent Volume(PV)に自動的にランサムウェア対策機能が有効化されますが、ランサムウェア対策機能に関する内容では無いのであえて無効化して進めます。

image.png

何をしたい?できる?

  • NMState Operator設定とStorage通信用のNIC設定
  • ONTAPでOpenShiftのPersistent Volume(PV)用のSVM作成
  • NetApp Tridentの導入

TridentとSVM管理LIFとの通信について

NetApp Tridentを使用してONTAPストレージを接続する際、ストレージ管理と実際のデータ入出力は分離した形でNetwork設計する事が推奨されますが、本記事ではあえてTrident ControllerのからHost Networkを利用できるような形で設定します。

NetApp Trident 25.10以降で、Trident OrchestratorまたはHelm Chartのパラメーター設定だけで宣言的にHost Networkを有効化する事ができるようになってます。
Trident Release Noteの、
Added an option for Trident controller to use host networking via helm, operator, and tridentctl (Issue #858).
の記載の部分になります。

Storage Driverの選択

使用されるプロトコルとStorage上でのVolumeのプロビジョニング方法によって区別されるものになりますが、明確な要望やStorage側の各種上限(Volume数やSize)に抵触しない限りは、”ontap-nas”または”ontap-san”を選択する事になるかと思います。

詳細はマニュアルを参照頂ければと思いますが、本記事で使用するSANのDriverでは以下の機能の違いがあります。

image.png

記事における環境情報

本記事では、以下の環境で実施した内容となります。
OSやモジュールは以下の構成としています。

  • ONTAP 9.18.1
  • NetApp Trident 26.02.1
  • Windows Server 2025 Hyper-V環境
  • Red Hat Enterprise Linux 9.8
  • OpenShift 4.21.17

環境のイメージとしては以下の通りです。
image.png

設定手順

1. OpenShiftの各Nodeへ追加のネットワーク設定

1-1. 仮想マシンへNIC追加

OpenShift環境の5 Node分に対し仮想マシンの設定でVLAN 21のNetworkに繋がるネットワークアダプターを追加します。
「仮想LANを有効にする」のチェックボックスをオンにしてVLAN IDを設定すると、仮想マシンが送出するイーサネットフレームに指定したVLAN IDを記述したVLANタグが付与されます。
つまり、仮想マシンのLinux OS上ではvlan設定が不要という事です。

qiita-square

本記事ではuser01で操作しており、OpenShift Install時にuser01の公開鍵を登録してますので、踏み台サーバからSSH接続を利用して確認します。

# SSHで公開鍵を使って接続
> ssh -i /home/user01/.ssh/id_rsa core@control-01.ocp200.example.org
Red Hat Enterprise Linux CoreOS 9.6.20260520-0
  Part of OpenShift 4.21, RHCOS is a Kubernetes-native operating system
  managed by the Machine Config Operator (`clusteroperator/machine-config`).
(中略)


# 追加NICの確認
>  ip a s eth1
33: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:d7:09:33 brd ff:ff:ff:ff:ff:ff

1-2. NMState Operatorインストール及びNMStateの作成

OpenShiftクラスター上で ノードのネットワーク設定を管理するためのオペレーターであるNMStateの導入を実施します。

OpenShiftのGUI画面にアクセスし、左側の[エコシステム]から[ソフトウェアカタログ]をクリックします。

qiita-square

表示された画面でNMStateと入力し、表示される[Kubernetes NMState Operator]をクリックします。

qiita-square

表示された画面で[インストール]をクリックします。
qiita-square

表示された画面で値を変更することなく[インストール]をクリックします。
qiita-square

peratorインストールが完了後、[Operatorの表示]をクリックします。

qiita-square

[NMState]タブをクリックし、表示された画面で[NMStateの作成]をクリックします。

qiita-square

NMState の作成では、値を変更せずに、画面下方の[作成]をクリックします。
qiita-square

管理画面にログインし直すと、画面左側の[ネットワーク]の項目が増えている点が確認できます。
qiita-square

1-3. NodeNetworkConfigurationPolicy (NNCP) の適用

NMCPとはクラスターを構成する各ノードのネットワーク設定を定義するカスタムリソースで、ブリッジ接続やVLAN設定、NICのチーミング、Nodeへ固定IPの付与などを行う際に使用します。

IP等の環境情報は以下の通りに設定します。

名前 IP 役割
control-01.ocp200.example.org 172.16.21.45 OpenShift Control Node
control-02.ocp200.example.org 172.16.21.46 OpenShift Control Node
control-03.ocp200.example.org 172.16.21.47 OpenShift Control Node
compute-01.ocp200.example.org 172.16.21.48 OpenShift Compute Node
compute-01.ocp200.example.org 172.16.21.49 OpenShift Compute Node

本記事の環境では、yamlファイルを作成し、踏み台サーバから設定を実施します。

# 追加NICにIPを付与しているNodeNetworkConfigurationPolicyを作成
> cat nncp-storage-control-01.yaml
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: storage-net
spec:
  nodeSelector:
    kubernetes.io/hostname: control-01.ocp200.example.org
  desiredState:
    interfaces:
      - name: eth1
        type: ethernet
        state: up
        ipv4:
          enabled: true
          address:
            - ip: 172.16.21.45
              prefix-length: 24


# nodeSelectorとaddressを変更したものを5 Node分用意
> ls |grep nncp
nncp-storage-compute-01.yaml
nncp-storage-compute-02.yaml
nncp-storage-control-01.yaml
nncp-storage-control-02.yaml
nncp-storage-control-03.yaml

作成したPolicyを適用し、nncpがocコマンドで表示される事を確認します。

# 適用前は何も表示されない事の確認
> oc get nncp
No resources found

> oc get nnce
No resources found


# Policyを適用
>  oc apply -f nncp-storage.yaml
nodenetworkconfigurationpolicy.nmstate.io/storage-net created


# リソースが表示される事の確認
>  oc get nncp
NAME               STATUS      REASON
storage-compute1   Available   SuccessfullyConfigured
storage-compute2   Available   SuccessfullyConfigured
storage-control1   Available   SuccessfullyConfigured
storage-control2   Available   SuccessfullyConfigured
storage-control3   Available   SuccessfullyConfigured

> oc get nnce
NAME                                        STATUS      STATUS AGE   REASON
NAME                                             STATUS      STATUS AGE   REASON
compute-01.ocp200.example.org.storage-compute1   Available   2m8s         SuccessfullyConfigured
compute-02.ocp200.example.org.storage-compute2   Available   2m4s         SuccessfullyConfigured
control-01.ocp200.example.org.storage-control1   Available   2m37s        SuccessfullyConfigured
control-02.ocp200.example.org.storage-control2   Available   2m6s         SuccessfullyConfigured
control-03.ocp200.example.org.storage-control3   Available   64s          SuccessfullyConfigured


# OpenShiftのNodeへpingを飛ばして疎通確認
> ping -c 2 172.16.21.45
PING 172.16.21.45 (172.16.21.45) 56(84) bytes of data.
64 バイト応答 送信元 172.16.21.45: icmp_seq=1 ttl=64 時間=0.365ミリ秒
64 バイト応答 送信元 172.16.21.45: icmp_seq=2 ttl=64 時間=0.378ミリ秒

--- 172.16.21.45 ping 統計 ---
送信パケット数 2, 受信パケット数 2, 0% packet loss, time 1029ms
rtt min/avg/max/mdev = 0.365/0.371/0.378/0.006 ms

2. ONTAPへiSCSI用Storageの設定

Linux用のiscsi設定はこちらの記事にも記載しています。

2-1. iSCSI用のSVM作成

まずは、SVMを作成します。
iSCSI用のSVM作成手順例については、過去の記事を参照頂ければと思います。

# SVMの作成
> vserver create -vserver iscsi100 -subtype default
[Job 1501] Job succeeded:
Vserver creation completed.


# Volume作成時に利用するAggregateの定義
> vserver modify -vserver iscsi100 -aggr-list aggr1_node1,aggr1_node2


# ONTAP9.18.1からはランサム対策機能がデフォルトで有効となるので、ここでは無効化
> security anti-ransomware auto-enable modify -new-volume-auto-enable false

2-2. iSCSI用のSVMへLIFの作成

管理用とデータ通信用(ONTAP Node毎に1つ)のLIFを作成します。
以下の設定では、SVM管理用とデータ通信LIF用が、OpenShift Nodeで追加したNICに設定したNetworkセグメント(172.16.21.0/24)と同じになりますので、TridentOrchestratorの作成の際にhostNetwork: trueの設定を記載しないと、TridentのControllerからのAPI疎通に失敗します。

# LIFの作成
> network interface create -vserver iscsi100 -lif manage -service-policy default-management -address 172.16.21.60 -netmask 255.255.255.0 -home-node PS-A400-01 -home-port a0a-21

> network interface create -vserver iscsi100 -lif data01 -service-policy default-data-iscsi -address 172.16.21.61 -netmask 255.255.255.0 -home-node PS-A400-01 -home-port a0a-21

> network interface create -vserver iscsi100 -lif data02 -service-policy default-data-iscsi -address 172.16.21.62 -netmask 255.255.255.0 -home-node PS-A400-02 -home-port a0a-21


# 設定情報の確認
> network interface show -vserver iscsi100
            Logical    Status     Network            Current       Current Is
Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
----------- ---------- ---------- ------------------ ------------- ------- ----
iscsi100
            data01       up/up    172.16.21.61/24    PS-A400-01    a0a-21  true
            data02       up/up    172.16.21.62/24    PS-A400-02    a0a-21  true
            manage       up/up    172.16.21.60/24    PS-A400-01    a0a-21  true
3 entries were displayed.

2-3. iSCSIのSVMへの有効化

NFS設定を有効化し、SVMのroot Volumeへアクセス設定を実施します。

# SVMへiscsi有効化
> iscsi create -vserver iscsi100

# 状態の確認
> iscsi show -vserver iscsi100

                 Vserver: iscsi100
             Target Name: iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16
            Target Alias: iscsi100
   Administrative Status: up                           

2-4. APIアクセス用のユーザ用意

本記事ではONTAP Cluster全体へアクセスでは無く、個々のSVMにAPIを投げる形で作成したいので作成したSVMでAPIアクセス用のユーザ作成が必要になります。
ここでは楽をする為に、SVM作成時に自動で作成されるvsadminユーザを利用します。

# ユーザへのPassword設定
> security login password -vserver iscsi100 -username vsadmin

Enter a new password:
Enter it again:


# UserのUnlock
> security login unlock  -vserver iscsi100 -username vsadmin


# User情報の確認
> security login show -vserver iscsi100

Vserver: iscsi100
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
vsadmin        http        password      vsadmin          no     none
vsadmin        ontapi      password      vsadmin          no     none
vsadmin        ssh         password      vsadmin          no     none
3 entries were displayed.

3. Compute NodeへのiSCSI設定

OpenShiftのCompute Node上でiSCSIとMulthPathの設定を行います。

3-1. iscsidの設定

# Compute NodeへSSH接続
> ssh -i /home/user01/.ssh/id_rsa core@compute-01.ocp200.example.org

# iSCSIの有効化とサービス開始
> sudo systemctl enable --now iscsid
Created symlink /etc/systemd/system/multi-user.target.wants/iscsid.service → /usr/lib/systemd/system/iscsid.service.


> sudo systemctl start iscsid


# iSCSIの状態確認
> sudo systemctl status iscsid
● iscsid.service - Open-iSCSI
     Loaded: loaded (/usr/lib/systemd/system/iscsid.service; enabled; preset: disabled)
     Active: active (running) since Mon 2026-06-08 09:33:19 UTC; 34s ago
TriggeredBy: ● iscsid.socket
       Docs: man:iscsid(8)
             man:iscsiuio(8)
             man:iscsiadm(8)
   Main PID: 1137490 (iscsid)
     Status: "Ready to process requests"
      Tasks: 1 (limit: 153069)
     Memory: 3.8M
        CPU: 17ms
     CGroup: /system.slice/iscsid.service
             mq1137490 /usr/sbin/iscsid -f

Jun 08 09:33:19 compute-01.ocp200.example.org systemd[1]: Starting Open-iSCSI...
Jun 08 09:33:19 compute-01.ocp200.example.org systemd[1]: Started Open-iSCSI.

3-2. ONTAP向けのiSCSIターゲットの探索とLoginの実施

Compute NodeでONTAPのSVMに設定したiSCSI用LIFのIPアドレスを指定して探索とログインを実施します。

# discoveryの実施
> sudo iscsiadm -m discovery -t st -p 172.16.21.61:3260

172.16.21.61:3260,1037 iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16
172.16.21.62:3260,1038 iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16
# loginの実施
> sudo iscsiadm -m node -T iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16 -l

Logging in to [iface: default, target: iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16, portal: 172.16.21.61,3260]
Logging in to [iface: default, target: iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16, portal: 172.16.21.62,3260]
Login to [iface: default, target: iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16, portal: 172.16.21.61,3260] successful.
Login to [iface: default, target: iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16, portal: 172.16.21.62,3260] successful.


# iSCSIセッションの確認
> sudo iscsiadm -m session
tcp: [1] 172.16.21.61:3260,1037 iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16 (non-flash)
tcp: [2] 172.16.21.62:3260,1038 iqn.1992-08.com.netapp:sn.207a3c86631a11f1b9abd039ead56cfd:vs.16 (non-flash)

3-3. Multipathの設定

# multipathの設定ファイルを編集
> sudo cat /etc/multipath.conf
defaults {
        find_multipaths no
}

blacklist {
   device {
      vendor    .*
      product   .*
   }
}

blacklist_exceptions {
    device {
        vendor  NETAPP
        product LUN
        }
}

Multipathの開始を行い、状態を確認します。

# Multipathの開始
> sudo systemctl enable --now multipathd


# 状態の確認
> sudo systemctl status multipathd
● multipathd.service - Device-Mapper Multipath Device Controller
     Loaded: loaded (/usr/lib/systemd/system/multipathd.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-06-08 09:44:05 UTC; 17s ago
TriggeredBy: ○ multipathd.socket
    Process: 1149785 ExecStartPre=/sbin/modprobe -a scsi_dh_alua scsi_dh_emc scsi_dh_rdac dm-multipath (code=exited, s>
    Process: 1149803 ExecStartPre=/sbin/multipath -A (code=exited, status=0/SUCCESS)
   Main PID: 1149808 (multipathd)
     Status: "up"
      Tasks: 7
     Memory: 19.0M
        CPU: 53ms
     CGroup: /system.slice/multipathd.service
             mq1149808 /sbin/multipathd -d -s

Jun 08 09:44:05 compute-01.ocp200.example.org systemd[1]: Starting Device-Mapper Multipath Device Controller...
Jun 08 09:44:05 compute-01.ocp200.example.org multipathd[1149808]: --------start up--------
Jun 08 09:44:05 compute-01.ocp200.example.org multipathd[1149808]: read /etc/multipath.conf
Jun 08 09:44:05 compute-01.ocp200.example.org multipathd[1149808]: path checkers start up
Jun 08 09:44:05 compute-01.ocp200.example.org systemd[1]: Started Device-Mapper Multipath Device Controller.

4. NetApp Tridentの導入・設定

4-1. Tridentをインストール

OpenShiftのGUI画面にアクセスし、左側の[エコシステム]から[ソフトウェアカタログ]をクリック後に表示された画面でTridentと入力し、表示される[NetApp Trident]をクリックします。
(Certifiedの方を利用)
qiita-square

表示された画面で[インストール]をクリックします。
qiita-square

表示された画面の下方にある[インストール]をクリックします。
qiita-square

Install完了後に、[Operatorの表示]をクリックします。

qiita-square

表示された画面で[Trident Orchestrator]タブから[TridentOrchestratorの作成]をクリックします。
qiita-square

本記事はiSCSI環境を使用するので、表示された画面の[YAMLビュー]において、nodePrepへiscsiの追記を実施します。また、SVMの管理LIFへOpenShiftのNodeに設定した追加NICから通信させたいのでhostNetwork: trueを追記し、画面下方の[作成]をクリックします。

qiita-square

Installが完了した事を確認します。
qiita-square

踏み台サーバからTrident Install後の状態について確認します。

# Trident Install後の確認
> oc get pod -n trident
NAME                                 READY   STATUS    RESTARTS   AGE
trident-controller-c8bd97f44-wxqhc   6/6     Running   0          2m26s
trident-node-linux-4l4qv             2/2     Running   0          2m26s
trident-node-linux-bptjr             2/2     Running   0          2m26s
trident-node-linux-fx48k             2/2     Running   0          2m26s
trident-node-linux-n246j             2/2     Running   0          2m26s
trident-node-linux-q55mz             2/2     Running   0          2m26s

4-2. SVM資格情報の設定

踏み台サーバから、Tridentが上記の[2-2. iSCSI用のSVMへLIFの作成]の管理LIFへ接続する際に使用する認証資格情報を登録します。

# マニフェスト
> cat trident-svm-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: ontap-svm-admin
  namespace: trident
type: Opaque
stringData:
  username: vsadmin
  password: XXXXXXX



# 作成したファイルの適用
> oc apply -f trident-svm-secret.yaml
secret/ontap-svm-admin created


> oc get secret -n trident
NAME                      TYPE     DATA   AGE
ontap-svm-admin           Opaque   2      6s
trident-csi               Opaque   6      6m13s
trident-encryption-keys   Opaque   1      6m13s

4-3. Trident Backendの設定

Backendの設定は、ONTAP等のStorageとTridentを接続するための定義になり、Storage管理IP、認証情報、SVM、使用するドライバなどを指定し、OpenShiftからVolumeを動的に作成できるようにします。
本記事では後述するStorageClassをSVM毎に分けるような形で設定するので、
labels:{svm:SVM名}の記載を実施
します。
指定可能な内容やサンプルはマニュアルを参照してください。

qiita-square

踏み台サーバから操作を実施します。

# マニフェスト
> cat backend-san1.yaml
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-ontap-san
  namespace: trident
spec:
  version: 1
  backendName: ontap-san-backend
  storageDriverName: ontap-san
  managementLIF: 172.16.21.60
  svm: iscsi100
  labels:
    svm: iscsi100
  credentials:
    name: ontap-svm-admin
  defaults:
    spaceReserve: none


# 作成したファイルの適用
> oc apply -f backend-san1.yaml -n trident
tridentbackendconfig.trident.netapp.io/backend-tbc-ontap-san created


# 作成後の確認
> oc get tridentbackend -n trident
NAME        BACKEND             BACKEND UUID
tbe-h9qvw   ontap-san-backend   e5583e1d-4e1f-4121-b948-b15ef117c396

> oc get tbc -n trident
NAME                    BACKEND NAME        BACKEND UUID                           PHASE   STATUS
backend-tbc-ontap-san   ontap-san-backend   e5583e1d-4e1f-4121-b948-b15ef117c396   Bound   Success

4-4. StorageClassの設定

StorageClassは、動的プロビジョニングで使用するStorageの種類やポリシーを定義する設定で、ユーザからの要求と上記で設定したBackendを関連させるためにStorageClassを設定します。
指定可能な内容はマニュアルを参照してください。

qiita-square

踏み台サーバから操作を実施します。

# マニフェスト
> cat storageclass-san1.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ontap-san
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  selector: svm=iscsi100
  fsType: "ext4"
allowVolumeExpansion: true


# 作成したファイルの適用
> oc apply -f storageclass-san1.yaml
storageclass.storage.k8s.io/ontap-san created


# 作成後の確認
> oc get storageclass
NAME        PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
ontap-san   csi.trident.netapp.io   Delete          Immediate           true                   6s

4-5. VolumeSnapshotClassの設定

PVのSnapshotを管理するためのオブジェクトになりますが、CSIドライバーを複数利用する環境ではないのでOpenShiftクラスター1つだけ作成します。
VolumeSnapshotを作成する際には、VolumeSnapshotClassの名前を指定が必要となります。

qiita-square

踏み台サーバから操作を実施します。

# マニフェスト
> cat volume-snap-class1.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: csi-snapclass
driver: csi.trident.netapp.io
deletionPolicy: Delete


# 作成したファイルの適用
> oc apply -f volume-snap-class1.yaml
volumesnapshotclass.snapshot.storage.k8s.io/csi-snapclass created


# 作成後の確認
> oc get vsclass
NAME            DRIVER                  DELETIONPOLICY   AGE
csi-snapclass   csi.trident.netapp.io   Delete           45s

4-6. Persistent Volume(PV)の作成

PersistentVolumeClaim(PVC)は永続化Storageに対するユーザの要求・リクエストで、容量、アクセスモード(書き込み権限の有無など)、StorageClassを定義します。
PVCで定義されたすべての要件に一致すると、PVCはその一致したPVにバインドされ、PVからStorageを利用できるようになります。

PersistentVolumeは、管理者/TridentによりプロビジョニングされたStorageリソースでクラスタレベルで管理されます。
(クラスタのどのNameSpaceからも利用できる)
BackendのStorageとマッピングされ、Podが削除されてもPVは削除されない形になります。
(Podのライフサイクルと関係なし)

qiita-square

踏み台サーバから後述で作成するPod用やPersistentVolumeClaim用のNamespaceを作成します。

> oc create namespace testspace01
namespace/testspace01 created

# 作成後の確認
> oc get ns testspace01
NAME          STATUS   AGE
testspace01   Active   18s

Persistent Volumeの払い出しを実施します。

# PersistentVolumeClaim マニフェスト
> cat pvc-san.yaml
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-san
  namespace: testspace01
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: ontap-san


# マニフェストの適用
> oc apply -f pvc-san.yaml
persistentvolumeclaim/pvc-san created


# 作成後の確認
> oc get pvc -n testspace01
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
pvc-san   Bound    pvc-28da9a22-e9b1-4a90-b2ab-35afd1500db1   1Gi        RWO            ontap-san      <unset>                 6s


> oc get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
pvc-28da9a22-e9b1-4a90-b2ab-35afd1500db1   1Gi        RWO            Delete           Bound    testspace01/pvc-san   ontap-san      <unset>                          17s

ONTAP側から作成されたVolumeを確認してみます。
Trident Backendに記載した通り、VolumeとLUNがシンプロビジョニング状態で作成されているのが確認できます。

> vol show -vserver iscsi100 -fields size,space-guarantee
vserver  volume        size space-guarantee
-------- ------------- ---- ---------------
iscsi100 iscsi100_root 1GB  volume
iscsi100 trident_pvc_28da9a22_e9b1_4a90_b2ab_35afd1500db1 1.10GB none
2 entries were displayed.


> lun show -vserver iscsi100 -instance

                  Vserver Name: iscsi100
                      LUN Path: /vol/trident_pvc_28da9a22_e9b1_4a90_b2ab_35afd1500db1/lun0
                   Volume Name: trident_pvc_28da9a22_e9b1_4a90_b2ab_35afd1500db1
                    Qtree Name: ""
                      LUN Name: lun0
                      LUN Size: 1GB
                       OS Type: linux
             Space Reservation: disabled
             (中略)

4-7. PVへのSnapshot作成

PVCを指定してSnapshotの作成を実施します。
qiita-square

踏み台サーバから操作を実施します。

# マニフェスト
> cat pvc-san-snap1.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: pvc-san-snap
  namespace: testspace01
spec:
  volumeSnapshotClassName: csi-snapclass
  source:
    persistentVolumeClaimName: pvc-san


# 作成したファイルの適用
> oc apply -f pvc-san-snap1.yaml
volumesnapshot.snapshot.storage.k8s.io/pvc-san-snap created


# 作成後の確認
> oc get vsclass
NAME            DRIVER                  DELETIONPOLICY   AGE
csi-snapclass   csi.trident.netapp.io   Delete           17m


> oc get volumesnapshot -n testspace01
NAME           READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS   SNAPSHOTCONTENT                                    CREATIONTIME   AGE
pvc-san-snap   true         pvc-san                             1Gi           csi-snapclass   snapcontent-48721a73-aad8-4103-bf31-7d27428b0275   12s            13s

ONTAP側から作成されたSnapshotを確認してみます。

> volume snapshot show -vserver iscsi100 -volume trident*
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
iscsi100 trident_pvc_28da9a22_e9b1_4a90_b2ab_35afd1500db1
                  snapshot-48721a73-aad8-4103-bf31-7d27428b0275 164KB 0%  44%

なお、NAS用の設定を実施して作成したPVCでも、同じVolumeSnapshotClassを指定してSnapshotの作成ができます。

# 環境情報の確認
> oc get tbc -n trident
NAME                    BACKEND NAME        BACKEND UUID                           PHASE   STATUS
backend-tbc-ontap-nas   ontap-nas-backend   310536fc-f58e-4e1f-9dfa-46617b88b69d   Bound   Success
backend-tbc-ontap-san   ontap-san-backend   e5583e1d-4e1f-4121-b948-b15ef117c396   Bound   Success

> oc get storageclass
NAME        PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
ontap-nas   csi.trident.netapp.io   Delete          Immediate           true                   30h
ontap-san   csi.trident.netapp.io   Delete          Immediate           true                   2d2h

> oc get pvc  -n testspace01
NAME        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
pvc-nas01   Bound    pvc-c91d83c3-f13c-47ef-9288-4f269d6cd704   3Gi        RWX            ontap-nas      <unset>                 10s


# Snapshotの作成
> cat pvc-nas-snap1.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: pvc-nas-snap01
  namespace: testspace01
spec:
  volumeSnapshotClassName: csi-snapclass
  source:
    persistentVolumeClaimName: pvc-nas01


> oc apply -f pvc-nas-snap1.yaml
volumesnapshot.snapshot.storage.k8s.io/pvc-nas-snap01 created


> oc get volumesnapshot -n testspace01
NAME             READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS   SNAPSHOTCONTENT                                    CREATIONTIME   AGE
pvc-nas-snap01   true         pvc-nas01                           304Ki         csi-snapclass   snapcontent-2e99b158-8e83-41af-acf1-062da29c175a   21s            22s

参考及びリンク

Demystifying Clone Strategy in Storage Profile and its relationship with Trident Storage Class

ONTAP backend drivers

Configure Red Hat OpenShift Container Platform to allow Trident Storage across a host interface

Trident Release Notes

【今から覚えるONTAPの操作】iSCSI用のSVMを作成する

Red Hat OpenShift クラスタに Trident をインストールしてストレージオブジェクトを作成する

OpenShift VirtualizationでTrident + ONTAP利用①【OpenShiftのInstall】

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?