Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Persistent volume mewakili sebuah bagian penyimpanan yang telah disiapkan untuk penggunaan dengan pod Kubernetes. Anda dapat menggunakan volume persisten dengan satu atau banyak pod, dan dapat disediakan secara dinamis atau statis. Jika beberapa pod memerlukan akses bersamaan ke volume penyimpanan yang sama, Anda dapat menggunakan Azure Files untuk terhubung menggunakan protokol Server Message Block (SMB). Artikel ini menunjukkan cara membuat berbagi file Azure secara dinamis untuk digunakan oleh beberapa pod di kluster Azure Kubernetes Service (AKS).
Artikel ini menunjukkan cara:
- Bekerja dengan volume persisten dinamis (PV) dengan menginstal driver Antarmuka Penyimpanan Kontainer (CSI) dan secara dinamis membuat satu atau beberapa berkas berbagi Azure untuk disambungkan ke pod.
- Bekerja dengan PV statis dengan membuat satu atau beberapa berbagi file Azure, atau menggunakan yang sudah ada dan melampirkannya ke pod.
Untuk informasi lebih lanjut tentang volume Kubernetes, lihat Opsi penyimpanan untuk aplikasi di AKS.
Sebelum Anda mulai
- Anda memerlukan akun penyimpanan Azure.
- Pastikan Anda memiliki Azure CLI versi 2.0.59 atau yang lebih baru yang diinstal dan dikonfigurasi. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. - Saat memilih antara berbagi file standar dan premium, penting bagi Anda untuk memahami model provisi dan persyaratan pola penggunaan yang diharapkan yang Anda rencanakan untuk dijalankan di Azure Files. Untuk informasi selengkapnya, lihat Memilih tingkat performa Azure Files berdasarkan pola penggunaan.
Memprovisikan volume secara dinamis
Bagian ini memberikan panduan kepada administrator kluster yang ingin menyediakan satu atau beberapa volume persisten, termasuk detail satu atau beberapa share pada Azure Files. Klaim volume persisten (PVC) menggunakan objek kelas penyimpanan untuk menyediakan berbagi file Azure Files secara dinamis.
Parameter kelas penyimpanan untuk PersistentVolumes dinamis
Tabel berikut menyertakan parameter yang dapat Anda gunakan untuk menentukan kelas penyimpanan kustom untuk PersistentVolumeClaim Anda.
Nama | Makna | Nilai yang Tersedia | Wajib | Nilai bawaan |
---|---|---|---|---|
tingkatAksesAkun | Tingkat akses untuk akun penyimpanan | Akun standar dapat memilih Hot atau Cool , dan akun Premium hanya dapat memilih Premium . |
Tidak | Kosong. Gunakan pengaturan default untuk jenis akun penyimpanan yang berbeda. |
accountQuota | Membatasi kuota untuk akun. Anda dapat menentukan kuota maksimum dalam GB (102400GB secara default). Jika akun melebihi kuota yang ditentukan, pengemudi tidak akan memilih akun tersebut. | Tidak | 102400 |
|
izinkanAksesPublikBlob | Mengizinkan atau melarang akses publik ke semua blob atau kontainer untuk akun penyimpanan yang dibuat oleh driver. |
true atau false |
Tidak | false |
nonaktifkanKebijakanPenahananPenghapusan | Tentukan apakah nonaktifkan DeleteRetentionPolicy untuk akun penyimpanan yang dibuat oleh driver. |
true atau false |
Tidak | false |
folderName | Tentukan nama folder di berbagi file Azure. | Nama folder yang sudah ada di berbagi file Azure. | Tidak | Jika nama folder tidak ada di berbagi file, pemasangan gagal. |
dapatkanAkunTerbaru | Menentukan apakah akan mendapatkan kunci akun terbaru berdasarkan waktu pembuatan. Driver ini mendapatkan kunci pertama secara default. |
true atau false |
Tidak | false |
lokasi | Tentukan wilayah Azure dari akun penyimpanan Azure. | Contohnya,eastus . |
Tidak | Jika kosong, driver menggunakan nama lokasi yang sama dengan kluster AKS saat ini. |
matchTags | Cocokkan tag saat driver mencoba menemukan akun penyimpanan yang sesuai. |
true atau false |
Tidak | false |
tipe titik akhir jaringan | Tentukan jenis titik akhir jaringan untuk akun penyimpanan yang dibuat oleh driver. Jika privateEndpoint ditentukan, titik akhir privat dibuat untuk akun penyimpanan. Untuk kasus lain, titik akhir layanan dibuat secara default. |
"",privateEndpoint |
Tidak | "" |
protokol | Tentukan protokol berbagi file. |
smb , nfs |
Tidak | smb |
requireInfraEncryption | Tentukan apakah layanan menerapkan lapisan enkripsi sekunder dengan kunci yang dikelola platform untuk data yang disimpan pada akun penyimpanan yang dibuat oleh pengemudi. |
true atau false |
Tidak | false |
KelompokSumberDaya | Tentukan grup sumber daya untuk Disk Azure. | Nama grup sumber daya yang ada | Tidak | Jika kosong, driver menggunakan nama grup sumber daya yang sama dengan kluster AKS saat ini. |
pilihAkunYangCocokSecaraAcak | Menentukan apakah akan memilih akun yang cocok secara acak. Secara default, driver selalu memilih akun pencocokan pertama dalam urutan alfabet (Catatan: Driver ini menggunakan cache pencarian akun, yang menghasilkan distribusi pembuatan file yang tidak merata di beberapa akun). |
true atau false |
Tidak | false |
server | Tentukan alamat server akun penyimpanan Azure. | Alamat server yang ada, misalnya accountname.privatelink.file.core.windows.net . |
Tidak | Jika kosong, driver menggunakan default accountname.file.core.windows.net atau alamat akun sovereign cloud lainnya. |
shareAccessTier | Tingkat akses untuk berbagi file | Akun tujuan umum v2 dapat memilih antara TransactionOptimized (default), Hot , dan Cool . Jenis akun penyimpanan premium hanya untuk berbagi file. |
Tidak | Kosong. Gunakan pengaturan default untuk jenis akun penyimpanan yang berbeda. |
namaBerbagi | Tentukan nama berbagi file Azure. | Nama berbagi file Azure yang sudah ada atau yang baru. | Tidak | Jika kosong, driver menghasilkan nama berbagi file Azure. |
prefiksNamaBagian | Tentukan prefix nama untuk berbagi file Azure yang dihasilkan oleh driver. | Nama berbagi hanya boleh berisi huruf kecil, angka, tanda hubung, dan panjang harus kurang dari 21 karakter. | Tidak | |
skuName | Jenis akun penyimpanan Azure Files (alias: storageAccountType ) |
Standard_LRS , Standard_ZRS , Standard_GRS , Standard_RAGRS , Standard_RAGZRS , Premium_LRS , Premium_ZRS |
Tidak | Standard_LRS Ukuran berbagi file minimum untuk jenis akun Premium adalah 100 GB. Jenis akun ZRS didukung di wilayah terbatas. Berbagi file NFS hanya mendukung jenis akun Premium. |
akun penyimpanan | Tentukan nama akun penyimpanan Azure Anda. | namaAkunPenyimpanan (storageAccountName) | Tidak- | Ketika nama akun penyimpanan tertentu tidak disediakan, driver akan mencari akun penyimpanan yang sesuai yang cocok dengan pengaturan akun dalam grup sumber daya yang sama. Jika gagal menemukan akun penyimpanan yang cocok, maka akan dibuat akun baru. Namun, jika nama akun penyimpanan ditentukan, akun penyimpanan harus sudah ada. |
storageEndpointSuffix | Tentukan akhiran titik akhir penyimpanan Azure. |
core.windows.net , core.chinacloudapi.cn , dll. |
Tidak | Jika kosong, driver menggunakan akhiran titik akhir penyimpanan default sesuai dengan lingkungan cloud. Contohnya,core.windows.net . |
tag | Tag dibuat di akun penyimpanan baru. | Format tag: 'foo=aaa,bar=bbb' | Tidak | "" |
--- | Parameter berikut hanya untuk protokol SMB | --- | --- | |
ID berlangganan | Tentukan ID langganan Azure di mana file share Azure dibuat. | ID langganan Azure | Tidak | Jika tidak kosong, resourceGroup harus disediakan. |
kunciAkunToko | Tentukan apakah akan menyimpan kunci akun ke secret Kubernetes. |
true atau false false berarti driver menggunakan identitas kubelet untuk mendapatkan kunci akun. |
Tidak | true |
namaRahasia | Tentukan nama rahasia untuk menyimpan kunci akun. | Tidak | ||
ruangNamaRahasia | Tentukan namespace rahasia untuk menyimpan kunci akun. Catatan: Jika secretNamespace tidak ditentukan, rahasia dibuat di namespace yang sama dengan pod. |
default ,kube-system , dll. |
Tidak | Namespace PVC, misalnya csi.storage.k8s.io/pvc/namespace |
useDataPlaneAPI | Tentukan apakah akan menggunakan DATA Plane API untuk berbagi file create/delete/resize, yang dapat menyelesaikan masalah pembatasan SRP API karena API data plane hampir tidak memiliki batas, sementara itu akan gagal ketika ada firewall atau pengaturan Vnet pada akun penyimpanan. |
true atau false |
Tidak | false |
--- | Parameter berikut hanya untuk protokol NFS | --- | --- | |
Izin Pemasangan | Izin untuk folder yang dipasang. Default adalah 0777 . Jika diatur ke 0 , driver tidak melakukan chmod setelah pemasangan |
0777 |
Tidak | |
rootSquashType | Tentukan perilaku root squashing pada saham. Defaultnya adalah NoRootSquash |
AllSquash , NoRootSquash , RootSquash |
Tidak | |
--- | Parameter berikut hanya untuk pengaturan VNet. Misalnya, NFS, titik akhir privat | --- | --- | |
kebijakanPerubahanGrupFS | Menunjukkan cara driver mengubah kepemilikan volume. Pod securityContext.fsGroupChangePolicy diabaikan. |
OnRootMismatch (standar), Always , None |
Tidak | OnRootMismatch |
namaSubjaringan | Nama subnet | Nama subnet yang ada untuk node agen. | Tidak | Jika kosong, driver akan menggunakan nilai subnetName dalam file konfigurasi cloud Azure. |
vnetName | Nama jaringan virtual | Nama jaringan virtual yang ada. | Tidak | jika kosong, driver akan memperbarui semua subnet di bawah jaringan virtual kluster. |
vnetResourceGroup | Tentukan grup sumber daya VNet tempat jaringan virtual ditentukan. | Nama grup sumber daya yang ada. | Tidak | Jika kosong, driver akan menggunakan nilai vnetResourceGroup dalam file konfigurasi cloud Azure. |
1 Jika akun penyimpanan dibuat oleh driver, maka Anda hanya perlu menentukan networkEndpointType: privateEndpoint
parameter di kelas penyimpanan. Driver CSI membuat titik akhir privat dan zona DNS privat (bernama privatelink.file.core.windows.net
) bersama dengan akun. Jika Anda membawa akun penyimpanan Anda sendiri, maka Anda perlu membuat titik akhir privat untuk akun penyimpanan. Jika Anda menggunakan penyimpanan Azure Files di kluster terisolasi jaringan, Anda harus membuat kelas penyimpanan kustom dengan "networkEndpointType: privateEndpoint". Anda dapat mengikuti sampel di bawah ini untuk referensi.
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azurefile-csi
provisioner: file.csi.azure.com
allowVolumeExpansion: true
parameters:
skuName: Premium_LRS # available values: Premium_LRS, Premium_ZRS, Standard_LRS, Standard_GRS, Standard_ZRS, Standard_RAGRS, Standard_RAGZRS
networkEndpointType: privateEndpoint
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- dir_mode=0777 # modify this permission if you want to enhance the security
- file_mode=0777
- mfsymlinks
- cache=strict # https://linux.die.net/man/8/mount.cifs
- nosharesock # reduce probability of reconnect race
- actimeo=30 # reduce latency for metadata-heavy workload
- nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
Buat kelas penyimpanan
Kelas penyimpanan menentukan cara membuat berbagi file Azure. Akun penyimpanan secara otomatis dibuat di grup sumber daya simpul untuk digunakan dengan kelas penyimpanan guna menyimpan share file Azure Files. Pilih salah satu dari SKU redundansi penyimpanan Azure berikut untuk skuName
:
-
Standard_LRS
: Penyimpanan standar redundan lokal (LRS) -
Standard_GRS
: Penyimpanan geo-redundansi standar (GRS) -
Standard_ZRS
: Penyimpanan redundan zona standar (ZRS) -
Standard_RAGRS
: Penyimpanan geo-redundan akses baca standar (RA-GRS) -
Premium_LRS
: Penyimpanan lokal redundan premium (LRS) -
Premium_ZRS
: Penyimpanan redundan zona premium (ZRS)
Catatan
Ukuran minimum untuk berbagi file premium adalah 100GB.
Untuk informasi lebih lanjut tentang kelas penyimpanan Kubernetes untuk Azure Files, lihat Kubernetes Storage Classes.
Buat nama file
azure-file-sc.yaml
dan salin dalam contoh manifes berikut. Untuk informasi selengkapnya tentangmountOptions
, lihat bagian Opsi pemasangan.kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: my-azurefile provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21 allowVolumeExpansion: true mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - actimeo=30 - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks parameters: skuName: Premium_LRS
Buat kelas penyimpanan menggunakan
kubectl apply
perintah .kubectl apply -f azure-file-sc.yaml
Buat klaim volume persisten
Klaim volume persisten (PVC) menggunakan objek kelas penyimpanan untuk menyediakan berbagi file Azure secara dinamis. Anda dapat menggunakan YAML berikut untuk membuat klaim volume persisten berukuran 100 GB dengan akses ReadWriteMany . Untuk informasi selengkapnya tentang mode akses, lihat Volume Persisten Kubernetes.
Buat file bernama
azure-file-pvc.yaml
dan salin dalam YAML berikut. Pastikan cocok denganstorageClassName
kelas penyimpanan yang Anda buat di langkah sebelumnya.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-azurefile spec: accessModes: - ReadWriteMany storageClassName: my-azurefile resources: requests: storage: 100Gi
Catatan
Jika menggunakan
Premium_LRS
SKU untuk kelas penyimpanan Anda, nilai minimum untukstorage
harus100Gi
.Buat klaim volume persisten menggunakan
kubectl apply
perintah .kubectl apply -f azure-file-pvc.yaml
Setelah selesai, pembuatan berbagi file selesai. Sebuah rahasia Kubernetes juga dibuat, yang mencakup informasi koneksi dan kredensial. Anda dapat menggunakan
kubectl get
perintah untuk melihat status PVC:kubectl get pvc my-azurefile
Hasil dari output perintah menyerupai contoh berikut:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-azurefile Bound pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477 100Gi RWX my-azurefile 5m
Menggunakan volume persisten
YAML berikut membuat pod yang menggunakan klaim persisten volume my-azurefile untuk memasang berbagi berkas Azure Files di jalur /mnt/azure. Untuk kontainer Windows Server, tentukan mountPath
menggunakan konvensi jalur Windows, seperti 'D:'.
Buat nama file
azure-pvc-files.yaml
dan salin dalam YAML berikut. PastikanclaimName
sesuai dengan PVC yang Anda buat di langkah sebelumnya.kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: /mnt/azure name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: my-azurefile
Buat pod menggunakan
kubectl apply
perintah .kubectl apply -f azure-pvc-files.yaml
Anda sekarang memiliki pod yang aktif dengan file share Azure Files yang dipasang di direktori /mnt/azure. Konfigurasi ini dapat dilihat saat memeriksa pod Anda menggunakan perintah
kubectl describe
. Contoh output ringkas berikut menunjukkan volume yang dipasang dalam kontainer.Containers: mypod: Container ID: docker://053bc9c0df72232d755aa040bfba8b533fa696b123876108dec400e364d2523e Image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine Image ID: docker-pullable://nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424 State: Running Started: Fri, 01 Mar 2019 23:56:16 +0000 Ready: True Mounts: /mnt/azure from volume (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rv4z (ro) [...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: my-azurefile ReadOnly: false [...]
Opsi pemasangan
Nilai default untuk fileMode
dan dirMode
adalah 0777 untuk Kubernetes versi 1.13.0 ke atas. Jika Anda membuat volume persisten secara dinamis dengan kelas penyimpanan, Anda dapat menentukan opsi pemasangan pada objek kelas penyimpanan. Untuk informasi selengkapnya, lihat Opsi pemasangan. Contoh berikut menetapkan 0777:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: my-azurefile
provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21
allowVolumeExpansion: true
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
- actimeo=30
- nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
parameters:
skuName: Premium_LRS
Catatan
Lokasi untuk mengonfigurasi opsi pemasangan (mountOptions) bergantung pada apakah Anda menyediakan volume persisten dinamis atau statis. Jika Anda secara dinamis menyediakan volume dengan kelas penyimpanan, tentukan opsi pemasangan pada objek kelas penyimpanan (jenis: StorageClass). Jika Anda secara statis menyediakan volume, tentukan opsi pemasangan pada objek PersistentVolume (jenis: PersistentVolume). Jika Anda memasang berbagi file sebagai volume sebaris, tentukan opsi pemasangan pada objek Pod (jenis: Pod).
Menggunakan tag Azure
Untuk detail selengkapnya tentang menggunakan tag Azure, lihat Menggunakan tag Azure di Azure Kubernetes Service (AKS).
Provisi volume secara statis
Bagian ini menyediakan panduan untuk administrator kluster yang ingin membuat satu atau beberapa volume persisten yang menyertakan detail dari berbagi berkas Azure yang sudah ada untuk digunakan dengan tugas.
Parameter provisi statis untuk PersistentVolume
Tabel berikut menyertakan parameter yang dapat Anda gunakan untuk menentukan PersistentVolume.
Nama | Makna | Nilai yang Tersedia | Wajib | Nilai bawaan |
---|---|---|---|---|
volumeAttributes.resourceGroup | Tentukan nama grup sumber daya Azure Anda. | KelompokSumberDayaSaya | Tidak | Jika kosong, driver menggunakan nama grup sumber daya yang sama dengan kluster saat ini. |
volumeAttributes.storageAccount | Tentukan nama akun penyimpanan Azure yang sudah ada. | namaAkunPenyimpanan (storageAccountName) | Ya | |
volumeAttributes.shareName | Tentukan nama berbagi file Azure. | fileShareName | Ya | |
volumeAttributes.folderName | Tentukan nama folder di berbagi file Azure. | folderName | Tidak | Jika nama folder tidak ada di berbagi file, pemasangan akan gagal. |
atributVolume.protokol | Tentukan protokol berbagi file. |
smb , nfs |
Tidak | smb |
volumeAttributes.server | Tentukan alamat server akun penyimpanan Azure | Alamat server yang ada, misalnya accountname.privatelink.file.core.windows.net . |
Tidak | Jika kosong, driver menggunakan default accountname.file.core.windows.net atau alamat akun sovereign cloud lainnya. |
--- | Parameter berikut hanya untuk protokol SMB | --- | --- | --- |
volumeAttributes.secretName | Tentukan nama rahasia yang menyimpan nama dan kunci akun penyimpanan. | Tidak | ||
volumeAttributes.secretNamespace | Tentukan namespace rahasia. |
default ,kube-system , dll. |
Tidak | Namespace PVC (csi.storage.k8s.io/pvc/namespace ) |
nodeStageSecretRef.name | Tentukan nama rahasia yang menyimpan nama dan kunci akun penyimpanan. | Nama rahasia yang sudah ada | Tidak | Jika kosong, driver menggunakan identitas kubelet untuk mendapatkan kunci akses akun. |
nodeStageSecretRef.namespace | Tentukan namespace rahasia. | Namespace Kubernetes | Tidak | |
--- | Parameter berikut hanya untuk protokol NFS | --- | --- | --- |
atributVolume.kebijakanPerubahanFsGroup | Menunjukkan bagaimana pengemudi mengubah kepemilikan volume. Pod securityContext.fsGroupChangePolicy diabaikan. |
OnRootMismatch (standar), Always , None |
Tidak | OnRootMismatch |
atributVolume.izinPemasangan | Tetapkan izin untuk folder yang dipasang. Defaultnya adalah 0777 |
Tidak |
Buat berbagi file Azure
Sebelum Anda dapat menggunakan share file Azure Files sebagai volume Kubernetes, Anda harus membuat akun Azure Storage dan share file tersebut.
Dapatkan nama grup sumber daya menggunakan perintah
az aks show
dengan parameter--query nodeResourceGroup
.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
Hasil dari output perintah menyerupai contoh berikut:
MC_myResourceGroup_myAKSCluster_eastus
Buatlah akun penyimpanan dengan perintah
az storage account create
menggunakan parameter--sku
. Perintah berikut membuat akun penyimpanan menggunakanStandard_LRS
SKU. Pastikan untuk mengganti placeholder berikut:-
myAKSStorageAccount
dengan nama akun penyimpanan -
nodeResourceGroupName
dengan nama grup sumber daya yang menjadi tempat hosting node kluster AKS -
location
dengan nama wilayah di dalam mana sumber daya akan dibuat. Ini harus menjadi wilayah yang sama dengan node kluster AKS.
az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
-
Ekspor string koneksi sebagai variabel lingkungan menggunakan perintah berikut, yang Anda gunakan untuk membuat berbagi file.
export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
Buat berbagi file menggunakan
az storage share create
perintah . Pastikan untuk menggantishareName
dengan nama berbagi Anda.az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
Ekspor kunci akun penyimpanan sebagai variabel lingkungan menggunakan perintah berikut.
STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
Gemakan nama dan kunci akun penyimpanan menggunakan perintah berikut. Salin informasi ini, karena Anda memerlukan nilai-nilai ini saat membuat volume Kubernetes.
echo Storage account key: $STORAGE_KEY
Buat rahasia Kubernetes
Kubernetes membutuhkan kredensial untuk mengakses berbagi file yang dibuat pada langkah sebelumnya. Kredensial ini disimpan dalam rahasia Kubernetes, yang direferensikan ketika Anda membuat pod Kubernetes.
Buat rahasia menggunakan
kubectl create secret
perintah . Contoh berikut membuat rahasia bernama azure-secret dan mengisi azurestorageaccountname dan azurestorageaccountkey dari langkah sebelumnya. Untuk menggunakan akun penyimpanan Azure yang sudah ada, berikan nama dan kunci akun.kubectl create secret generic azure-secret --from-literal=azurestorageaccountname=myAKSStorageAccount --from-literal=azurestorageaccountkey=$STORAGE_KEY
Pasang berbagi file sebagai volume persisten
Buat file baru bernama
azurefiles-pv.yaml
dan salin dalam konten berikut. Di bawahcsi
, perbaruiresourceGroup
,volumeHandle
, danshareName
. Untuk opsi pemasangan, nilai default untukfileMode
dandirMode
adalah 0777.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: file.csi.azure.com name: azurefile spec: capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: azurefile-csi csi: driver: file.csi.azure.com volumeHandle: "{resource-group-name}#{account-name}#{file-share-name}" # make sure this volumeid is unique for every identical share in the cluster volumeAttributes: shareName: aksshare nodeStageSecretRef: name: azure-secret namespace: default mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - nosharesock - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
Buat volume persisten menggunakan
kubectl create
perintah .kubectl create -f azurefiles-pv.yaml
Buat file baru bernama azurefiles-mount-options-pvc.yaml dan salin konten berikut.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi volumeName: azurefile resources: requests: storage: 5Gi
Buat PersistentVolumeClaim menggunakan
kubectl apply
perintah .kubectl apply -f azurefiles-mount-options-pvc.yaml
Verifikasi PersistentVolumeClaim Anda dibuat dan terikat ke PersistentVolume menggunakan perintah
kubectl get
.kubectl get pvc azurefile
Hasil dari perintah tersebut menyerupai contoh berikut:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azurefile Bound azurefile 5Gi RWX azurefile 5s
Perbarui spesifikasi kontainer Anda untuk mereferensikan PersistentVolumeClaim dan pod Anda dalam file YAML. Contohnya:
... volumes: - name: azure persistentVolumeClaim: claimName: azurefile
Spesifikasi pod tidak dapat diperbarui di tempat, jadi hapus pod menggunakan
kubectl delete
perintah dan buat ulang menggunakankubectl apply
perintah .kubectl delete pod mypod kubectl apply -f azure-files-pod.yaml
Pasang berbagi file sebagai volume sebaris
Catatan
Untuk menghindari masalah performa, kami sarankan Anda menggunakan volume persisten alih-alih volume sebaris ketika banyak pod mengakses berbagi file yang sama. Volume inline hanya dapat mengakses rahasia di namespace yang sama dengan pod. Untuk menentukan namespace rahasia yang berbeda, gunakan volume persisten.
Untuk memasang berbagi file Azure Files ke dalam pod, Anda mengonfigurasi volume dalam spesifikasi kontainer.
Buat file baru bernama
azure-files-pod.yaml
dan salin dalam konten berikut. Jika Anda mengubah nama berbagi file atau nama rahasia, perbaruishareName
dansecretName
. Anda juga dapat memperbaruimountPath
, yang merupakan path tempat berbagi File dipasang di pod. Untuk kontainer Windows Server, tentukanmountPath
menggunakan konvensi jalur Windows, seperti 'D:'.apiVersion: v1 kind: Pod metadata: name: mypod spec: nodeSelector: kubernetes.io/os: linux containers: - image: 'mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine' name: mypod resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: azure mountPath: /mnt/azure readOnly: false volumes: - name: azure csi: driver: file.csi.azure.com volumeAttributes: secretName: azure-secret # required shareName: aksshare # required mountOptions: 'dir_mode=0777,file_mode=0777,cache=strict,actimeo=30,nosharesock,nobrl' # optional
Buat pod menggunakan
kubectl apply
perintah .kubectl apply -f azure-files-pod.yaml
Anda sekarang memiliki pod yang sedang aktif dengan file share Azure Files yang dipasang di /mnt/azure. Anda dapat memverifikasi bahwa share berhasil dipasang menggunakan perintah
kubectl describe
.kubectl describe pod mypod
Praktik terbaik
Untuk memiliki pengalaman terbaik dengan Azure Files, ikuti praktik terbaik berikut:
- Lokasi untuk mengonfigurasi opsi pemasangan (mountOptions) bergantung pada apakah Anda menyediakan volume persisten dinamis atau statis. Jika Anda secara dinamis menyediakan volume dengan kelas penyimpanan, tentukan opsi pemasangan pada objek kelas penyimpanan (jenis: StorageClass). Jika Anda secara statis menyediakan volume, tentukan opsi pemasangan pada objek PersistentVolume (jenis: PersistentVolume). Jika Anda memasang berbagi file sebagai volume sebaris, tentukan opsi pemasangan pada objek Pod (jenis: Pod).
- Kami merekomendasikan FIO saat menjalankan pengujian tolok ukur. Untuk informasi selengkapnya, lihat alat dan pengujian tolok ukur.
Berbagi SMB
Opsi pemasangan yang direkomendasikan untuk berbagi SMB disediakan dalam contoh kelas penyimpanan berikut:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azurefile-csi provisioner: file.csi.azure.com allowVolumeExpansion: true parameters: skuName: Premium_LRS # available values: Premium_LRS, Premium_ZRS, Standard_LRS, Standard_GRS, Standard_ZRS, Standard_RAGRS, Standard_RAGZRS reclaimPolicy: Delete volumeBindingMode: Immediate mountOptions: - dir_mode=0777 # modify this permission if you want to enhance the security - file_mode=0777 # modify this permission if you want to enhance the security - mfsymlinks # support symbolic links - cache=strict # https://linux.die.net/man/8/mount.cifs - nosharesock # reduces probability of reconnect race - actimeo=30 # reduces latency for metadata-heavy workload - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
Jika Anda menggunakan file share premium (SSD) dan beban kerja Anda kaya metadata, daftarkan diri Anda untuk menggunakan fitur penembolokan metadata guna meningkatkan performa.
Untuk informasi selengkapnya, lihat Meningkatkan performa untuk berbagi file SMB Azure.
Berbagi NFS
Opsi pemasangan yang direkomendasikan untuk berbagi NFS disediakan dalam contoh kelas penyimpanan berikut:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azurefile-csi-nfs provisioner: file.csi.azure.com parameters: protocol: nfs skuName: Premium_LRS # available values: Premium_LRS, Premium_ZRS reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - nconnect=4 # improves performance by enabling multiple connections to share - noresvport # improves availability - actimeo=30 # reduces latency for metadata-heavy workloads
Tingkatkan ukuran read-ahead untuk meningkatkan throughput baca.
Meskipun Azure Files mendukung pengaturan nconnect hingga pengaturan maksimum 16, sebaiknya konfigurasikan opsi pemasangan dengan pengaturan optimal nconnect=4. Saat ini, tidak ada keuntungan di luar empat saluran untuk implementasi Azure Files nconnect.
Untuk informasi selengkapnya, lihat Meningkatkan performa untuk berbagi file NFS Azure.
Langkah berikutnya
Untuk parameter driver CSI Azure Files, lihat parameter driver CSI.
Untuk praktik terbaik terkait, lihat Praktik terbaik untuk penyimpanan dan pencadangan di AKS.
Azure Kubernetes Service