All Products
Search
Document Center

Container Compute Service:Konfigurasikan rotasi otomatis untuk instans dengan pengecualian perangkat keras

Last Updated:Mar 04, 2026

Jika terjadi pengecualian perangkat keras pada infrastruktur dasar, Alibaba Cloud Service (ACS) melaporkannya melalui mekanisme seperti event Kubernetes dan Condition. Untuk informasi selengkapnya, lihat GPU Fault Diagnosis and Recovery. Untuk menghindari gangguan layanan, Anda dapat mengonfigurasi komponen acs-instance-helper agar mengaktifkan penanganan kesalahan. Fitur ini mengotomatiskan scale-out dan eviction workload, sehingga meningkatkan efisiensi O&M serta menjamin stabilitas layanan.

Cara kerja

Ketika terjadi event O&M terjadwal atau kesalahan perangkat keras—seperti GPU yang rusak—pada infrastruktur dasar instans ACS, hal tersebut dapat memengaruhi stabilitas dan performa layanan atau menimbulkan risiko downtime. Anda dapat mengonfigurasi komponen acs-instance-helper untuk mencapai penanganan kesalahan sepenuhnya otomatis:

  1. Automatic fault monitoring: Komponen ini terus-menerus mendengarkan Condition kesalahan pod. Infrastruktur dasar secara otomatis melaporkan sinyal ini untuk kejadian seperti kegagalan GPU, kegagalan mesin penuh, atau event O&M terjadwal berupa restart node.

  2. Aligned window processing: Komponen ini menentukan waktu pemrosesan berdasarkan batas waktu penanganan kesalahan yang dilaporkan oleh node dasar dan konfigurasi jendela O&M opsional. Jika batas waktu memungkinkan, komponen akan menunggu hingga jendela O&M yang telah ditentukan dimulai sebelum memproses.

  3. Triggered rotational updates: Komponen ini secara otomatis menggunakan kebijakan scale-out online (scale out terlebih dahulu, lalu destroy) untuk aplikasi tanpa status, seperti Deployments dan CloneSets, guna melakukan rotasi pod yang lancar pada node yang bermasalah.

    Penting

    Untuk aplikasi non-online, acs-instance-helper langsung melakukan eviction terhadap instans setelah mendeteksi kondisi abnormal.

Cakupan penerapan

  • Versi kluster ACS Anda adalah 1.28 atau lebih baru.

  • Komponen ACK Virtual Node telah diinstal, dan versinya v2.16.0 atau lebih baru. Untuk informasi selengkapnya, lihat ACK Virtual Node.

Instal komponen

  1. Di ACS console, klik nama kluster target Anda. Pada panel navigasi kiri, pilih Applications > Helm.

  2. Pada halaman Helm, klik Create.

    1. Basic Information: Di kotak pencarian Chart, masukkan acs-instance-helper dan pilih dari hasil pencarian.

    2. Parameters: Untuk Chart Version, pilih versi terbaru.

Konfigurasikan pengaturan global untuk komponen acs-instance-helper (Opsional)

Anda dapat mengonfigurasi tipe workload tambahan yang didukung dan jendela O&M untuk komponen ini.

Console

  1. Pada panel navigasi kiri halaman detail kluster target, pilih Configurations > ConfigMaps.

  2. Pada halaman ConfigMaps, klik Create from YAML. Lalu, salin manifes berikut ke area Templates dan klik Create.

kubectl

  1. Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.

  2. Simpan manifes YAML berikut sebagai file bernama acs-instance-helper-global-configmap.yaml. Kemudian, jalankan perintah kubectl apply -f acs-instance-helper-global-configmap.yaml.

apiVersion: v1
kind: ConfigMap
metadata:
  name: acs-instance-helper-global-config
  namespace: kube-system
data:
  customOnlineWorkloads: foo.io/SomeWorkload,bar.io/AnotherWorkload
  hardwareFaultEvictionSeconds: "60"
  maintenanceTime: "2025-10-09T10:00:00+08:00"
  maintenanceDuration: "4h"
  maintenanceWeeklyPeriod: "Saturday,Sunday"
  # maintenanceRecurrence: "FREQ=WEEKLY;BYDAY=SA,SU"  # O&M window: every Saturday and Sunday

Bentangkan bagian berikut untuk melihat deskripsi item konfigurasi.

Deskripsi item konfigurasi

Configuration Key

Description

Example Value

customOnlineWorkloads

Menandai aplikasi sebagai tipe "online service", yang menggunakan kebijakan scale-out online (scale-out terlebih dahulu, lalu destroy) untuk rotasi pod yang lancar pada node yang bermasalah.

Komponen ini mendukung workload Deployment secara default. Konfigurasikan item ini untuk menambahkan dukungan terhadap tipe workload kustom lainnya.

Penting
  • Pastikan controller workload kustom mampu mempertahankan jumlah replika pod dengan secara otomatis menambahkan lebih banyak saat jumlahnya tidak mencukupi.

  • Rotasi tanpa loss selama terjadi kesalahan tidak dapat dijamin untuk semua workload kustom. Lakukan pengujian menyeluruh saat mengaktifkan fitur ini untuk workload kustom.

foo.io/SomeWorkload,bar.io/AnotherWorkload

hardwareFaultEvictionSeconds

Untuk layanan yang menggunakan kebijakan "scale-out dan evict", ini adalah waktu tunggu dalam detik dari selesainya scale-out hingga dimulainya eviction terhadap instans yang bermasalah.

  • Nilai default-nya adalah "300" (5 menit). Nilainya harus dalam format string, misalnya "60".

"60"

maintenanceTime

Menentukan waktu mulai jendela O&M dalam format RFC3339. Mengonfigurasi item ini mengaktifkan jendela O&M untuk kluster.

Gunakan identifikasi zona waktu yang jelas, seperti +08:00 atau UTC.

2025-10-09T10:00:00+08:00

Menyatakan bahwa jendela O&M dimulai pukul 10:00 pagi pada 9 Oktober 2025 (UTC+8).

maintenanceDuration

Menentukan durasi setiap jendela O&M.

  • Hanya berlaku setelah maintenanceTime dikonfigurasi.

  • Nilainya harus dalam format string. Format seperti "3", "3h", dan "3H" didukung.

  • Nilai default-nya adalah "3", yang berarti 3 jam.

"4h"

maintenanceWeeklyPeriod

Cara sederhana untuk menentukan hari dalam seminggu yang menjadi hari O&M.

  • Hanya berlaku setelah maintenanceTime dikonfigurasi.

  • Nilai yang valid adalah Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, dan Sunday. Pisahkan beberapa nilai dengan koma.

  • Jika item ini dikonfigurasi, nilai maintenanceRecurrence akan ditimpa.

Saturday,Sunday

maintenanceRecurrence

Menggunakan sintaks aturan pengulangan RFC5545 untuk menentukan siklus O&M, memberikan fleksibilitas lebih tinggi.

  • Hanya berlaku setelah maintenanceTime dikonfigurasi.

  • Saat ini, hanya FREQ=WEEKLY yang didukung. Parameter COUNT dan UNTIL tidak didukung.

  • Jika maintenanceWeeklyPeriod juga dikonfigurasi, item ini diabaikan.

FREQ=WEEKLY;BYDAY=SA,SU

Waktu pemrosesan kesalahan ditentukan oleh batas waktu penanganan kesalahan dan jendela O&M yang dikonfigurasi. Jika tersedia jendela O&M sebelum batas waktu, komponen acs-instance-helper memprioritaskan menjalankan perbaikan kesalahan dalam jendela tersebut. Jika seluruh proses tidak selesai dalam satu jendela O&M, operasi yang tersisa akan dilanjutkan di jendela O&M berikutnya.

image

Buat dan konfigurasikan workload

Anda dapat mengaktifkan fitur penanganan kesalahan untuk suatu workload dengan mengonfigurasi anotasinya.

Fitur penanganan kesalahan melakukan rotasi instans dengan mencoba berulang kali melakukan eviction menggunakan Eviction API, bukan menghapusnya secara langsung. Anda dapat mengonfigurasi kebijakan PodDisruptionBudget (PDB) untuk mengontrol konkurensi eviction dan mencegah gangguan layanan. Untuk informasi selengkapnya, lihat Kontrol konkurensi eviction pod menggunakan resource PDB.

Console

  1. Pada panel navigasi kiri kluster tujuan, pilih Workloads > Deployments.

  2. Pada halaman Deployments, klik Create from YAML. Salin konten berikut ke area Template, lalu klik Create.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hardware-fault-helper-example
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: hardware-fault-helper-example
      template:
        metadata:
          labels:
            app: hardware-fault-helper-example
          annotations:
            # Key annotation: Enables the fault handling feature for the workload
            "ops.alibabacloud.com/enable-hardware-fault-helper": "true"
        spec:
          containers:
            - image: registry-cn-hangzhou.ack.aliyuncs.com/dev/hello-world:v1
              name: main-container
              resources:
                limits:
                  cpu: 100m
                  memory: 100Mi
          restartPolicy: Always
  3. Pada jendela pop-up, temukan aplikasi tanpa status tujuan dan klik View . Pastikan status pod adalah Running

kubectl

  1. Simpan konten YAML berikut sebagai file bernama `app.yaml`, lalu jalankan perintah `kubectl apply -f app.yaml`.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hardware-fault-helper-example
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: hardware-fault-helper-example
      template:
        metadata:
          labels:
            app: hardware-fault-helper-example
          annotations:
            # Key annotation: Enables the fault handling feature for the workload
            "ops.alibabacloud.com/enable-hardware-fault-helper": "true"
        spec:
          containers:
            - image: registry-cn-hangzhou.ack.aliyuncs.com/dev/hello-world:v1
              name: main-container
              resources:
                limits:
                  cpu: 100m
                  memory: 100Mi
          restartPolicy: Always
  2. Pastikan status pod aplikasi tujuan adalah Running.

    kubectl get pods -l app=hardware-fault-helper-example

Simulasikan skenario kesalahan dan amati hasilnya

Dalam skenario nyata, sistem kontrol dasar secara otomatis menambahkan Condition. Di sini, kami mensimulasikan skenario kesalahan dengan secara manual menyuntikkan Condition ke salah satu pod.

  1. Simulasikan kesalahan: Ganti POD_NAME dengan nama pod aktual untuk menyuntikkan Condition kesalahan perangkat keras ke pod tujuan.

    Batas waktu penanganan kesalahan adalah waktu yang ditentukan dalam bidang message.
    kubectl patch pod POD_NAME --type='merge' --subresource=status -p='{
      "status": {
        "conditions": [
          {
            "type": "Interruption.HardwareFault",
            "status": "True",
            "reason": "MockForTest",
            "message": "Underlying infrastructure issue [Reboot] scheduled at 2099-03-12T09:00:00.000+08:00",
            "lastProbeTime": "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'",
            "lastTransitionTime": "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'"
          }
        ]
      }
    }'
  2. Amati scale-out: Setelah kesalahan disuntikkan, acs-instance-helper memicu scale-out berdasarkan konfigurasi jendela O&M (atau segera jika tidak ada konfigurasi). Pod baru dibuat, dan status workload asli tetap tidak terpengaruh.

    kubectl get pods -l app=hardware-fault-helper-example

    Output yang diharapkan:

    NAME                                             READY   STATUS    RESTARTS   AGE
    hardware-fault-helper-example-7cf4cf96c5-xxxxx   1/1     Running   0          2m21s
    hardware-fault-helper-example-7cf4cf96c5-yyyyy   1/1     Running   0          36s # New scaled-out pod
  3. Lihat event scale-out: Periksa event pod yang bermasalah. Anda akan melihat event NewInstanceCreationTriggered, yang menegaskan bahwa operasi scale-out dipicu oleh hardware-fault-helper.

    kubectl describe po POD_NAME

    Output yang diharapkan:

    ...
      Normal  NewInstanceCreationTriggered  62s    hardware-fault-helper  controller default/hardware-fault-helper-example-7cf4cf96c5 (apiVersion:apps/v1, kind:ReplicaSet) will create a new instance
  4. Lihat event eviction: Setelah waktu yang ditentukan oleh hardwareFaultEvictionSeconds berlalu, pod yang bermasalah di-offline (masuk ke status Terminating lalu dihapus). Anda juga dapat mengamati event offline pada saat ini.

    kubectl describe po POD_NAME

    Output yang diharapkan:

    ...
      Warning  InstanceEvictedGracefully     2s     hardware-fault-helper  pod is deleted due to hardware fault
      Normal   Killing                       1s     kubelet                Stopping container main-container
  5. Konfirmasi pemulihan: Akhirnya, pod yang bermasalah sepenuhnya digantikan, sehingga hanya tersisa pod yang baru dibuat.

    kubectl get pods -l app=hardware-fault-helper-example

    Output yang diharapkan:

    NAME                                             READY   STATUS      RESTARTS   AGE
    hardware-fault-helper-example-7cf4cf96c5-yyyyy   1/1     Running     0          5m5s

Penagihan

Menginstal komponen acs-instance-helper akan men-deploy deployment dengan dua replika di kluster Anda. Setiap replika dialokasikan 1 vCPU dan 2 GiB memori. Sumber daya ini dikonsumsi dari kluster Anda dan akan dikenai biaya. Untuk informasi selengkapnya tentang penagihan, lihat ACS computing power billing.

FAQ

Kontrol konkurensi eviction pod menggunakan resource PDB

Ketika pod harus dievict karena event eksternal seperti node draining atau scale-in otomatis, Anda dapat mengonfigurasi kebijakan PodDisruptionBudget (PDB) untuk menjamin ketersediaan tinggi layanan Anda. Kebijakan ini mengontrol konkurensi eviction menggunakan parameter berikut:

  • maxUnavailable: Menentukan jumlah maksimum pod yang boleh tidak tersedia selama proses eviction.

  • minAvailable: Menentukan jumlah minimum pod yang harus tetap tersedia selama proses eviction.

Contoh berikut menjamin bahwa setidaknya satu pod tetap tersedia selama eviction.

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: app-pdb
  namespace: YOUR_NAMESPACE # Tentukan namespace tempat kebijakan berlaku. Jika tidak ditentukan, default-nya adalah 'default'
spec:
  minAvailable: 1
  selector:
    matchLabels:
      app: app