Azure Kubernetes Service (AKS) ile el ile Linux NFS (Ağ Dosya Sistemi) Sunucusu oluşturma ve kullanma

Kapsayıcılar arasında veri paylaşımı genellikle kapsayıcı tabanlı hizmetlerin ve uygulamaların gerekli bileşenlerinden biridir. Genellikle dış kalıcı bir birimde aynı bilgilere erişmesi gereken çeşitli podlarınız vardır. Azure Dosyalar bir seçenek olsa da, Azure VM'de NFS Sunucusu oluşturmak başka bir kalıcı paylaşılan depolama biçimidir.

Bu makalede, Azure Ubuntu sanal makinesinde NFS Sunucusu oluşturma ve aks kümenizi bu paylaşılan dosya sistemine kalıcı birim olarak erişimle ayarlama adımları gösterilmektedir.

Başlamadan önce

Bu makalede, bu yapılandırmayı desteklemek için aşağıdakilere sahip olduğunuz varsayılır:

  • Var olan bir AKS kümesi. AKS kümeniz yoksa, AKS'nin kurumsal ölçekli bir uygulamasını tasarlama konusunda rehberlik için bkz . AKS tasarımınızı planlama.
  • AKS kümenizin NFS Sunucusu ile aynı veya eşlenmiş Azure sanal ağında (VNet) olması gerekir. Küme, NFS Sunucusu VM'nizle aynı sanal ağ olabilecek mevcut bir sanal ağda oluşturulmalıdır. Mevcut bir sanal ağ ile yapılandırma adımları şu makalelerde açıklanmıştır: var olan VNET'te AKS Kümesi oluşturma ve sanal ağları VNET eşlemesi ile bağlama.
  • Sürüm 18.04 veya üzerini çalıştıran bir Azure Ubuntu Linux sanal makinesi . Azure'da Linux VM dağıtmak için bkz . Linux VM'leri oluşturma ve yönetme.

ÖNCE AKS kümenizi dağıtırsanız Azure, Azure Ubuntu VM'nizi dağıtırken sanal ağ ayarlarını otomatik olarak doldurur ve Ubuntu VM'sini aynı sanal ağda ilişkilendirer. Bunun yerine eşlenmiş ağlarla çalışmak istiyorsanız yukarıdaki belgelere bakın.

NFS Sunucusunu sanal makineye dağıtma

  1. Azure Ubuntu sanal makinesinde bir NFS Sunucusu dağıtmak için aşağıdaki Bash betiğini kopyalayın ve yerel makinenize kaydedin. AKS_SUBNET değişkeninin değerini AKS kümenizden doğru değerle değiştirin; aksi takdirde, belirtilen varsayılan değer NFS Sunucunuzu tüm bağlantı noktalarına ve bağlantılara açar. Bu makalede, dosya olarak adlandırılır 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
    

    Betik, NFS Sunucusu'nun yeniden başlatılmasını başlatır ve daha sonra AKS kümenizden NFS Sunucusuna bağlanmaya devam edebilirsiniz.

  2. Linux VM'nizi oluşturduktan sonra, aşağıdaki komutu kullanarak önceki adımda oluşturulan dosyayı yerel makinenizden VM'ye kopyalayın:

    scp /path/to/nfs-server-setup.sh username@vm-ip-address:/home/{username}
    
  3. Dosya kopyalandıktan sonra VM'ye güvenli bir kabuk (SSH) bağlantısı açın ve aşağıdaki komutu yürütun:

    sudo ./nfs-server-setup.sh
    

    Yürütme, izin reddedildi hatası nedeniyle başarısız olursa, aşağıdaki komutu çalıştırarak tümü için yürütme iznini ayarlayın:

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

AKS kümesini NFS Sunucusuna Bağlan

Birime nasıl erişildiğini belirten kalıcı bir birim ve kalıcı birim talebi sağlayarak AKS kümenizden NFS Sunucusuna bağlanabilirsiniz. İki kaynağın aynı veya eşlenmiş sanal ağlarda Bağlan gereklidir. Kümenin aynı sanal ağda nasıl ayarlandığını öğrenmek için bkz. Mevcut sanal ağda AKS Kümesi oluşturma.

Her iki kaynak da aynı sanal veya eşlenmiş sanal ağa eklendikten sonra AKS Kümenizde kalıcı bir birim ve kalıcı birim talebi sağlayın. Kapsayıcılar daha sonra NFS sürücüsünü yerel dizinlerine bağlayabilir.

  1. PersistentVolume ile pv-azurefilesnfs.yaml adlı bir YAML bildirimi oluşturun. Örneğin:

    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
    

    NFS_INTERNAL_IP, NFS_NAME ve NFS_EXPORT_FILE_PATH değerlerini NFS Sunucunuzdaki gerçek ayarlarla değiştirin.

  2. PersistentVolumeClaim kullanan bir PersistentVolumeClaim ile pvc-azurefilesnfs.yaml adlı bir YAML bildirimi oluşturun. Örneğin:

    Önemli

    storageClassName değerinin boş bir dize olarak kalması gerekir, aksi durumda talep çalışmaz.

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

    NFS_NAME değerini NFS Sunucunuzdaki gerçek ayar ile değiştirin.

Sorun giderme

AKS kümenizden sunucuya bağlanamıyorsanız, sorun dışarı aktarılan dizin veya üst öğesi olabilir ve NFS Sunucusu VM'sine erişmek için yeterli izinlere sahip olmayabilir.

Hem dışarı aktarma dizininize hem de üst dizinine 777 izin verilip verilmediğini denetleyin.

Aşağıdaki komutu çalıştırarak izinleri denetleyebilirsiniz ve dizinlerin 'drwxrwxrwx' izinleri olmalıdır:

ls -l

Sonraki adımlar