Linux NFS (hálózati fájlrendszer) kiszolgáló manuális létrehozása és használata az Azure Kubernetes Service-szel (AKS)

Az adatok tárolók közötti megosztása gyakran szükséges összetevője a tárolóalapú szolgáltatásoknak és alkalmazásoknak. Általában különböző podokkal rendelkezik, amelyeknek hozzáféréssel kell rendelkezniük egy külső állandó kötet ugyanazon információihoz. Bár az Azure Files egy lehetőség, az NFS-kiszolgáló létrehozása egy Azure-beli virtuális gépen az állandó megosztott tárterület egy másik formája.

Ez a cikk bemutatja, hogyan hozhat létre NFS-kiszolgálót egy Azure Ubuntu virtuális gépen, és hogyan állíthatja be az AKS-fürtöt állandó kötetként a megosztott fájlrendszerhez való hozzáféréssel.

Mielőtt elkezdené

Ez a cikk feltételezi, hogy a következőkkel támogatja ezt a konfigurációt:

Ha először telepíti az AKS-fürtöt, az Azure automatikusan feltölti a virtuális hálózati beállításokat az Azure Ubuntu virtuális gép üzembe helyezésekor, és társítja az Ubuntu virtuális gépet ugyanazon a virtuális hálózaton. Ha inkább társhálózatokkal szeretne dolgozni, tekintse meg a fenti dokumentációt.

Az NFS-kiszolgáló üzembe helyezése virtuális gépen

  1. Ha NFS-kiszolgálót szeretne üzembe helyezni az Azure Ubuntu virtuális gépen, másolja a következő Bash-szkriptet, és mentse a helyi gépre. Cserélje le a AKS_SUBNET változó értékét az AKS-fürt megfelelő értékére, ellenkező esetben az alapértelmezett érték megnyitja az NFS-kiszolgálót az összes porton és kapcsolaton. Ebben a cikkben a fájl neve 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
    

    A szkript elindítja az NFS-kiszolgáló újraindítását, majd folytathatja a csatlakozást az NFS-kiszolgálóhoz az AKS-fürtből.

  2. A Linux rendszerű virtuális gép létrehozása után másolja az előző lépésben létrehozott fájlt a helyi gépről a virtuális gépre az alábbi paranccsal:

    scp /path/to/nfs-server-setup.sh username@vm-ip-address:/home/{username}
    
  3. A fájl átmásolása után nyisson meg egy biztonságos rendszerhéj-kapcsolatot (SSH) a virtuális géphez, és hajtsa végre a következő parancsot:

    sudo ./nfs-server-setup.sh
    

    Ha a végrehajtás engedély megtagadási hiba miatt meghiúsul, állítsa be a végrehajtási engedélyt mindenki számára az alábbi parancs futtatásával:

    chmod +x ~/nfs-server-setup.sh
    

AKS-fürt Csatlakozás NFS-kiszolgálóra

Az NFS-kiszolgálóhoz az AKS-fürtből csatlakozhat egy állandó kötet és egy állandó kötet jogcím kiosztásával, amely meghatározza a kötet elérését. Csatlakozás a két erőforrást ugyanabban a vagy társhálózatban lévő virtuális hálózatokban kell használni. Ha tudni szeretné, hogyan állíthatja be a fürtöt ugyanabban a virtuális hálózatban, olvassa el a következő témakört: AKS-fürt létrehozása a meglévő virtuális hálózaton.

Ha mindkét erőforrás ugyanazon a virtuális vagy társhálózaton található, állíts ki egy állandó kötetet és egy állandó mennyiségi jogcímet az AKS-fürtben. A tárolók ezután csatlakoztathatják az NFS-meghajtót a helyi címtárukhoz.

  1. Hozzon létre egy pv-azurefilesnfs.yaml nevű YAML-jegyzékfájlt egy PersistentVolume használatával. Példa:

    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
    

    Cserélje le a NFS_INTERNAL_IP, NFS_NAME és NFS_EXPORT_FILE_PATH értékeit az NFS-kiszolgáló tényleges beállításaira.

  2. Hozzon létre egy PVC-azurefilesnfs.yaml nevű YAML-jegyzékfájlt a PersistentVolume-t használó PersistentVolumeClaim használatával. Példa:

    Fontos

    A storageClassName értéknek üres sztringnek kell maradnia, vagy a jogcím nem fog működni.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: NFS_NAME
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ""
      resources:
        requests:
          storage: 1Gi
      selector: 
        matchLabels:
          type: nfs
    

    Cserélje le a NFS_NAME értékét az NFS-kiszolgáló tényleges beállítására.

Hibaelhárítás

Ha nem tud csatlakozni a kiszolgálóhoz az AKS-fürtből, a probléma lehet az exportált könyvtár vagy annak szülője, és nem rendelkezik megfelelő engedélyekkel az NFS-kiszolgáló virtuális gépének eléréséhez.

Ellenőrizze, hogy az exportálási címtár és a szülőkönyvtár 777 engedélyhez van-e adva.

Az engedélyek ellenőrzéséhez futtassa a következő parancsot, és a címtáraknak "drwxrwxrwx" engedélyekkel kell rendelkezniük:

ls -l

Következő lépések