Zřízení svazků NFS služby Azure NetApp Files pro službu Azure Kubernetes Service
Po konfiguraci služby Azure NetApp Files pro službu Azure Kubernetes Service můžete zřídit svazky Azure NetApp Files pro službu Azure Kubernetes Service.
Azure NetApp Files podporuje svazky používající systém souborů NFS (NFSv3 nebo NFSv4.1), SMB nebo duální protokol (NFSv3 a SMB nebo NFSv4.1 a SMB).
- Tento článek popisuje podrobnosti o zřizování svazků NFS staticky nebo dynamicky.
- Informace o statickém nebo dynamickém zřizování svazků SMB najdete v tématu Zřízení svazků SMB služby Azure NetApp Files pro službu Azure Kubernetes Service.
- Informace o statickém zřizování svazků se dvěma protokoly najdete v tématu Zřízení svazků se dvěma protokoly služby Azure NetApp Files pro službu Azure Kubernetes Service.
Staticky konfigurujte pro aplikace, které používají svazky NFS.
Tato část popisuje, jak vytvořit svazek NFS ve službě Azure NetApp Files a zpřístupnit svazek staticky pro Kubernetes. Popisuje také, jak používat svazek s kontejnerizovanou aplikací.
Vytvoření svazku NFS
Definujte proměnné pro pozdější použití. Nahraďte myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname, vnetid a anfSubnetID příslušnou hodnotou z vašeho účtu a prostředí. Cesta k souboru musí být jedinečná ve všech účtech 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"
Vytvořte svazek pomocí
az netappfiles volume create
příkazu. Další informace najdete v tématu Vytvoření svazku NFS pro Azure NetApp Files.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 NFSv3
Vytvoření trvalého svazku
Vypíše podrobnosti o svazku pomocí
az netappfiles volume show
příkazu. Nahraďte proměnné příslušnými hodnotami z vašeho účtu a prostředí Azure NetApp Files, pokud nejsou definovány v předchozím kroku.az netappfiles volume show \ --resource-group $RESOURCE_GROUP \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --volume-name "$VOLUME_NAME -o JSON
Následující výstup je příkladem výše uvedeného příkazu spuštěného se skutečnými hodnotami.
{ ... "creationToken": "myfilepath2", ... "mountTargets": [ { ... "ipAddress": "10.0.0.4", ... } ], ... }
Vytvořte soubor s názvem
pv-nfs.yaml
a zkopírujte ho v následujícím jazyce YAML. Ujistěte se, že server odpovídá výstupní IP adrese z kroku 1 a cesta odpovídá výstupu výšecreationToken
. Kapacita musí také odpovídat velikosti svazku z výše uvedeného kroku.apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs spec: capacity: storage: 100Gi accessModes: - ReadWriteMany mountOptions: - vers=3 nfs: server: 10.0.0.4 path: /myfilepath2
Pomocí příkazu vytvořte trvalý svazek
kubectl apply
:kubectl apply -f pv-nfs.yaml
Pomocí příkazu ověřte, že je trvalý svazek dostupný
kubectl describe
:kubectl describe pv pv-nfs
Vytvoření deklarace trvalého svazku
Vytvořte soubor s názvem
pvc-nfs.yaml
a zkopírujte ho v následujícím jazyce YAML. Tento manifest vytvoří PVC pojmenovanýpvc-nfs
pro 100Gi úložiště aReadWriteMany
režim přístupu odpovídající PV, který jste vytvořili.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 100Gi
Pomocí příkazu vytvořte trvalou deklaraci identity svazku
kubectl apply
:kubectl apply -f pvc-nfs.yaml
Pomocí příkazu ověřte, že je stav trvalé deklarace identity svazku
kubectl describe
svázaný:kubectl describe pvc pvc-nfs
Připojení s podem
Vytvořte soubor s názvem
nginx-nfs.yaml
a zkopírujte ho v následujícím jazyce YAML. Tento manifest definujenginx
pod, který používá trvalou deklaraci identity svazku.kind: Pod apiVersion: v1 metadata: name: nginx-nfs spec: containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine name: nginx-nfs command: - "/bin/sh" - "-c" - while true; do echo $(date) >> /mnt/azure/outfile; sleep 1; done volumeMounts: - name: disk01 mountPath: /mnt/azure volumes: - name: disk01 persistentVolumeClaim: claimName: pvc-nfs
Vytvořte pod pomocí
kubectl apply
příkazu:kubectl apply -f nginx-nfs.yaml
Pomocí příkazu ověřte, že je pod spuštěný
kubectl describe
:kubectl describe pod nginx-nfs
Ověřte, že je svazek připojený k podu pomocí připojení
kubectl exec
k podu, a pak pomocídf -h
kontroly, jestli je svazek připojený.kubectl exec -it nginx-nfs -- sh
/ # df -h Filesystem Size Used Avail Use% Mounted on ... 10.0.0.4:/myfilepath2 100T 384K 100T 1% /mnt/azure ...
Dynamická konfigurace pro aplikace, které používají svazky NFS
Astra Trident se dá použít k dynamickému zřizování souborů NFS nebo SMB ve službě Azure NetApp Files. Dynamicky zřízené svazky SMB jsou podporovány pouze u pracovních uzlů Windows.
Tato část popisuje, jak pomocí Astra Trident dynamicky vytvořit svazek NFS ve službě Azure NetApp Files a automaticky ho připojit ke kontejnerizované aplikaci.
Instalace Astra Trident
Pokud chcete dynamicky zřizovat svazky NFS, musíte nainstalovat Astra Trident. Astra Trident je dynamická zřizovací služba úložiště NetApp, která je pro Kubernetes vytvořená účelově. Zjednodušte spotřebu úložiště pro aplikace Kubernetes pomocí standardního ovladače rozhraní CSI (Container Storage Interface) Astra Trident. Astra Trident se nasazuje v clusterech Kubernetes jako pody a poskytuje dynamické služby orchestrace úložiště pro úlohy Kubernetes.
Trident lze nainstalovat pomocí operátoru Trident (ručně nebo pomocí Helmu) nebo tridentctl
. Další informace o těchto metodách instalace a jejich fungování najdete v průvodci instalací Astra Trident.
Instalace Astra Tridentu pomocí Nástroje Helm
Helm musí být nainstalován na pracovní stanici, aby bylo možné pomocí této metody nainstalovat Astra Trident. Další metody instalace Astra Trident naleznete v průvodci instalací Astra Trident.
Pokud chcete nainstalovat Astra Trident pomocí Helmu pro cluster s pouze linuxovými pracovními uzly, spusťte následující příkazy:
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
Výstup příkazu se podobá následujícímu příkladu:
NAME: trident LAST DEPLOYED: Fri May 5 13:55:36 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
Pokud chcete ověřit, že se Astra Trident úspěšně nainstaloval, spusťte následující
kubectl describe
příkaz:kubectl describe torc trident
Výstup příkazu se podobá následujícímu příkladu:
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: false 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 2m59s trident-operator.netapp.io Installing Trident Normal Installed 2m31s trident-operator.netapp.io Trident installed
Vytvoření back-endu
Pokud chcete Astra Trident instruovat o předplatném Azure NetApp Files a kde potřebuje vytvářet svazky, vytvoří se back-end. Tento krok vyžaduje podrobnosti o účtu vytvořeném v předchozím kroku.
Vytvořte soubor s názvem
backend-secret.yaml
a zkopírujte ho v následujícím jazyce YAML.Client ID
Změňte hodnoty aclientSecret
správné hodnoty pro vaše prostředí.apiVersion: v1 kind: Secret metadata: name: backend-tbc-anf-secret type: Opaque stringData: clientID: 00001111-aaaa-2222-bbbb-3333cccc4444 clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
Vytvořte soubor s názvem
backend-anf.yaml
a zkopírujte ho v následujícím jazyce YAML. Změňte hodnotusubscriptionID
,location
tenantID
aserviceLevel
na správné hodnoty pro vaše prostředí.subscriptionID
Použijte předplatné Azure, ve kterém je povolená služba Azure NetApp Files.tenantID
Získejte ,clientID
aclientSecret
z registrace aplikace v Microsoft Entra ID s dostatečnými oprávněními pro službu Azure NetApp Files. Registrace aplikace zahrnuje roli Vlastník nebo Přispěvatel předdefinovaná v Azure. Umístění musí být umístění Azure, které obsahuje aspoň jednu delegovanou podsíť vytvořenou v předchozím kroku. MusíserviceLevel
se shodovat sserviceLevel
nakonfigurovaným fondem kapacity v části Konfigurace služby Azure NetApp Files pro úlohy AKS.apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc-anf 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
Další informace o back-endech najdete v tématu Možnosti a příklady konfigurace back-endu služby Azure NetApp Files.
Použijte tajný klíč a back-end pomocí
kubectl apply
příkazu. Nejprve použijte tajný kód:kubectl apply -f backend-secret.yaml -n trident
Výstup příkazu se podobá následujícímu příkladu:
secret/backend-tbc-anf-secret created
Použijte back-end:
kubectl apply -f backend-anf.yaml -n trident
Výstup příkazu se podobá následujícímu příkladu:
tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
Pomocí příkazu ověřte, že se back-end vytvořil
kubectl get
:kubectl get tridentbackends -n trident
Výstup příkazu se podobá následujícímu příkladu:
NAME BACKEND BACKEND UUID tbe-kfrdh backend-tbc-anf 8da4e926-9dd4-4a40-8d6a-375aab28c566
Vytvoření třídy úložiště
Třída úložiště slouží k definování dynamického vytvoření jednotky úložiště s trvalým svazkem. Aby bylo možné využívat svazky Azure NetApp Files, musí se vytvořit třída úložiště.
Vytvořte soubor s názvem
anf-storageclass.yaml
a zkopírujte ho v následujícím jazyce YAML:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azure-netapp-files provisioner: csi.trident.netapp.io parameters: backendType: "azure-netapp-files" fsType: "nfs"
Pomocí příkazu vytvořte třídu
kubectl apply
úložiště:kubectl apply -f anf-storageclass.yaml
Výstup příkazu se podobá následujícímu příkladu:
storageclass/azure-netapp-files created
Spuštěním
kubectl get
příkazu zobrazte stav třídy úložiště:kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE azure-netapp-files csi.trident.netapp.io Delete Immediate false
Vytvoření PVC
Trvalá deklarace identity svazku (PVC) je žádost o úložiště uživatelem. Po vytvoření trvalé deklarace identity svazku vytvoří Astra Trident automaticky svazek Azure NetApp Files a zpřístupní ho pro úlohy Kubernetes, které budou využívat.
Vytvořte soubor s názvem
anf-pvc.yaml
a zkopírujte ho v následujícím jazyce YAML. V tomto příkladu je potřeba svazek 1 TiB s přístupem ReadWriteMany.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: anf-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Ti storageClassName: azure-netapp-files
Pomocí příkazu vytvořte trvalou deklaraci identity svazku
kubectl apply
:kubectl apply -f anf-pvc.yaml
Výstup příkazu se podobá následujícímu příkladu:
persistentvolumeclaim/anf-pvc created
Pokud chcete zobrazit informace o trvalé deklaraci identity svazku
kubectl get
, spusťte příkaz:kubectl get pvc
Výstup příkazu se podobá následujícímu příkladu:
kubectl get pvc -n trident NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE anf-pvc Bound pvc-bffa315d-3f44-4770-86eb-c922f567a075 1Ti RWO azure-netapp-files 62s
Použití trvalého svazku
Po vytvoření PVC vytvoří Astra Trident trvalý svazek. Pod se dá připojit ke svazku Azure NetApp Files a získat k němu přístup.
Následující manifest se dá použít k definování podu NGINX, který připojí svazek Azure NetApp Files vytvořený v předchozím kroku. V tomto příkladu je svazek připojen na /mnt/data
adrese .
Vytvořte soubor s názvem
anf-nginx-pod.yaml
a zkopírujte ho v následujícím jazyce YAML:kind: Pod apiVersion: v1 metadata: name: nginx-pod spec: containers: - name: nginx image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/data" name: volume volumes: - name: volume persistentVolumeClaim: claimName: anf-pvc
Vytvořte pod pomocí
kubectl apply
příkazu:kubectl apply -f anf-nginx-pod.yaml
Výstup příkazu se podobá následujícímu příkladu:
pod/nginx-pod created
Kubernetes vytvořil pod s připojeným svazkem a přístupným v kontejneru
nginx
na adrese/mnt/data
. Kontrolu protokolů událostí pro pod můžete ověřit pomocíkubectl describe
příkazu:kubectl describe pod nginx-pod
Výstup příkazu se podobá následujícímu příkladu:
[...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: anf-pvc ReadOnly: false default-token-k7952: Type: Secret (a volume populated by a Secret) SecretName: default-token-k7952 Optional: false [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 15s default-scheduler Successfully assigned trident/nginx-pod to brameshb-non-root-test Normal SuccessfulAttachVolume 15s attachdetach-controller AttachVolume.Attach succeeded for volume "pvc-bffa315d-3f44-4770-86eb-c922f567a075" Normal Pulled 12s kubelet Container image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" already present on machine Normal Created 11s kubelet Created container nginx Normal Started 10s kubelet Started container nginx
Další kroky
Astra Trident podporuje mnoho funkcí v Azure NetApp Files. Další informace naleznete v tématu:
Azure Kubernetes Service