Zřízení svazků Azure NetApp Files na Azure Kubernetes Service
Trvalý svazek představuje část úložiště, která byla zřízena pro použití s pody Kubernetes. Trvalý svazek může používat jeden nebo více podů a je možné ho dynamicky nebo staticky zřizovat. V tomto článku se dozvíte, jak vytvořit Azure NetApp Files svazky, které budou používat pody v clusteru Azure Kubernetes Service (AKS).
Azure NetApp Files je vysoce výkonná služba úložiště souborů s měřením dat na podnikové úrovni, která běží v Azure. Uživatelé Kubernetes mají dvě možnosti použití svazků Azure NetApp Files pro úlohy Kubernetes:
- Statické vytváření Azure NetApp Files svazků V tomto scénáři je vytváření svazků pro AKS externí. Svazky se vytvářejí pomocí Azure CLI nebo z Azure Portal a pak se pro Kubernetes zveřejňují vytvořením
PersistentVolume
. Staticky vytvořené Azure NetApp Files svazky mají řadu omezení (například nemožnost rozšíření, nutnost přetěžování atd.). Staticky vytvořené svazky se ve většině případů použití nedoporučují. - Vytváření Azure NetApp Files svazků na vyžádání a orchestrace prostřednictvím Kubernetes Tato metoda představuje upřednostňovaný způsob, jak vytvořit více svazků přímo prostřednictvím Kubernetes, a to pomocí Astra Trident. Astra Trident je orchestrátor dynamického úložiště kompatibilní s CSI, který pomáhá nativně zřizovat svazky prostřednictvím Kubernetes.
Použití ovladače CSI k přímému využívání Azure NetApp Files svazků z úloh AKS je doporučenou konfigurací pro většinu případů použití. Tento požadavek se splní pomocí Astra Trident, opensourcového orchestrátoru dynamického úložiště pro Kubernetes. Astra Trident je orchestrátor úložiště na podnikové úrovni vytvořený pro Kubernetes a plně podporovaný platformou NetApp. Zjednodušuje přístup k úložišti z clusterů Kubernetes tím, že automatizuje zřizování úložiště.
Pomocí ovladače CSI (Container Storage Interface) od společnosti Astra Trident pro Azure NetApp Files můžete abstrahovat podkladové podrobnosti a vytvářet, rozšiřovat a vytvářet svazky na vyžádání. Navíc použití Astra Trident umožňuje používat Astra Control Service postavenou na Astra Trident. Pomocí služby Astra Control Service můžete zálohovat, obnovovat, přesouvat a spravovat životní cyklus aplikačních dat vašich úloh AKS napříč clustery v rámci oblastí Azure a napříč oblastmi Azure tak, aby splňovaly vaše požadavky na provozní kontinuitu a kontinuitu služeb.
Než začnete
Při použití Azure NetApp Files platí následující aspekty:
- Váš cluster AKS musí být v oblasti, která podporuje Azure NetApp Files.
- Nainstalované a nakonfigurované Rozhraní příkazového řádku Azure CLI verze 2.0.59 nebo novější. Verzi zjistíte spuštěním příkazu
az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI. - Po počátečním nasazení clusteru AKS můžete Azure NetApp Files svazky zřídit staticky nebo dynamicky.
- Pokud chcete s Azure NetApp Files používat dynamické zřizování, nainstalujte a nakonfigurujte Astra Trident verze 19.07 nebo vyšší.
Konfigurace Azure NetApp Files
Spuštěním následujícího příkazu zaregistrujte poskytovatele prostředků Microsoft.NetApp :
az provider register --namespace Microsoft.NetApp --wait
Poznámka
Dokončení této operace může trvat několik minut.
Když vytvoříte účet Azure NetApp pro použití se službou AKS, můžete tento účet vytvořit v existující skupině prostředků nebo vytvořit novou ve stejné oblasti jako cluster AKS. Následující příkaz vytvoří účet myaccount1 ve skupině prostředků myResourceGroup a oblasti eastus :
az netappfiles account create \ --resource-group myResourceGroup \ --location eastus \ --account-name myaccount1
Vytvořte nový fond kapacity pomocí příkazu az netappfiles pool create. Následující příklad vytvoří nový fond kapacity mypool1 s velikostí 4 TB a úrovní služeb Premium :
az netappfiles pool create \ --resource-group myResourceGroup \ --location eastus \ --account-name myaccount1 \ --pool-name mypool1 \ --size 4 \ --service-level Premium
Vytvořte podsíť pro delegování Azure NetApp Files pomocí příkazu az network vnet subnet create. Zadejte skupinu prostředků hostující existující virtuální síť pro váš cluster AKS.
Poznámka
Tato podsíť musí být ve stejné virtuální síti jako váš cluster AKS.
RESOURCE_GROUP=myResourceGroup VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv) VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv) SUBNET_NAME=MyNetAppSubnet az network vnet subnet create \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --delegations "Microsoft.NetApp/volumes" \ --address-prefixes 10.0.0.0/28
Svazky je možné zřizovat staticky nebo dynamicky. Obě možnosti jsou podrobněji popsány v dalších částech.
Statické zřízení svazků Azure NetApp Files
Vytvořte svazek pomocí příkazu az netappfiles volume create . Aktualizujte
RESOURCE_GROUP
,LOCATION
(ANF_ACCOUNT_NAME
název účtu Azure NetApp),POOL_NAME
aSERVICE_LEVEL
správnými hodnotami.RESOURCE_GROUP=myResourceGroup LOCATION=eastus ANF_ACCOUNT_NAME=myaccount1 POOL_NAME=mypool1 SERVICE_LEVEL=Premium VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv) VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv) SUBNET_NAME=MyNetAppSubnet SUBNET_ID=$(az network vnet subnet show --resource-group $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --query "id" -o tsv) VOLUME_SIZE_GiB=100 # 100 GiB UNIQUE_FILE_PATH="myfilepath2" # Note that file path needs to be unique within all ANF Accounts az netappfiles volume create \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --name "myvol1" \ --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
Výpis podrobností o svazku pomocí příkazu az netappfiles volume show
az netappfiles volume show \ --resource-group $RESOURCE_GROUP \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --volume-name "myvol1" -o JSON
Následující výstup se podobá výstupu předchozího příkazu:
{ ... "creationToken": "myfilepath2", ... "mountTargets": [ { ... "ipAddress": "10.0.0.4", ... } ], ... }
pv-nfs.yaml
Vytvořte definující trvalý svazek zkopírováním následujícího manifestu. Nahraďtepath
za creationToken aserver
za ipAddress z předchozí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
Vytvořte trvalý svazek pomocí příkazu kubectl apply :
kubectl apply -f pv-nfs.yaml
Pomocí příkazu kubectl describe ověřte, že stav persistentvolume je k dispozici:
kubectl describe pv pv-nfs
Vytvoření deklarace identity trvalého svazku
pvc-nfs.yaml
Vytvořte definici PersistentVolume zkopírováním následujícího manifestu:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 1Gi
K vytvoření deklarace identity trvalého svazku použijte příkaz kubectl apply :
kubectl apply -f pvc-nfs.yaml
Pomocí příkazu kubectl describe ověřte, že stav deklarace identity trvalého svazku je vázaný:
kubectl describe pvc pvc-nfs
Připojení pomocí podu
Pomocí následujícího manifestu
nginx-nfs.yaml
vytvořte definující pod, který používá deklaraci identity trvalého 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í příkazu kubectl apply :
kubectl apply -f nginx-nfs.yaml
Pomocí příkazu kubectl describe ověřte, že je pod spuštěný:
kubectl describe pod nginx-nfs
Pomocí kubectl exec pro připojení k podu ověřte, že je váš svazek připojený k podu a pak pomocí příkazu
df -h
zkontrolujte, 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é zřizování svazků Azure NetApp Files
Instalace a konfigurace Astra Trident
Pokud chcete dynamicky zřizovat svazky, musíte nainstalovat Astra Trident. Astra Trident je nástroj pro zřizování dynamického úložiště v NetApp, který je určený pro Kubernetes. Zjednodušte využití úložiště pro aplikace Kubernetes pomocí standardního ovladače rozhraní kontejneru (CSI) Astra Trident. Astra Trident se nasazuje do clusterů Kubernetes jako pody a poskytuje dynamické služby orchestrace úložiště pro úlohy Kubernetes.
Než budete pokračovat k další části, musíte:
Nainstalujte Astra Trident. Trident se dá nainstalovat pomocí operátoru Trident (ručně nebo pomocí Helmu) nebo
tridentctl
. Pokyny uvedené dále v tomto článku vysvětlují, jak lze Astra Trident nainstalovat pomocí operátoru . Další informace o těchto metodách instalace a o tom, jak fungují, najdete v průvodci instalací.Vytvořte back-end. Pokud chcete instruovat Astra Trident o předplatném Azure NetApp Files a o tom, 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.
Instalace Astra Trident pomocí operátoru
Tato část vás provede instalací Astra Trident pomocí operátoru .
Stáhněte si Astra Trident z jejího úložiště GitHub. Vyberte si z požadované verze a stáhněte balíček instalačního programu.
wget https://github.com/NetApp/trident/releases/download/v21.07.1/trident-installer-21.07.1.tar.gz tar xzvf trident-installer-21.07.1.tar.gz
Spuštěním příkazu [kubectl create][kubectl-create] vytvořte obor názvů trident :
kubectl create ns trident
Výstup příkazu se podobá následujícímu příkladu:
namespace/trident created
Spuštěním příkazu kubectl apply nasaďte operátor Trident pomocí souboru bundle:
kubectl apply -f trident-installer/deploy/bundle.yaml -n trident
Výstup příkazu se podobá následujícímu příkladu:
serviceaccount/trident-operator created clusterrole.rbac.authorization.k8s.io/trident-operator created clusterrolebinding.rbac.authorization.k8s.io/trident-operator created deployment.apps/trident-operator created podsecuritypolicy.policy/tridentoperatorpods created
Spuštěním následujícího příkazu vytvořte
TridentOrchestrator
a nainstalujte Astra Trident.kubectl apply -f trident-installer/deploy/crds/tridentorchestrator_cr.yaml
Výstup příkazu se podobá následujícímu příkladu:
tridentorchestrator.trident.netapp.io/trident created
Operátor se instaluje pomocí parametrů uvedených ve specifikaci
TridentOrchestrator
. Informace o konfiguračních parametrech a ukázkových back-endech najdete v průvodci instalací tridentu a průvodci back-endem.Pokud chcete ověřit úspěšnou instalaci Astra Trident, spusťte následující příkaz kubectl describe :
kubectl describe torc trident
Výstup příkazu se podobá následujícímu příkladu:
Name: trident Namespace: Labels: <none> Annotations: <none> API Version: trident.netapp.io/v1 Kind: TridentOrchestrator ... Spec: Debug: true Namespace: trident Status: Current Installation Params: IPv6: false Autosupport Hostname: Autosupport Image: netapp/trident-autosupport:21.01 Autosupport Proxy: Autosupport Serial Number: Debug: true Enable Node Prep: false Image Pull Secrets: Image Registry: k8sTimeout: 30 Kubelet Dir: /var/lib/kubelet Log Format: text Silence Autosupport: false Trident Image: netapp/trident:21.07.1 Message: Trident installed Namespace: trident Status: Installed Version: v21.07.1 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Installing 74s trident-operator.netapp.io Installing Trident Normal Installed 67s trident-operator.netapp.io Trident installed
Vytvoření back-endu
Před vytvořením back-endu je potřeba provést aktualizaci
backend-anf.yaml
tak, aby obsahoval podrobnosti o Azure NetApp Files předplatném, například:subscriptionID
pro předplatné Azure, kde se Azure NetApp Files povolí.tenantID
,clientID
aclientSecret
z registrace aplikace v Azure Active Directory (AD) s dostatečnými oprávněními pro službu Azure NetApp Files. Registrace aplikace zahrnujeOwner
roli neboContributor
, která je předdefinovaná v Azure.- Umístění Azure, které obsahuje alespoň jednu delegovanou podsíť.
Kromě toho se můžete rozhodnout poskytovat jinou úroveň služby. Azure NetApp Files poskytuje tři úrovně služeb: Standard, Premium a Ultra.
Po instalaci Astra Trident spuštěním následujícího příkazu vytvořte back-end, který odkazuje na vaše předplatné Azure NetApp Files.
kubectl apply -f trident-installer/sample-input/backends-samples/azure-netapp-files/backend-anf.yaml -n trident
Výstup příkazu se podobá následujícímu příkladu:
secret/backend-tbc-anf-secret created tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
Vytvoření třídy StorageClass
Třída úložiště se používá k definování dynamického vytváření jednotky úložiště s trvalým svazkem. Aby bylo možné využívat Azure NetApp Files svazky, musí být vytvořena třída úložiště.
Vytvořte soubor s názvem
anf-storageclass.yaml
a zkopírujte ho v následujícím manifestu:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azure-netapp-files provisioner: csi.trident.netapp.io parameters: backendType: "azure-netapp-files" fsType: "nfs"
Vytvořte třídu úložiště pomocí příkazu kubectl apply :
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 příkazu kubectl get 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 3s
Vytvoření trvalé deklarace identity svazku
Trvalý svazek deklarací identity (PVC) je žádost o uložení uživatelem. Po vytvoření trvalé deklarace identity svazku Astra Trident automaticky vytvoří svazek Azure NetApp Files a zpřístupní ho pro úlohy Kubernetes, které je mohou využívat.
Vytvořte soubor s názvem
anf-pvc.yaml
a zkopírujte následující manifest. V tomto příkladu se vytvoří 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 kubectl apply vytvořte deklaraci trvalého svazku:
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, spusťte příkaz kubectl get :
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 je možné pod roztáčit, aby se přístup k Azure NetApp Files svazku. Následující manifest lze použít k definování podu NGINX, který připojí Azure NetApp Files svazek 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 následující manifest:kind: Pod apiVersion: v1 metadata: name: nginx-pod spec: containers: - name: nginx image: mcr.microsoft.com/oss/nginx/nginx:latest1.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í příkazu kubectl apply :
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 se svazkem připojeným a přístupným v kontejneru
nginx
na adrese/mnt/data
. To můžete ověřit kontrolou protokolů událostí podu pomocí příkazu kubectl describe :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
Použití značek Azure
Další podrobnosti o používání značek Azure najdete v tématu Použití značek Azure v Azure Kubernetes Service (AKS).
Další kroky
Astra Trident podporuje mnoho funkcí s Azure NetApp Files. Další informace naleznete v tématu: