Memprovisikan volume SMB Azure NetApp Files untuk Azure Kubernetes Service
Setelah mengonfigurasi Azure NetApp Files untuk Azure Kubernetes Service, Anda dapat menyediakan volume Azure NetApp Files untuk Azure Kubernetes Service.
Azure NetApp Files mendukung volume menggunakan NFS (NFSv3 atau NFSv4.1), SMB, dan protokol ganda (NFSv3 dan SMB, atau NFSv4.1 dan SMB).
- Artikel ini menjelaskan detail untuk memprovisikan volume SMB secara statis atau dinamis.
- Untuk informasi tentang penyediaan volume NFS secara statis atau dinamis, lihat Memprovisikan volume NFS Azure NetApp Files untuk Azure Kubernetes Service.
- Untuk informasi tentang penyediaan volume protokol ganda secara statis, lihat Memprovisikan volume protokol ganda Azure NetApp Files untuk Azure Kubernetes Service
Bagian ini menjelaskan cara membuat volume SMB di Azure NetApp Files dan mengekspos volume secara statis ke Kubernetes agar aplikasi dalam kontainer dapat digunakan.
Tentukan variabel untuk penggunaan nanti. Ganti myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname, dan virtnetid dengan nilai yang sesuai untuk lingkungan Anda. Jalur file harus unik dalam semua akun ANF.
RESOURCE_GROUP="myresourcegroup" LOCATION="mylocation" ANF_ACCOUNT_NAME="myaccountname" POOL_NAME="mypool1" SERVICE_LEVEL="premium" # Valid values are standard, premium, and ultra UNIQUE_FILE_PATH="myfilepath" VOLUME_SIZE_GIB="myvolsize" VOLUME_NAME="myvolname" VNET_ID="vnetId" SUBNET_ID="anfSubnetId"
Buat volume menggunakan
az netappfiles volume create
perintah .az netappfiles volume create \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --name "$VOLUME_NAME" \ --service-level $SERVICE_LEVEL \ --vnet $VNET_ID \ --subnet $SUBNET_ID \ --usage-threshold $VOLUME_SIZE_GIB \ --file-path $UNIQUE_FILE_PATH \ --protocol-types CIFS
Buat rahasia di kluster AKS Anda untuk mengakses server Direktori Aktif (AD) menggunakan
kubectl create secret
perintah . Rahasia ini akan digunakan oleh volume persisten Kubernetes untuk mengakses volume Azure NetApp Files SMB. Gunakan perintah berikut untuk membuat rahasia, menggantiUSERNAME
dengan nama pengguna Anda,PASSWORD
dengan kata sandi Anda, danDOMAIN_NAME
dengan nama domain untuk AD Anda.kubectl create secret generic smbcreds --from-literal=username=USERNAME --from-literal=password="PASSWORD" --from-literal=domain='DOMAIN_NAME'
Periksa apakah rahasia telah dibuat.
kubectl get secret NAME TYPE DATA AGE smbcreds Opaque 2 20h
Anda harus menginstal driver Antarmuka Penyimpanan Kontainer (CSI) untuk membuat SMB PersistentVolume
Kubernetes .
Instal driver SMB CSI pada kluster Anda menggunakan helm. Pastikan untuk mengatur opsi ke
windows.enabled
true
:helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.13.0 --set windows.enabled=true
Untuk metode lain menginstal Driver SMB CSI, lihat Menginstal versi master driver SMB CSI pada kluster Kubernetes.
Verifikasi bahwa
csi-smb
pod pengontrol sedang berjalan dan setiap simpul pekerja memiliki pod yang berjalan menggunakankubectl get pods
perintah :kubectl get pods -n kube-system | grep csi-smb csi-smb-controller-68df7b4758-xf2m9 3/3 Running 0 3m46s csi-smb-node-s6clj 3/3 Running 0 3m47s csi-smb-node-win-tfxvk 3/3 Running 0 3m47s
Cantumkan detail volume Anda menggunakan
az netappfiles volume show
. Ganti variabel dengan nilai yang sesuai dari akun dan lingkungan Azure NetApp Files Anda jika tidak ditentukan di langkah sebelumnya.az netappfiles volume show \ --resource-group $RESOURCE_GROUP \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --volume-name "$VOLUME_NAME -o JSON
Output berikut adalah contoh perintah di atas yang dijalankan dengan nilai nyata.
{ ... "creationToken": "myvolname", ... "mountTargets": [ { ... " "smbServerFqdn": "ANF-1be3.contoso.com", ... } ], ... }
Buat file bernama
pv-smb.yaml
dan salin dalam YAML berikut. Jika perlu, gantimyvolname
dengan dan gantiANF-1be3.contoso.com\myvolname
dengan nilai darismbServerFqdn
langkahcreationToken
sebelumnya. Pastikan untuk menyertakan rahasia kredensial AD Anda bersama dengan namespace tempat rahasia berada yang Anda buat di langkah sebelumnya.apiVersion: v1 kind: PersistentVolume metadata: name: anf-pv-smb spec: storageClassName: "" capacity: storage: 100Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain mountOptions: - dir_mode=0777 - file_mode=0777 - vers=3.0 csi: driver: smb.csi.k8s.io readOnly: false volumeHandle: myvolname # make sure it's a unique name in the cluster volumeAttributes: source: \\ANF-1be3.contoso.com\myvolname nodeStageSecretRef: name: smbcreds namespace: default
Buat volume persisten menggunakan
kubectl apply
perintah :kubectl apply -f pv-smb.yaml
Verifikasi status volume persisten Tersedia menggunakan
kubectl describe
perintah :kubectl describe pv pv-smb
Buat nama
pvc-smb.yaml
file dan salin di YAML berikut.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: anf-pvc-smb spec: accessModes: - ReadWriteMany volumeName: anf-pv-smb storageClassName: "" resources: requests: storage: 100Gi
Buat klaim volume persisten menggunakan
kubectl apply
perintah :kubectl apply -f pvc-smb.yaml
Verifikasi status klaim volume persisten terikat dengan menggunakan perintah kubectl describe:
kubectl describe pvc pvc-smb
Buat file bernama
iis-smb.yaml
dan salin dalam YAML berikut. File ini akan digunakan untuk membuat pod Layanan Informasi Internet untuk memasang volume ke jalur/inetpub/wwwroot
.apiVersion: v1 kind: Pod metadata: name: iis-pod labels: app: web spec: nodeSelector: "kubernetes.io/os": windows volumes: - name: smb persistentVolumeClaim: claimName: anf-pvc-smb containers: - name: web image: mcr.microsoft.com/windows/servercore/iis:windowsservercore resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 volumeMounts: - name: smb mountPath: "/inetpub/wwwroot" readOnly: false
Buat pod menggunakan perintah kubectl apply :
kubectl apply -f iis-smb.yaml
Verifikasi pod sedang Berjalan dan
/inetpub/wwwroot
dipasang dari SMB dengan menggunakan perintah kubectl describe :kubectl describe pod iis-pod
Output perintah menyerupai contoh berikut:
Name: iis-pod Namespace: default Priority: 0 Node: akswin000001/10.225.5.246 Start Time: Fri, 05 May 2023 09:34:41 -0400 Labels: app=web Annotations: <none> Status: Running IP: 10.225.5.248 IPs: IP: 10.225.5.248 Containers: web: Container ID: containerd://39a1659b6a2b6db298df630237b2b7d959d1b1722edc81ce9b1bc7f06237850c Image: mcr.microsoft.com/windows/servercore/iis:windowsservercore Image ID: mcr.microsoft.com/windows/servercore/iis@sha256:0f0114d0f6c6ee569e1494953efdecb76465998df5eba951dc760ac5812c7409 Port: 80/TCP Host Port: 0/TCP State: Running Started: Fri, 05 May 2023 09:34:55 -0400 Ready: True Restart Count: 0 Limits: cpu: 1 memory: 800M Requests: cpu: 1 memory: 800M Environment: <none> Mounts: /inetpub/wwwroot from smb (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-mbnv8 (ro) ...
Pastikan volume Anda telah dipasang pada pod dengan menggunakan perintah kubectl exec untuk terhubung ke pod, lalu gunakan
dir
perintah di direktori yang benar untuk memeriksa apakah volume dipasang dan ukurannya cocok dengan ukuran volume yang Anda sediakan.kubectl exec -it iis-pod –- cmd.exe
Output perintah menyerupai contoh berikut:
Microsoft Windows [Version 10.0.20348.1668] (c) Microsoft Corporation. All rights reserved. C:\>cd /inetpub/wwwroot C:\inetpub\wwwroot>dir Volume in drive C has no label. Volume Serial Number is 86BB-AA55 Directory of C:\inetpub\wwwroot 05/04/2023 08:15 PM <DIR> . 05/04/2023 08:15 PM <DIR> .. 0 File(s) 0 bytes 2 Dir(s) 107,373,838,336 bytes free
Bagian ini mencakup cara menggunakan Astra Trident untuk membuat volume SMB secara dinamis di Azure NetApp Files dan memasangnya secara otomatis ke aplikasi windows kontainer.
Untuk menyediakan volume SMB secara dinamis, Anda perlu menginstal Astra Trident versi 22.10 atau yang lebih baru. Provisi volume SMB secara dinamis memerlukan simpul pekerja windows.
Astra Trident adalah layanan provisi penyimpanan dinamis NetApp yang dibuat khusus untuk Kube. Menyederhanakan konsumsi penyimpanan untuk aplikasi Kubernetes menggunakan driver Container Storage Interface (CSI) standar industri Astra Trident. Astra Trident disebarkan pada kluster Kubernetes sebagai pod dan menyediakan layanan orkestrasi penyimpanan dinamis untuk beban kerja Kubernetes Anda.
Trident dapat diinstal menggunakan operator Trident (secara manual atau menggunakan Helm) atau tridentctl
. Untuk mempelajari selengkapnya tentang metode penginstalan ini dan cara kerjanya, lihat Panduan Penginstalan.
Helm harus diinstal di stasiun kerja Anda untuk menginstal Astra Trident menggunakan metode ini. Untuk metode lain menginstal Astra Trident, lihat Panduan Penginstalan Astra Trident. Jika Anda memiliki simpul pekerja windows di kluster, pastikan untuk mengaktifkan windows dengan metode penginstalan apa pun.
Untuk menginstal Astra Trident menggunakan Helm untuk kluster dengan simpul pekerja windows, jalankan perintah berikut:
helm repo add netapp-trident https://netapp.github.io/trident-helm-chart helm install trident netapp-trident/trident-operator --version 23.04.0 --create-namespace --namespace trident –-set windows=true
Output perintah menyerupai contoh berikut:
NAME: trident LAST DEPLOYED: Fri May 5 14:23:05 2023 NAMESPACE: trident STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI storage provisioner for Kubernetes. Your release is named 'trident' and is installed into the 'trident' namespace. Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster. To configure Trident to manage storage resources, you will need a copy of tridentctl, which is available in pre-packaged Trident releases. You may find all Trident releases and source code online at https://github.com/NetApp/trident. To learn more about the release, try: $ helm status trident $ helm get all trident
Untuk mengonfirmasi bahwa Astra Trident berhasil diinstal, jalankan perintah berikut
kubectl describe
:kubectl describe torc trident
Output perintah menyerupai contoh berikut:
Name: trident Namespace: Labels: app.kubernetes.io/managed-by=Helm Annotations: meta.helm.sh/release-name: trident meta.helm.sh/release-namespace: trident API Version: trident.netapp.io/v1 Kind: TridentOrchestrator Metadata: ... Spec: IPv6: false Autosupport Image: docker.io/netapp/trident-autosupport:23.04 Autosupport Proxy: <nil> Disable Audit Log: true Enable Force Detach: false Http Request Timeout: 90s Image Pull Policy: IfNotPresent k8sTimeout: 0 Kubelet Dir: <nil> Log Format: text Log Layers: <nil> Log Workflows: <nil> Namespace: trident Probe Port: 17546 Silence Autosupport: false Trident Image: docker.io/netapp/trident:23.04.0 Windows: true Status: Current Installation Params: IPv6: false Autosupport Hostname: Autosupport Image: docker.io/netapp/trident-autosupport:23.04 Autosupport Proxy: Autosupport Serial Number: Debug: false Disable Audit Log: true Enable Force Detach: false Http Request Timeout: 90s Image Pull Policy: IfNotPresent Image Pull Secrets: Image Registry: k8sTimeout: 30 Kubelet Dir: /var/lib/kubelet Log Format: text Log Layers: Log Level: info Log Workflows: Probe Port: 17546 Silence Autosupport: false Trident Image: docker.io/netapp/trident:23.04.0 Message: Trident installed Namespace: trident Status: Installed Version: v23.04.0 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Installing 74s trident-operator.netapp.io Installing Trident Normal Installed 46s trident-operator.netapp.io Trident installed
Backend harus dibuat untuk menginstruksikan Astra Trident tentang langganan Azure NetApp Files dan di mana ia perlu membuat volume. Untuk informasi selengkapnya tentang backend, lihat Opsi dan contoh konfigurasi backend Azure NetApp Files.
Buat file bernama
backend-secret-smb.yaml
dan salin dalam YAML berikut.Client ID
Ubah danclientSecret
ke nilai yang benar untuk lingkungan Anda.apiVersion: v1 kind: Secret metadata: name: backend-tbc-anf-secret type: Opaque stringData: clientID: 00001111-aaaa-2222-bbbb-3333cccc4444 clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
Buat file bernama
backend-anf-smb.yaml
dan salin dalam YAML berikut.ClientID
Ubah , ,clientSecret
subscriptionID
,tenantID
,location
, danserviceLevel
ke nilai yang benar untuk lingkungan Anda.tenantID
, ,clientID
danclientSecret
dapat ditemukan dari pendaftaran aplikasi di ID Microsoft Entra dengan izin yang memadai untuk layanan Azure NetApp Files. Pendaftaran aplikasi mencakup peran Pemilik atau Kontributor yang telah ditentukan sebelumnya oleh Azure. Lokasi Azure harus berisi setidaknya satu subnet yang didelegasikan.serviceLevel
harus cocok dengan yang dikonfigurasiserviceLevel
untuk kumpulan kapasitas di Mengonfigurasi Azure NetApp Files untuk beban kerja AKS.apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc-anf-smb spec: version: 1 storageDriverName: azure-netapp-files subscriptionID: aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e tenantID: aaaabbbb-0000-cccc-1111-dddd2222eeee location: eastus serviceLevel: Premium credentials: name: backend-tbc-anf-secret nasType: smb
Buat rahasia dan backend menggunakan
kubectl apply
perintah .Buat rahasia :
kubectl apply -f backend-secret.yaml -n trident
Output perintah menyerupai contoh berikut:
secret/backend-tbc-anf-secret created
Buat backend:
kubectl apply -f backend-anf.yaml -n trident
Output perintah menyerupai contoh berikut:
tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
Pastikan backend dibuat dengan menjalankan perintah berikut:
kubectl get tridentbackends -n trident
Output perintah menyerupai contoh berikut:
NAME BACKEND BACKEND UUID tbe-9shfq backend-tbc-anf-smb 09cc2d43-8197-475f-8356-da7707bae203
Buat rahasia di kluster AKS Anda untuk mengakses server AD menggunakan
kubectl create secret
perintah . Informasi ini akan digunakan oleh volume persisten Kubernetes untuk mengakses volume SMB Azure NetApp Files. Gunakan perintah berikut, gantiDOMAIN_NAME\USERNAME
dengan nama domain dan nama pengguna Anda danPASSWORD
dengan kata sandi Anda.kubectl create secret generic smbcreds --from-literal=username=DOMAIN_NAME\USERNAME –from-literal=password="PASSWORD"
Verifikasi bahwa rahasia telah dibuat.
kubectl get secret
Output menyerupai contoh berikut:
NAME TYPE DATA AGE smbcreds Opaque 2 2h
Kelas penyimpanan digunakan untuk menentukan bagaimana sebuah unit penyimpanan dibuat secara dinamis dengan volume persisten. Untuk menggunakan volume Azure NetApp Files, kelas penyimpanan harus dibuat.
Buat file bernama
anf-storageclass-smb.yaml
dan salin dalam YAML berikut.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: anf-sc-smb provisioner: csi.trident.netapp.io allowVolumeExpansion: true parameters: backendType: "azure-netapp-files" trident.netapp.io/nasType: "smb" csi.storage.k8s.io/node-stage-secret-name: "smbcreds" csi.storage.k8s.io/node-stage-secret-namespace: "default"
Buat kelas penyimpanan menggunakan
kubectl apply
perintah :kubectl apply -f anf-storageclass-smb.yaml
Output perintah menyerupai contoh berikut:
storageclass/anf-sc-smb created
Jalankan
kubectl get
perintah untuk melihat status kelas penyimpanan:kubectl get sc anf-sc-smb NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE anf-sc-smb csi.trident.netapp.io Delete Immediate true 13s
Klaim volume persisten (PVC) adalah permintaan penyimpanan oleh pengguna. Setelah pembuatan klaim volume persisten, Astra Trident secara otomatis membuat berbagi Azure NetApp Files SMB dan membuatnya tersedia untuk dikonsumsi beban kerja Kubernetes.
Buat file bernama
anf-pvc-smb.yaml
dan salin YAML berikut. Dalam contoh ini, volume 100-GiB dibuat denganReadWriteMany
akses dan menggunakan kelas penyimpanan yang dibuat di Membuat kelas penyimpanan.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: anf-pvc-smb spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi storageClassName: anf-sc-smb
Buat klaim volume persisten dengan
kubectl apply
perintah :kubectl apply -f anf-pvc-smb.yaml
Output perintah menyerupai contoh berikut:
persistentvolumeclaim/anf-pvc-smb created
Untuk melihat informasi tentang klaim volume persisten, jalankan
kubectl get
perintah :kubectl get pvc
Output perintah menyerupai contoh berikut:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE anf-pvc-smb Bound pvc-209268f5-c175-4a23-b61b-e34faf5b6239 100Gi RWX anf-sc-smb 5m38s
Untuk melihat volume persisten yang dibuat oleh Astra Trident, jalankan perintah berikut
kubectl get
:kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-209268f5-c175-4a23-b61b-e34faf5b6239 100Gi RWX Delete Bound default/anf-pvc-smb anf-sc-smb 5m52s
Setelah PVC dibuat, pod dapat diputar untuk mengakses volume Azure NetApp Files. Manifes berikut dapat digunakan untuk menentukan pod Layanan Informasi Internet (IIS) yang memasang berbagi Azure NetApp Files SMB yang dibuat pada langkah sebelumnya. Dalam contoh ini, volume dipasang di /inetpub/wwwroot
.
Buat file bernama
anf-iis-pod.yaml
dan salin di YAML berikut:apiVersion: v1 kind: Pod metadata: name: iis-pod labels: app: web spec: nodeSelector: "kubernetes.io/os": windows volumes: - name: smb persistentVolumeClaim: claimName: anf-pvc-smb containers: - name: web image: mcr.microsoft.com/windows/servercore/iis:windowsservercore resources: limits: cpu: 1 memory: 800M ports: - containerPort: 80 volumeMounts: - name: smb mountPath: "/inetpub/wwwroot" readOnly: false
Buat penyebaran menggunakan
kubectl apply
perintah :kubectl apply -f anf-iis-deploy-pod.yaml
Output perintah menyerupai contoh berikut:
pod/iis-pod created
Verifikasi bahwa pod sedang berjalan dan dipasang melalui SMB ke
/inetpub/wwwroot
dengan menggunakankubectl describe
perintah :kubectl describe pod iis-pod
Output perintah menyerupai contoh berikut:
Name: iis-pod Namespace: default Priority: 0 Node: akswin000001/10.225.5.246 Start Time: Fri, 05 May 2023 15:16:36 -0400 Labels: app=web Annotations: <none> Status: Running IP: 10.225.5.252 IPs: IP: 10.225.5.252 Containers: web: Container ID: containerd://1e4959f2b49e7ad842b0ec774488a6142ac9152ca380c7ba4d814ae739d5ed3e Image: mcr.microsoft.com/windows/servercore/iis:windowsservercore Image ID: mcr.microsoft.com/windows/servercore/iis@sha256:0f0114d0f6c6ee569e1494953efdecb76465998df5eba951dc760ac5812c7409 Port: 80/TCP Host Port: 0/TCP State: Running Started: Fri, 05 May 2023 15:16:44 -0400 Ready: True Restart Count: 0 Limits: cpu: 1 memory: 800M Requests: cpu: 1 memory: 800M Environment: <none> Mounts: /inetpub/wwwroot from smb (rw) /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zznzs (ro)
Verifikasi bahwa volume Anda telah dipasang pada pod dengan menggunakan kubectl exec untuk terhubung ke pod. Lalu gunakan
dir
perintah di direktori yang benar untuk memeriksa apakah volume dipasang dan ukurannya cocok dengan ukuran volume yang Anda sediakan.kubectl exec -it iis-pod –- cmd.exe
Output perintah menyerupai contoh berikut:
Microsoft Windows [Version 10.0.20348.1668] (c) Microsoft Corporation. All rights reserved. C:\>cd /inetpub/wwwroot C:\inetpub\wwwroot>dir Volume in drive C has no label. Volume Serial Number is 86BB-AA55 Directory of C:\inetpub\wwwroot 05/05/2023 01:38 AM <DIR> . 05/05/2023 01:38 AM <DIR> .. 0 File(s) 0 bytes 2 Dir(s) 107,373,862,912 bytes free C:\inetpub\wwwroot>exit
Astra Trident mendukung banyak fitur dengan Azure NetApp Files. Untuk informasi selengkapnya, lihat:
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: