Ruční vytvoření a použití serveru NFS s Linuxem (Network File System) se službou Azure Kubernetes Service (AKS)
Sdílení dat mezi kontejnery je často nezbytnou součástí služeb a aplikací založených na kontejnerech. Obvykle máte různé pody, které potřebují přístup ke stejným informacím na externím trvalém svazku. Azure Files je sice možnost, ale vytvoření serveru NFS na virtuálním počítači Azure je další forma trvalého sdíleného úložiště.
Tento článek vám ukáže, jak vytvořit server NFS na virtuálním počítači Azure Ubuntu a nastavit cluster AKS s přístupem k tomuto sdílenému systému souborů jako trvalý svazek.
Než začnete
Tento článek předpokládá, že pro podporu této konfigurace máte následující:
- Existující cluster AKS. Pokud nemáte cluster AKS, pokyny k návrhu implementace AKS na podnikové úrovni najdete v tématu Plánování návrhu AKS.
- Cluster AKS musí být ve stejné nebo partnerské virtuální síti Azure jako server NFS. Cluster musí být vytvořen ve stávající virtuální síti, což může být stejná virtuální síť jako váš virtuální počítač serveru NFS. Postup konfigurace s existující virtuální sítí najdete v následujících článcích: Vytvoření clusteru AKS v existující virtuální síti a připojení virtuálních sítí pomocí partnerského vztahu virtuálních sítí.
- Virtuální počítač Azure s Ubuntu Linuxem s verzí 18.04 nebo novější. Pokud chcete nasadit virtuální počítač s Linuxem v Azure, přečtěte si téma Vytvoření a správa virtuálních počítačů s Linuxem.
Pokud nejprve nasadíte cluster AKS, Azure automaticky naplní nastavení virtuální sítě při nasazování virtuálního počítače Azure Ubuntu a přidružuje virtuální počítač s Ubuntu ve stejné virtuální síti. Pokud místo toho chcete pracovat s partnerskými sítěmi, projděte si výše uvedenou dokumentaci.
Nasazení serveru NFS na virtuální počítač
Pokud chcete nasadit server NFS na virtuální počítač Azure Ubuntu, zkopírujte následující skript Bash a uložte ho do místního počítače. Nahraďte hodnotu proměnné AKS_SUBNET správnou hodnotou z clusteru AKS, jinak zadaná výchozí hodnota otevře server NFS pro všechny porty a připojení. V tomto článku se soubor jmenuje
nfs-server-setup.sh
.#!/bin/bash # This script should be executed on Linux Ubuntu Virtual Machine EXPORT_DIRECTORY=${1:-/export/data} DATA_DIRECTORY=${2:-/data} AKS_SUBNET=${3:-*} echo "Updating packages" apt-get -y update echo "Installing NFS kernel server" apt-get -y install nfs-kernel-server echo "Making data directory ${DATA_DIRECTORY}" mkdir -p ${DATA_DIRECTORY} echo "Making new directory to be exported and linked to data directory: ${EXPORT_DIRECTORY}" mkdir -p ${EXPORT_DIRECTORY} echo "Mount binding ${DATA_DIRECTORY} to ${EXPORT_DIRECTORY}" mount --bind ${DATA_DIRECTORY} ${EXPORT_DIRECTORY} echo "Giving 777 permissions to ${EXPORT_DIRECTORY} directory" chmod 777 ${EXPORT_DIRECTORY} parentdir="$(dirname "$EXPORT_DIRECTORY")" echo "Giving 777 permissions to parent: ${parentdir} directory" chmod 777 $parentdir echo "Appending bound directories into fstab" echo "${DATA_DIRECTORY} ${EXPORT_DIRECTORY} none bind 0 0" >> /etc/fstab echo "Appending localhost and Kubernetes subnet address ${AKS_SUBNET} to exports configuration file" echo "/export ${AKS_SUBNET}(rw,async,insecure,fsid=0,crossmnt,no_subtree_check)" >> /etc/exports echo "/export localhost(rw,async,insecure,fsid=0,crossmnt,no_subtree_check)" >> /etc/exports nohup service nfs-kernel-server restart
Skript zahájí restartování serveru NFS a potom můžete pokračovat připojením k serveru NFS z clusteru AKS.
Po vytvoření virtuálního počítače s Linuxem zkopírujte soubor vytvořený v předchozím kroku z místního počítače do virtuálního počítače pomocí následujícího příkazu:
scp /path/to/nfs-server-setup.sh username@vm-ip-address:/home/{username}
Po zkopírování souboru otevřete připojení SSH (Secure Shell) k virtuálnímu počítači a spusťte následující příkaz:
sudo ./nfs-server-setup.sh
Pokud se spuštění nezdaří kvůli chybě odepření oprávnění, nastavte oprávnění ke spuštění pro všechny spuštěním následujícího příkazu:
chmod +x ~/nfs-server-setup.sh
Připojení clusteru AKS k serveru NFS
Ze svého clusteru AKS se můžete připojit k serveru NFS tak, že zřídíte trvalý svazek a deklaraci trvalého svazku, která určuje přístup ke svazku. Je potřeba propojit dva prostředky ve stejných virtuálních sítích nebo ve virtuálních sítích s partnerským vztahem. Informace o nastavení clusteru ve stejné virtuální síti najdete v tématu: Vytvoření clusteru AKS v existující virtuální síti.
Jakmile jsou oba prostředky ve stejné virtuální nebo partnerské virtuální síti, zřiďte trvalý svazek a deklaraci trvalého svazku v clusteru AKS. Kontejnery pak můžou připojit jednotku NFS k místnímu adresáři.
Vytvořte manifest YAML s názvem pv-azurefilesnfs.yaml s trvalýmvolume. Příklad:
apiVersion: v1 kind: PersistentVolume metadata: name: NFS_NAME labels: type: nfs spec: capacity: storage: 1Gi accessModes: - ReadWriteMany nfs: server: NFS_INTERNAL_IP path: NFS_EXPORT_FILE_PATH
Nahraďte hodnoty pro NFS_INTERNAL_IP, NFS_NAME a NFS_EXPORT_FILE_PATH skutečným nastavením ze serveru NFS.
Vytvořte manifest YAML s názvem pvc-azurefilesnfs.yaml s TrvalýVolumeClaim , který používá PersistentVolume. Příklad:
Důležité
hodnota storageClassName musí zůstat prázdným řetězcem nebo deklarace identity nebude fungovat.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: NFS_NAME spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 1Gi selector: matchLabels: type: nfs
Nahraďte hodnotu NFS_NAME skutečným nastavením ze serveru NFS.
Řešení problému
Pokud se nemůžete připojit k serveru z clusteru AKS, může se jednat o exportovaný adresář nebo nadřazený adresář, nemá dostatečná oprávnění pro přístup k virtuálnímu počítači se serverem NFS.
Zkontrolujte, jestli má adresář exportu i nadřazený adresář udělená oprávnění 777.
Oprávnění můžete zkontrolovat spuštěním následujícího příkazu a adresářů by měla mít oprávnění drwxrwxwx:
ls -l
Další kroky
- Přidružené osvědčené postupy najdete v tématu Osvědčené postupy pro ukládání a zálohování v AKS.
- Další informace o nastavení serveru NFS nebo pomoc s laděním problémů najdete v následujícím kurzu od komunity Systému souborů NFS ubuntu.
Azure Kubernetes Service