Skapa och använda en Linux NFS-server (Network File System) manuellt med Azure Kubernetes Service (AKS)
Att dela data mellan containrar är ofta en nödvändig komponent i containerbaserade tjänster och program. Du har vanligtvis olika poddar som behöver åtkomst till samma information på en extern beständig volym. Även om Azure Files är ett alternativ är skapandet av en NFS-server på en virtuell Azure-dator en annan form av beständig delad lagring.
Den här artikeln visar hur du skapar en NFS-server på en virtuell Azure Ubuntu-dator och konfigurerar AKS-klustret med åtkomst till det här delade filsystemet som en beständig volym.
Innan du börjar
Den här artikeln förutsätter att du har följande stöd för den här konfigurationen:
- Ett befintligt AKS-kluster. Om du inte har ett AKS-kluster finns information om hur du utformar en implementering i företagsskala av AKS i Planera din AKS-design.
- Ditt AKS-kluster måste finnas på samma eller peer-kopplade virtuella Azure-nätverk (VNet) som NFS-servern. Klustret måste skapas på ett befintligt VNet, som kan vara samma virtuella nätverk som den virtuella NFS-serverdatorn. Stegen för att konfigurera med ett befintligt VNet beskrivs i följande artiklar: skapa AKS-kluster i befintligt VNET och ansluta virtuella nätverk med VNET-peering.
- En virtuell Azure Ubuntu Linux-dator som kör version 18.04 eller senare. Information om hur du distribuerar en virtuell Linux-dator på Azure finns i Skapa och hantera virtuella Linux-datorer.
Om du distribuerar AKS-klustret först fyller Azure automatiskt i inställningarna för det virtuella nätverket när du distribuerar den virtuella Azure Ubuntu-datorn och associerar den virtuella Ubuntu-datorn på samma virtuella nätverk. Om du vill arbeta med peer-kopplade nätverk i stället kan du läsa dokumentationen ovan.
Distribuera NFS-servern till en virtuell dator
Om du vill distribuera en NFS-server på den virtuella Azure Ubuntu-datorn kopierar du följande Bash-skript och sparar det på den lokala datorn. Ersätt värdet för variabeln AKS_SUBNET med rätt från AKS-klustret, annars öppnas NFS-servern för alla portar och anslutningar. I den här artikeln heter
nfs-server-setup.sh
filen .#!/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
Skriptet initierar en omstart av NFS-servern och därefter kan du fortsätta med att ansluta till NFS-servern från AKS-klustret.
När du har skapat den virtuella Linux-datorn kopierar du filen som skapades i föregående steg från den lokala datorn till den virtuella datorn med följande kommando:
scp /path/to/nfs-server-setup.sh username@vm-ip-address:/home/{username}
När filen har kopierats över öppnar du en SSH-anslutning (Secure Shell) till den virtuella datorn och kör följande kommando:
sudo ./nfs-server-setup.sh
Om körningen misslyckas på grund av ett nekad behörighet anger du körningsbehörighet för alla genom att köra följande kommando:
chmod +x ~/nfs-server-setup.sh
Ansluta AKS-kluster till NFS Server
Du kan ansluta till NFS-servern från AKS-klustret genom att etablera en beständig volym och ett beständiga volymanspråk som anger hur du får åtkomst till volymen. Det är nödvändigt att ansluta de två resurserna i samma eller peer-kopplade virtuella nätverk. Information om hur du konfigurerar klustret i samma virtuella nätverk finns i: Skapa AKS-kluster i ett befintligt virtuellt nätverk.
När båda resurserna finns på samma virtuella eller peerkopplade virtuella nätverk etablerar du en beständig volym och ett beständiga volymanspråk i AKS-klustret. Containrarna kan sedan montera NFS-enheten i sin lokala katalog.
Skapa ett YAML-manifest med namnet pv-azurefilesnfs.yaml med en PersistentVolume. Till exempel:
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
Ersätt värdena för NFS_INTERNAL_IP, NFS_NAME och NFS_EXPORT_FILE_PATH med de faktiska inställningarna från NFS-servern.
Skapa ett YAML-manifest med namnet pvc-azurefilesnfs.yaml med en PersistentVolumeClaim som använder PersistentVolume. Till exempel:
Viktigt!
storageClassName-värdet måste förbli en tom sträng, annars fungerar inte anspråket.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: NFS_NAME spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 1Gi selector: matchLabels: type: nfs
Ersätt värdet för NFS_NAME med den faktiska inställningen från NFS-servern.
Felsökning
Om du inte kan ansluta till servern från ditt AKS-kluster kan problemet vara den exporterade katalogen eller dess överordnade, som inte har tillräcklig behörighet för att komma åt den virtuella NFS Server-datorn.
Kontrollera att både exportkatalogen och dess överordnade katalog har 777 behörigheter.
Du kan kontrollera behörigheter genom att köra följande kommando och katalogerna ska ha behörigheten "drwxrwxrwx" :
ls -l
Nästa steg
- För tillhörande metodtips, se Metodtips för lagring och säkerhetskopior i AKS.
- Mer information om hur du konfigurerar NFS-servern eller om du vill felsöka problem finns i följande självstudie i självstudien om Ubuntu-communityns NFS
Azure Kubernetes Service