全部产品
Search
文档中心

Container Service for Kubernetes:Konfigurasi yang Direkomendasikan untuk Ketersediaan Tinggi Volume Disk

更新时间:Jul 06, 2025

Saat menerapkan StatefulSet dengan volume disk terpasang di kluster Container Service for Kubernetes (ACK), sistem mungkin gagal membuat StatefulSet karena masalah konfigurasi zona atau kategori disk. Topik ini memberikan konfigurasi yang direkomendasikan untuk aplikasi lintas zona guna mencegah masalah dan meminimalkan risiko gangguan rilis.

Informasi Latar Belakang

Kubernetes menyediakan orkestrasi kontainer yang kuat untuk membantu pengguna mengembangkan aplikasi stateful berskala besar menggunakan StatefulSets. Meskipun demikian, abstraksi perangkat keras dapat menyebabkan masalah berikut:

  • Aplikasi diterapkan di zona yang salah, seperti Zona B alih-alih Zona A.

  • Gagal membuat PV secara dinamis untuk pemasangan disk, dengan pesan kesalahan seperti InvalidDataDiskCatagory.NotSupported.

  • Pesan kesalahan saat memasang disk: The instanceType of the specified instance does not support this disk category.

  • Pesan kesalahan saat debugging: 0/x node are available, x nodes had volume node affinity conflict.

Masalah ini dapat mengganggu rilis aplikasi. Untuk mengurangi risiko, gunakan konfigurasi yang direkomendasikan dalam topik ini.

Konfigurasi yang Direkomendasikan

Persyaratan

  • Gunakan disk alih-alih Sistem File NAS (NAS) untuk penyimpanan persisten karena disk lebih stabil dan menawarkan bandwidth lebih tinggi.

  • Terapkan kluster di tiga zona untuk memastikan sumber daya node dan penyimpanan mencukupi.

  • Aktifkan penskalaan otomatis node agar node baru dapat ditambahkan saat semua node tidak tersedia.

  • Tentukan beberapa kategori disk dalam StorageClass untuk menghindari kegagalan pemasangan.

  • Distribusikan pod aplikasi secara merata ke node di zona berbeda.

Konfigurasi Pool Node yang Direkomendasikan

  • Terapkan setiap pool node hanya di satu zona.

    • Untuk menambahkan node di zona baru, buat pool node baru di zona tersebut. Lihat Buat dan kelola pool node untuk informasi lebih lanjut.

    • Pastikan setiap pool node diterapkan di zona terpisah dan identifikasi zona melalui ID zona dalam nama pool node.

  • Aktifkan penskalaan otomatis untuk pool node. Lihat Aktifkan penskalaan otomatis node untuk detailnya.

    Setelah diaktifkan, sistem akan menambahkan node ke pool node saat semua node tidak tersedia untuk penjadwalan pod.pod

  • Gunakan jenis Instance Elastic Compute Service (ECS) yang sama atau instance ECS yang mendukung jenis penyimpanan blok serupa di zona berbeda.

    Jenis instance ECS tempat disk cloud dapat dilampirkan bergantung pada kategori disk. Kegagalan peluncuran pod dapat terjadi jika kategori disk tidak didukung oleh instance ECS meskipun berada di zona yang sama.

  • Tambahkan taint ke semua node dalam pool node untuk mencegah penjadwalan aplikasi yang tidak relevan.污点

Konfigurasi Kluster yang Direkomendasikan

  • Pastikan versi Kubernetes kluster adalah 1.20 atau lebih baru.

  • Pastikan versi Plugin Antarmuka Penyimpanan Kontainer (CSI) adalah 1.22 atau lebih baru. Lihat Kelola komponen csi-plugin dan csi-provisioner untuk informasi lebih lanjut.

  • Tentukan beberapa kategori disk dalam StorageClass.

    Contoh template YAML:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-disk-topology-alltype
    parameters:
      type: cloud_essd,cloud_ssd,cloud_efficiency
    provisioner: diskplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    allowedTopologies:
    - matchLabelExpressions:
      - key: topology.diskplugin.csi.alibabacloud.com/zone
        values:
        - cn-beijing-a
        - cn-beijing-b

    Deskripsi parameter:

    • type: cloud_essd,cloud_ssd,cloud_efficiency: Sistem mencoba membuat disk dalam urutan berikut: SSD Perusahaan (ESSD), SSD standar, dan ultra disk. Hal ini mengurangi risiko kegagalan pembuatan disk akibat inventaris yang tidak mencukupi.

    • volumeBindingMode: WaitForFirstConsumer: Setelah pod dijadwalkan ke node, sistem mencoba membuat disk di zona tempat node berada, mengurangi risiko ketidaksesuaian zona.

    • allowedTopologies: Parameter ini membatasi domain topologi volume yang diprovision menggunakan StorageClass pada wilayah dan zona tertentu. Jika Anda menetapkan volumeBindingMode ke WaitForFirstConsumer, penjadwal akan menjadwalkan pod yang menggunakan StorageClass di domain topologi yang ditentukan untuk memenuhi persyaratan pembuatan disk.

Konfigurasi Aplikasi yang Direkomendasikan

Contoh kode berikut adalah template StatefulSet standar yang dapat disesuaikan sesuai kebutuhan bisnis Anda.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
spec:
  serviceName: "mysql"
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      topologySpreadConstraints:
      - labelSelector:
          matchLabels:
            app: mysql
        maxSkew: 1
        topologyKey: topology.kubernetes.io/zone
        whenUnsatisfiable: ScheduleAnyway
      containers:
      - image: mysql:5.6
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "mysql"
        volumeMounts:
        - name: disk-csi
          mountPath: /var/lib/mysql
      tolerations:
      - key: "app"
        operator: "Exists"
        effect: "NoSchedule"
  volumeClaimTemplates:
  - metadata:
      name: disk-csi
    spec:
      accessModes: [ "ReadWriteMany" ]
      storageClassName: alicloud-disk-topology-alltype
      resources:
        requests:
          storage: 40Gi

Deskripsi parameter:

  • topologySpreadConstraints: Menyebarkan pod ke zona berbeda. Lihat Kendala Penyebaran Topologi untuk detailnya.

  • volumeClaimTemplates: Membuat disk secara otomatis untuk setiap replika pod, mempercepat penskalaan aplikasi.

Penting

File YAML PV berisi informasi zona node tempat PV dipasang. PV dan PVC yang terikat hanya dapat dikaitkan dengan pod di zona node yang sama, memastikan pemasangan disk berhasil.

Referensi