Sterowniki interfejsu MAGAZYNU kontenera (CSI) w usłudze Azure Kubernetes Service (AKS)
Interfejs Container Storage Interface (CSI) jest standardem umożliwiającym uwidacznianie dowolnych systemów magazynów blokowych i magazynów plików konteneryzowanym obciążeniom na platformie Kubernetes. Dzięki wdrożeniu i użyciu interfejsu CSI usługa Azure Kubernetes Service (AKS) może zapisywać, wdrażać i iterować wtyczki, aby uwidocznić nowe lub ulepszać istniejące systemy magazynowania w rozwiązaniu Kubernetes bez konieczności dotykania podstawowego kodu Kubernetes i oczekiwania na cykle wydania.
Obsługa sterowników magazynu CSI w usłudze AKS umożliwia natywne korzystanie z następujących rozwiązań:
- Za pomocą usługi Azure Disks można utworzyć zasób Kubernetes DataDisk . Dyski mogą używać usługi Azure Premium Storage, wspieranej przez dyski SSD o wysokiej wydajności lub Azure Standard Storage, wspierane przez zwykłe dyski HDD lub dyski SSD w warstwie Standardowa. W przypadku większości obciążeń produkcyjnych i programistycznych należy użyć usługi Premium Storage. Dyski platformy Azure są instalowane jako ReadWriteOnce i są dostępne tylko dla jednego węzła w usłudze AKS. W przypadku woluminów magazynu, do których można uzyskiwać dostęp jednocześnie przez wiele węzłów, użyj usługi Azure Files.
- Za pomocą usługi Azure Files można zainstalować udział SMB 3.0/3.1 wspierany przez konto usługi Azure Storage do zasobników. Usługa Azure Files umożliwia udostępnianie danych między wieloma węzłami i zasobnikami. Usługa Azure Files może używać magazynu w warstwie Standardowa platformy Azure wspieranego przez zwykłe dyski HDD lub Azure Premium Storage wspierane przez dyski SSD o wysokiej wydajności.
- Usługa Azure Blob Storage może służyć do instalowania usługi Blob Storage (lub magazynu obiektów) jako systemu plików w kontenerze lub zasobniku. Korzystanie z usługi Blob Storage umożliwia klastrowi obsługę aplikacji, które współpracują z dużymi zestawami danych bez struktury, takimi jak dane plików dziennika, obrazy lub dokumenty, HPC i inne. Ponadto w przypadku pozyskiwania danych do usługi Azure Data Lake Storage można bezpośrednio zainstalować je i używać w usłudze AKS bez konfigurowania innego tymczasowego systemu plików.
Napiwek
Jeśli chcesz w pełni zarządzane rozwiązanie do uzyskiwania dostępu na poziomie bloku do danych, rozważ użycie usługi Azure Container Storage zamiast sterowników CSI. Usługa Azure Container Storage integruje się z platformą Kubernetes, umożliwiając dynamiczną i automatyczną aprowizację trwałych woluminów. Usługa Azure Container Storage obsługuje dyski platformy Azure, dyski efemeryczne i usługę Azure Elastic SAN (wersja zapoznawcza) jako magazyn zapasowy, zapewniając elastyczność i skalowalność aplikacji stanowych uruchomionych w klastrach Kubernetes.
Wymagania wstępne
- Potrzebny jest interfejs wiersza polecenia platformy Azure w wersji 2.42 lub nowszej, zainstalowany i skonfigurowany. Uruchom polecenie
az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Jeśli sterownik magazynu CSI typu open source jest zainstalowany w klastrze, odinstaluj go przed włączeniem sterownika CSI usługi Azure Storage.
- Aby wymusić użycie sterownika Storage Interface (CSI) usługi Azure Policy dla usługi AKS, należy włączyć dodatek Usługi Azure Policy w nowych i istniejących klastrach. W przypadku istniejącego klastra zapoznaj się z artykułem Learn Azure Policy for Kubernetes (Poznaj usługę Azure Policy dla platformy Kubernetes ), aby ją włączyć.
Obsługiwane scenariusze szyfrowania dysków
Sterowniki magazynu CSI obsługują następujące scenariusze:
- Zaszyfrowane dyski zarządzane przy użyciu kluczy zarządzanych przez klienta przy użyciu usługi Azure Key Vault przechowywanych w innej dzierżawie firmy Microsoft.
- Zaszyfruj dyski usługi Azure Storage hostujące system operacyjny usługi AKS i dane aplikacji przy użyciu kluczy zarządzanych przez klienta.
Włączanie sterowników magazynu CSI w istniejącym klastrze
Aby włączyć sterowniki magazynu CSI w nowym klastrze, uwzględnij jeden z następujących parametrów w zależności od systemu magazynu:
--enable-disk-driver
umożliwia włączenie sterownika CSI dysków platformy Azure.--enable-file-driver
umożliwia włączenie sterownika CSI usługi Azure Files.--enable-blob-driver
umożliwia włączenie sterownika CSI usługi Azure Blob Storage.--enable-snapshot-controller
umożliwia włączenie kontrolera migawek.
az aks update --name myAKSCluster --resource-group myResourceGroup --enable-disk-driver --enable-file-driver --enable-blob-driver --enable-snapshot-controller
Wykonanie tej akcji może potrwać kilka minut. Po zakończeniu w danych wyjściowych powinien zostać wyświetlony stan włączenia sterownika w klastrze. Poniższy przykład przypomina sekcję wskazującą wyniki podczas włączania sterownika CSI magazynu obiektów blob:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
Wyłączanie sterowników magazynu CSI w nowym lub istniejącym klastrze
Aby wyłączyć sterowniki magazynu CSI w nowym klastrze, uwzględnij jeden z następujących parametrów w zależności od systemu magazynu:
--disable-disk-driver
umożliwia wyłączenie sterownika CSI dysków platformy Azure.--disable-file-driver
umożliwia wyłączenie sterownika CSI usługi Azure Files.--disable-blob-driver
umożliwia wyłączenie sterownika CSI usługi Azure Blob Storage.--disable-snapshot-controller
umożliwia wyłączenie kontrolera migawek.
az aks create \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller \
--generate-ssh-keys
Aby wyłączyć sterowniki magazynu CSI w istniejącym klastrze, użyj jednego z wymienionych wcześniej parametrów w zależności od systemu magazynu:
az aks update \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller
Uwaga
Zalecamy usunięcie odpowiedniego obiektu PersistentVolumeClaim zamiast obiektu PersistentVolume podczas usuwania woluminu CSI. Zewnętrzny element aprowizacyjny w sterowniku CSI będzie reagować na usunięcie elementu PersistentVolumeClaim i na podstawie zasad odzyskiwania wystawia wywołanie DeleteVolume względem poleceń sterownika woluminu CSI w celu usunięcia woluminu. Następnie obiekt PersistentVolume zostanie usunięty.
Migrowanie niestandardowych klas magazynu w drzewie do interfejsu CSI
Począwszy od platformy Kubernetes w wersji 1.26, trwałe typy woluminów w drzewie kubernetes.io/azure-disk i kubernetes.io/azure-file są przestarzałe i nie będą już obsługiwane. Sterowniki w drzewie odnoszą się do sterowników magazynu, które są częścią podstawowego kodu Kubernetes, w przeciwieństwie do sterowników CSI, które są wtyczkami.
Usunięcie tych sterowników po wycofaniu nie jest planowane, jednak należy przeprowadzić migrację do odpowiednich sterowników CSI disk.csi.azure.com i file.csi.azure.com. Aby zapoznać się z opcjami migracji klas magazynu i uaktualnić klaster do używania sterowników CSI usługi Azure Disks i Azure Files, zobacz Migrowanie z drzewa do sterowników CSI.
Jeśli utworzono klasy magazynu sterowników drzewa, te klasy magazynu nadal działają, ponieważ migracja CSI jest włączona po uaktualnieniu klastra do wersji 1.21.x. Jeśli chcesz używać funkcji CSI, musisz przeprowadzić migrację.
Następne kroki
- Aby użyć sterownika CSI dla dysków platformy Azure, zobacz Używanie dysków platformy Azure ze sterownikami CSI.
- Aby użyć sterownika CSI dla usługi Azure Files, zobacz Używanie usługi Azure Files ze sterownikami CSI.
- Aby użyć sterownika CSI dla usługi Azure Blob Storage, zobacz Używanie usługi Azure Blob Storage ze sterownikami CSI
- Aby uzyskać więcej informacji na temat najlepszych rozwiązań dotyczących magazynu, zobacz Best practices for storage and backups in Azure Kubernetes Service (Najlepsze rozwiązania dotyczące magazynu i tworzenia kopii zapasowych w usłudze Azure Kubernetes Service).
- Aby uzyskać więcej informacji na temat migracji CSI, zobacz Migracja woluminów CSI na platformie Kubernetes w drzewie.
Azure Kubernetes Service