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.
Artikel ini mengasumsikan bahwa Anda memiliki hal berikut untuk mendukung konfigurasi ini:
- Kluster AKS yang sudah ada. Jika Anda tidak memiliki kluster AKS, untuk panduan tentang merancang implementasi AKS skala perusahaan, lihat Merencanakan desain AKS Anda.
- Kluster AKS Anda harus berada pada jaringan virtual Azure (VNet) yang sama atau di-peering dengan NFS Server. Kluster harus dibuat pada VNET yang ada, yang dapat menjadi VNET yang sama dengan mesin virtual Anda. Langkah untuk mengonfigurasi dengan VNET yang telah ada dijelaskan dalam dokumentasi: membuat Kluster AKS di VNET yang sekarang serta menghubungkan jaringan virtual dengan VNET peering.
- Mesin virtual Linux Azure Ubuntu yang menjalankan versi 18.04 atau setelahnya. Untuk menyebarkan mesin virtual Linux pada Azure, lihat Membuat dan mengelola mesin virtual Linux.
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.
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.
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}
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
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.
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.
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.
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
- Untuk praktik terbaik terkait, lihat Praktik terbaik untuk penyimpanan dan pencadangan di AKS.
- Untuk mempelajari lebih lanjut mengenai pengaturan Server NFS Anda atau untuk membantu mengatasi masalah debug, lihat tutorial berikut ini dari komunitas Ubuntu NFS Tutorial
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: