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
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.
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}
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ğlama
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ğlara bağlanması gerekir. 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.
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.
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
- İlişkili en iyi yöntemler için bkz . AKS'de depolama ve yedeklemeler için en iyi yöntemler.
- NFS Sunucunuzu ayarlama hakkında daha fazla bilgi edinmek veya sorunlarda hata ayıklamaya yardımcı olmak için Ubuntu community NFS Öğreticisi'nin aşağıdaki öğreticisine bakın
Azure Kubernetes Service