Baca dalam bahasa Inggris

Bagikan melalui


Membuat serta menggunakan volume Server Linux NFS (Network File System) secara manual dengan Azure Kubernetes Service (AKS)

Berbagi data antar kontainer merupakan komponen penting dari layanan dan aplikasi berbasis kontainer. Anda memiliki berbagai pod yang memerlukan akses ke informasi yang sama terkait volume persisten eksternal. Meskipun Azure Files adalah opsi, membuat NFS Server di Azure VM adalah bentuk lain dari penyimpanan bersama persisten.

Artikel ini akan menunjukkan kepada Anda cara untuk membuat Server NFS pada komputer virtual Azure Ubuntu, dan menyiapkan kluster AKS Anda dengan akses ke sistem file bersama ini sebagai volume persisten.

Sebelum Anda mulai

Artikel ini mengasumsikan bahwa Anda memiliki hal berikut untuk mendukung konfigurasi ini:

Jika Anda menyebarkan kluster AKS terlebih dahulu, Azure akan mengisi pengaturan jaringan virtual secara otomatis saat menyebarkan Azure Ubuntu VM Anda, mengaitkan VM Ubuntu pada VNet yang sama. Jika Anda ingin bekerja dengan jaringan yang di-peering sebagai gantinya, lihat dokumentasi di atas.

Menyebarkan Server NFS pada Mesin Virtual

  1. Untuk menyebarkan Server NFS pada mesin virtual Azure Ubuntu, salin skrip Bash berikut dan simpan ke mesin lokal Anda. Ganti nilai untuk variabel AKS_SUBNET dengan yang benar dari kluster AKS Anda, jika tidak, nilai default yang ditentukan akan membuka Server NFS Anda ke semua port dan koneksi. Di dalam artikel ini, file ini bernama 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
    

    Skrip memulai hidupkan ulang Server NFS, dan setelah itu Anda dapat melanjutkannya dengan menyambungkan ke Server NFS dari kluster AKS Anda.

  2. Setelah membuat mesin virtual Linux Anda, salin file yang dibuat pada langkah sebelumnya dari mesin lokal Anda ke mesin virtual menggunakan perintah berikut:

    scp /path/to/nfs-server-setup.sh username@vm-ip-address:/home/{username}
    
  3. Setelah file disalin, buka koneksi secure shell (SSH) ke VM kemudian jalankan perintah berikut:

    sudo ./nfs-server-setup.sh
    

    Jika eksekusi gagal karena kegagalan izin, tetapkan izin eksekusi untuk semua dengan cara menjalankan perintah berikut ini:

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

Menghubungkan Kluster AKS pada Server NFS

Anda dapat terhubung ke Server NFS dari kluster AKS Anda dengan menyediakan volume persisten dan klaim volume persisten yang menentukan cara mengakses volume. Menghubungkan dua layanan dalam jaringan virtual yang sama atau satu peer harus dilakukan. Untuk mempelajari cara menyiapkan kluster pada VNet yang sama, lihat: Membuat Kluster AKS pada VNet yang telah ada.

Setelah kedua sumber daya berada di VNet virtual atau serekan yang sama, provisikan volume persisten dan klaim volume persisten di Kluster AKS Anda. Kontainer kemudian dapat memasang drive NFS ke direktori lokal mereka.

  1. Buat manifes YAML bernama pv-azurefilesnfs.yaml dengan PersistentVolume. Contohnya:

    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
    

    Ganti nilai untuk NFS_INTERNAL_IP, NFS_NAME dan NFS_EXPORT_FILE_PATH dengan pengaturan aktual dari Server NFS.

  2. Buat manifes YAML bernama pvc-azurefilesnfs.yaml dengan PersistentVolumeClaim yang menggunakan PersistentVolume. Contohnya:

    Penting

    "storageClassName" harus tetap menjadi untai kosong, atau klaim tidak akan berfungsi.

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

    Ganti nilai NFS_NAME dengan pengaturan aktual dari Server NFS Anda.

Pemecahan Masalah

Jika Anda tidak dapat tersambung pada server dari kluster Azure Kubernetes Service, masalahnya kemungkinan besar adalah direktori yang diekspor, atau induknya, tidak memiliki izin yang memadai untuk mengakses server mesin virtual NFS Anda.

Periksa apakah direktori ekspor dan direktori induknya diberikan izin 777.

Anda dapat memeriksa izin dengan menjalankan perintah berikut ini. Selain itu, pastikan direktori memiliki izin 'drwxrwxrwx':

ls -l

Langkah berikutnya