Kelola penyimpanan pod pada kluster Kube

Selesai

Meskipun sebagian besar aplikasi yang ingin Anda sebarkan ke AKS di Azure Stack HCI stateless, pengembang Contoso mengidentifikasi beberapa beban kerja stateful yang mereka rencanakan untuk kontainerisasi. Untuk mengakomodasi persyaratan ini, Anda perlu mengeksplorasi dukungan untuk mempertahankan status pod yang sedang berjalan dengan mengandalkan volume persisten Kube.

Terapkan volume persisten untuk AKS di Azure Stack HCI

Secara default, masing-masing dari pod beroperasi sebagai sumber daya stateless. Jika sebuah pod yang merupakan bagian dari penyebaran gagal karena beberapa alasan, penjadwal Kube secara otomatis membuat pod baru yang menyediakan fungsi pencocokan, memastikan bahwa aplikasi kontainer tetap tersedia. Namun, tanpa provisi tambahan untuk mempertahankan status, data apa pun yang mungkin telah dikerjakan oleh pod yang gagal hilang.

Ada skenario di mana pod harus dapat bertahan dan berbagi data dan statusnya. Dalam skenario ini, Anda dapat menggunakan volume persisten, yaitu sumber daya kluster yang memungkinkan penyimpanan data beban kerja kontainer di luar umur masing-masing dari pod.

Untuk mengimplementasikan volume dalam kluster Kube, Anda harus terlebih dahulu mendefinisikan klaim volume persisten untuk kelas penyimpanan tertentu. Kelas penyimpanan mewakili karakteristik penyimpanan dasar, seperti performa atau dukungan untuk akses bersama. Klaim volume persisten mencakup informasi tentang mode akses dan ukuran volume yang diperlukan. Server Kube API menggunakan definisi klaim volume persisten untuk secara dinamis menyediakan volume penyimpanan yang sesuai kapan pun diperlukan oleh pod yang disebarkan.

Catatan

AKS di Azure Stack HCI menawarkan kelas penyimpanan default, yang mengimplementasikan disk berbasis VHDX.

Tentukan persyaratan penyimpanan pod yang disebarkan dengan menyertakan spesifikasi volume persisten dalam file manifes yang sesuai. Selain memicu provisi dinamis, ini juga secara otomatis memasang volume dalam pod.

Misalnya, manifes berikut menentukan klaim volume persisten untuk disk non-bersama 100 GB yang menggunakan kelas penyimpanan default.

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

Untuk mengimplementasikan klaim volume persisten ini, Anda dapat menyimpan manifes ini sebagai file YAML dan menjalankan utilitas baris perintah kubectl untuk membuat sumber daya yang sesuai (di mana pvc_definition.yaml mewakili file YAML):

kubectl create -f pvc_definition.yaml

Untuk menentukan volume persisten yang sesuai untuk sebuah pod, Anda dapat menggunakan manifes berikut:

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

Untuk mengimplementasikan volume persisten ini juga, Anda dapat menyimpan manifes pod sebagai file YAML dan menjalankan utilitas baris perintah kubectl untuk menyediakan volume dan memasangnya (di mana pv_definition.yaml mewakili file YAML):

kubectl create -f pv_definition.yaml

Pod yang dihasilkan akan memiliki volume berukuran 100 GB yang dipasang di dalam jalur sistem file yang ditunjuk oleh nilai elemen mountPath.

Untuk menghapus klaim volume persisten, Anda harus terlebih dahulu menghapus pod dan penyebaran yang saat ini menggunakannya. Pada titik itu, untuk menyelesaikan tugas, Anda dapat menggunakan perintah kubectl delete PersistentVolumeClaim, diikuti dengan nama klaim volume persisten.

Uji pengetahuan

1.

Karena pengembang Contoso sedang mengerjakan kontainerisasi beban kerja yang stateful, Anda ingin menguji implementasi penyimpanan pod persisten dengan menggunakan penyebaran AKS di Azure Stack HCI Anda. Apa yang harus Anda tentukan terlebih dahulu?