linux nfs spec,创建 NFS Ubuntu Linux 服务器卷 - Azure Kubernetes Service | Microsoft Docs
您現在訪問的是微軟AZURE全球版技術文檔網站,若需要訪問由世紀互聯運營的MICROSOFT AZURE中國區技術文檔網站,請訪問 https://docs.azure.cn.
在 Azure Kubernetes 服務 (AKS) 中手動創建和使用 NFS(網絡文件系統)Linux 服務器卷
4/25/2019
本文內容
基于容器的服務和應用程序往往需要在容器之間共享數據。 通常,會有各種 Pod 需要訪問外部持久性卷上的相同信息。
Azure 文件是一個選項,而在 Azure VM 上創建的 NFS 服務器是持久性共享存儲的另一種形式。
本文將介紹如何在 Ubuntu 虛擬機上創建 NFS 服務器。 另外,將介紹 AKS 容器如何訪問此共享文件系統。
準備階段
本文假設你已有一個 AKS 群集。 如果需要 AKS 群集,請參閱 AKS 快速入門使用 Azure CLI 或使用 Azure 門戶。
AKS 群集需要駐留在 NFS 服務器所在的相同或對等互連的虛擬網絡中。 該群集必須在現有的 VNET 中創建,該 VNET 可以是 VM 所在的同一 VNET。
本文還假設你已創建一個 Ubuntu Linux 虛擬機(例如 18.04 LTS)。 可以使用任意設置和大小,并可以通過 Azure 部署該虛擬機。 有關 Linux 快速入門,請參閱 Linux VM 管理。
如果你是首次部署 AKS 群集,在部署 Ubuntu 計算機時,Azure 會自動填充虛擬網絡字段,使該計算機駐留在同一 VNET 中。 但是,如果你想要改用對等互連網絡,請參閱上述文檔。
將 NFS 服務器部署到虛擬機
下面是用于在 Ubuntu 虛擬機中設置 NFS 服務器的腳本:
#!/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
服務器將會重啟(由于使用了該腳本),你可以將 NFS 服務器裝載到 AKS。
重要
請務必將 AKS_SUBNET 替換為群集中的適當子網;如果使用“*”,則會在 NFS 服務器中打開所有端口和連接。
創建 VM 后,將上述腳本復制到某個文件中。 然后可以使用以下命令,將該腳本從本地計算機或其所在的任意位置移到 VM 中:
scp /path/to/script_file username@vm-ip-address:/home/{username}
將腳本移到 VM 后,可以通過 SSH 連接到 VM,并通過以下命令執行該腳本:
sudo ./nfs-server-setup.sh
如果腳本由于權限被拒絕錯誤而執行失敗,請通過以下命令設置執行權限:
chmod +x ~/nfs-server-setup.sh
將 AKS 群集連接到 NFS 服務器
可以通過預配一個持久性卷,以及一個指定如何訪問該卷的持久性卷聲明,將 NFS 服務器連接到群集。
必須連接相同或對等互連的虛擬網絡中的兩個服務。 下面提供了有關在同一 VNET 中設置群集的說明:在現有 VNET 中創建 AKS 群集
將這些服務放入同一虛擬網絡(或對等互連的虛擬網絡)后,需要在 AKS 群集中預配持久性卷和持久性卷聲明。 然后,容器可將 NFS 驅動器裝載到其本地目錄。
下面是持久性卷的示例 Kubernetes 定義(此定義假設群集和 VM 位于同一 VNET 中):
apiVersion: v1
kind: PersistentVolume
metadata:
name:
labels:
type: nfs
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server:
path:
請將 NFS_INTERNAL_IP、NFS_NAME 和 NFS_EXPORT_FILE_PATH 替換為 NFS 服務器信息。
還需要一個持久性卷聲明文件。 下面是該文件的內容示例:
重要
"storageClassName" 需保留為空字符串,否則聲明不起作用。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name:
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 1Gi
selector:
matchLabels:
type: nfs
故障排除
如果無法從群集連接到服務器,問題的原因可能是導出的目錄或其父級沒有足夠的權限,因此無法訪問服務器。
請檢查導出的目錄及其父目錄是否具有 777 權限。
可運行以下命令來檢查權限,目錄應有 'drwxrwxrwx' 權限:
ls -l
詳細信息
如需完整的演練,或者在調試 NFS 服務器設置時需要幫助,請查看以下深度教程:
后續步驟
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的linux nfs spec,创建 NFS Ubuntu Linux 服务器卷 - Azure Kubernetes Service | Microsoft Docs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: caany边缘检测matlab,自适应c
- 下一篇: mysql同表字段前4位复制_MySQL