1. 程式人生 > 其它 >AKS (7) Azure AKS訪問Azure File NFS Windows Azure Platform 系列文章目錄

AKS (7) Azure AKS訪問Azure File NFS Windows Azure Platform 系列文章目錄

  《Windows Azure Platform 系列文章目錄

 

  今天遇到了這個需求,在這裡記錄一下。

 

  Azure Blob Storage 可以通過NFS協議,提供給Azure AKS使用。筆者在這裡使用的Azure File NFS 4協議。

  整體部署的場景如下:

  1.建立VNet環境,包含3個subnet

  (1)子網aks-subnet,用來建立AKS叢集

  (2)子網vm-subnet,用來建立Linux VM

  (3)子網nfs-subnet,用來建立nfs內網IP地址

  2.建立Azure Blob Storage和Azure File Sharing

  3.建立Private DNS Zone,對azure File增加內網DNS記錄

  

  1.Azure CLI建立Azure資源的指令碼如下:

  https://github.com/leizhang1984/K8S/blob/main/1.19/16.AzureNFS/azurenfs.txt

az cloud set -n AzureChinaCloud
az login

rgname=leiaks-rg2
vnetname=aks_vnet
location=chinaeast2

#create resource group
az group create -n $rgname -l $location

#create azure vnet,including 
3 subnets az network vnet create -g $rgname -n $vnetname \ --address-prefixes 10.0.0.0/8 --subnet-name aks-subnet \ --subnet-prefixes 10.240.0.0/16 #subnet for VM az network vnet subnet create -g $rgname --vnet-name $vnetname \ -n vm-subnet --address-prefixes 10.241.0.0/24 #subnet for nfs az network vnet subnet create
-g $rgname --vnet-name $vnetname \ -n nfs-subnet --address-prefixes 10.241.1.0/24 #create storage account storageaccountname=leiaksnfsstorage02 az storage account create \ --name $storageaccountname \ --resource-group $rgname \ --location $location \ --sku Premium_LRS \ --kind FileStorage #deny https only az storage account update --https-only false \ --name $storageaccountname --resource-group $rgname #create azure file storage with 100GB quota az storage share-rm create \ --storage-account $storageaccountname \ --enabled-protocol NFS \ --root-squash RootSquash \ --name "aksnfsshare" \ --quota 100 #create private endpoint subnetid=`az network vnet subnet show \ --resource-group $rgname \ --vnet-name $vnetname \ --name nfs-subnet \ --query "id" -o tsv ` storageaccountid=`az storage account show \ --resource-group $rgname \ --name $storageaccountname \ --query "id" -o tsv ` az network vnet subnet update \ --ids $subnetid \ --disable-private-endpoint-network-policies endpoint=`az network private-endpoint create \ --resource-group $rgname \ --name "$storageaccountname-privateendpoint" \ --location $location \ --subnet $subnetid \ --private-connection-resource-id $storageaccountid \ --group-id "file" \ --connection-name "$storageaccountname-connection" \ --query "id" -o tsv ` #create private dns zone privatednszonename="privatelink.file.core.chinacloudapi.cn" vnetid=`az network vnet show \ --resource-group $rgname \ --name $vnetname \ --query "id" -o tsv` dnszoneid=`az network private-dns zone create \ --resource-group $rgname \ --name $privatednszonename \ --query "id" -o tsv` az network private-dns link vnet create \ --resource-group $rgname \ --zone-name $privatednszonename \ --name "$vnetname-dnslink" \ --virtual-network $vnetid \ --registration-enabled false privateendpointnic=`az network private-endpoint show \ --ids $endpoint \ --query "networkInterfaces[0].id" -o tsv ` endpointip=`az network nic show \ --ids $privateendpointnic \ --query "ipConfigurations[0].privateIpAddress" -o tsv ` az network private-dns record-set a create \ --resource-group $rgname \ --zone-name $privatednszonename \ --name $storageaccountname az network private-dns record-set a add-record \ --resource-group $rgname \ --zone-name $privatednszonename \ --record-set-name $storageaccountname \ --ipv4-address $endpointip

 

  2.執行完畢後,Azure File截圖如下:

  

  

  3.接下來,在子網vm-subnet裡,建立Cent OS VM,截圖略。

  SSH登入到Azure CentOS VM,執行下面的指令碼。具體指令碼可以參考Azure Portal截圖:

  

 

  4.VM掛載NFS成功後,截圖如下:

  

  請注意,訪問leiaksnfsstorage02.file.core.chinacloudapi.cn這個地址,是通過Private DNS Zone解析的,是內網IP地址

  

 

  5.我們通過Azure VM,在這個NFS裡手動建立1個檔案,如下圖:

 

  6.隨後我們在aks-subnet裡,建立AKS,網路我這裡設定為CNI網路,步驟略。

  7.修改下面的yaml file,主要修改的內容為下圖紅色部分

  修改完畢後,執行kubectl apply -f yaml。步驟略。

  

  

  8.最後我們通過kubectl exec -it myapp – sh ,通過互動式命令訪問這個pod

  檢視pod掛載的路徑叫/var/nfs,可以檢視到通過Linux vm建立的檔案file1.txt。如下圖: