Sdílet prostřednictvím


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í:

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č

  1. 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.

  2. 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}
    
  3. 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.

  1. 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.

  2. 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