Zarządzanie magazynem zasobników w klastrach Kubernetes

Ukończone

Mimo że większość aplikacji, które zamierzasz wdrożyć w usłudze AKS w usłudze Azure Stack HCI, są bezstanowe, deweloperzy firmy Contoso zidentyfikowali kilka stanowych obciążeń, które planują konteneryzować. Aby spełnić to wymaganie, należy zapoznać się z obsługą zachowania stanu uruchomionych zasobników, opierając się na woluminach trwałych platformy Kubernetes.

Implementowanie woluminów trwałych dla usługi AKS w usłudze Azure Stack HCI

Domyślnie poszczególne zasobniki działają jako zasoby bezstanowe. Jeśli z jakiegoś powodu zasobnik, który jest częścią wdrożenia, harmonogram kubernetes automatycznie tworzy nowy, który zapewnia pasujące funkcje, zapewniając, że konteneryzowana aplikacja pozostaje dostępna. Jednak bez dodatkowych przepisów dotyczących zachowania stanu wszelkie dane, nad którymi mógł działać nieudany zasobnik, zostaną utracone.

Istnieją scenariusze, w których zasobniki muszą być w stanie utrwalać i udostępniać swoje dane i stan. W tych scenariuszach można użyć woluminów trwałych, które są zasobami klastra, które umożliwiają przechowywanie danych konteneryzowanych obciążeń poza cykl życia poszczególnych zasobników.

Aby zaimplementować wolumin w klastrze Kubernetes, należy zdefiniować trwałe oświadczenie woluminu dla określonej klasy magazynu. Klasa magazynu reprezentuje cechy magazynu bazowego, takie jak wydajność lub obsługa dostępu współdzielonego. Trwałe oświadczenie woluminu zawiera informacje o wymaganym trybie dostępu i rozmiarze woluminu. Serwer interfejsu API Kubernetes używa trwałej definicji oświadczenia woluminu, aby dynamicznie aprowizować odpowiedni wolumin magazynu zawsze, gdy jest to wymagane przez wdrożone zasobniki.

Uwaga

Usługa AKS w usłudze Azure Stack HCI oferuje domyślną klasę magazynu, która implementuje dyski oparte na dysku VHDX.

Zdefiniuj wymagania dotyczące magazynu wdrożonych zasobników, uwzględniając trwałe specyfikacje woluminów w odpowiednich plikach manifestu. Oprócz wyzwalania dynamicznej aprowizacji powoduje to również automatyczne zainstalowanie woluminu w zasobnikach.

Na przykład poniższy manifest definiuje trwałe oświadczenie woluminu dla dysku innego niż udostępniony o rozmiarze 100 GB, który używa domyślnej klasy magazynu.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: pvc-akshci
spec:
 accessModes:
 - ReadWriteOnce
 resources:
  requests:
   storage: 100Gi

Aby zaimplementować to trwałe oświadczenie woluminu, można zapisać ten manifest jako plik YAML i uruchomić narzędzie wiersza polecenia kubectl, aby utworzyć odpowiedni zasób (gdzie pvc_definition.yaml reprezentuje plik YAML):

kubectl create -f pvc_definition.yaml

Aby zdefiniować odpowiedni wolumin trwały dla zasobnika, można użyć następującego manifestu:

kind: Pod
apiVersion: v1
metadata:
  name: win-appserver
spec:
  containers:
    - name: win-appserver
      image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019 
      volumeMounts:
      - name: akshciscsi
        mountPath: "/mnt/akshciscsi"
  volumes:
    - name: akshciscsi
      persistentVolumeClaim:
        claimName: pvc-akshci
  nodeSelector:
     kubernetes.io/os: windows

Aby zaimplementować ten wolumin trwały, można również przechowywać manifest zasobnika jako plik YAML i uruchomić narzędzie wiersza polecenia kubectl, aby aprowizować wolumin i zainstalować go (gdzie pv_definition.yaml reprezentuje plik YAML):

kubectl create -f pv_definition.yaml

Wynikowy zasobnik będzie miał wolumin o rozmiarze 100 GB zainstalowanym w ścieżce systemu plików wyznaczonej przez wartość mountPath elementu.

Aby usunąć trwałe oświadczenie woluminu, należy najpierw usunąć wszystkie zasobniki i wdrożenia, które są obecnie z niego używane. W tym momencie, aby ukończyć zadanie, możesz użyć kubectl delete PersistentVolumeClaim polecenia , a następnie nazwy trwałego oświadczenia woluminu.

Test wiedzy

1.

Ponieważ deweloperzy firmy Contoso pracują nad konteneryzacją obciążeń stanowych, chcesz przetestować implementację trwałego magazynu zasobników przy użyciu wdrożenia usługi AKS w usłudze Azure Stack HCI. Co należy najpierw zdefiniować?