全部产品
Search
文档中心

Container Service for Kubernetes:Capai Skala Kontainer dalam Hitungan Detik Menggunakan ack-autoscaling-placeholder

更新时间:Mar 07, 2026

Jika bisnis Anda memerlukan startup workload yang cepat dan tidak perlu mempertimbangkan batasan sumber daya node, gunakan komponen ack-autoscaling-placeholder. Komponen ini menyediakan buffer untuk auto-scaling kluster. Saat sumber daya node tidak mencukupi, workload aktual akan mengambil alih sumber daya yang dicadangkan oleh workload placeholder agar dapat segera dimulai. Fitur ini dapat dikombinasikan dengan node autoscaling untuk memicu ekspansi di tingkat node dalam kluster. Topik ini menjelaskan cara mencapai skala kontainer dalam hitungan detik menggunakan ack-autoscaling-placeholder.

Operation Flow

image

Prasyarat

  • Aktifkan Auto Scaling untuk kluster ACK dan konfigurasikan node pool elastis. Untuk informasi selengkapnya, lihat Enable Node Autoscaling.

  • Tetapkan label node untuk node pool elastis menggunakan item konfigurasi Node Labels. Hal ini menjadwalkan workload ke node pool tertentu, yang membantu memverifikasi hasil. Untuk informasi selengkapnya, lihat Create and Manage Node Pools.

    Topik ini menggunakan label demo=yes sebagai contoh.

Langkah 1: Deploy komponen ack-autoscaling-placeholder dan buat workload placeholder

ack-autoscaling-placeholder menyediakan buffer untuk auto-scaling kluster, memungkinkan over-provisioning dan pre-warming node kluster. Hal ini memastikan bahwa workload dapat melakukan scale-out dengan cepat tanpa menunggu node baru dibuat dan bergabung ke kluster.

  1. Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Marketplace > Marketplace.

  2. Pada tab App Catalog, cari ack-autoscaling-placeholder, lalu klik ack-autoscaling-placeholder.

  3. Pada halaman ack-autoscaling-placeholder, klik Deploy.

  4. Pada panel pembuatan, lengkapi konfigurasi sesuai petunjuk, lalu klik OK.

    Ganti konten Parameters pada tab Parameter dengan contoh YAML berikut.

    View YAML Example

    nameOverride: ""
    fullnameOverride: ""
    ##
    priorityClassDefault:
      enabled: true
      name: default-priority-class   # Prioritas default rendah.
      value: -1
    
    ##
    deployments:
       - name: ack-place-holder
         replicaCount: 1
         containers:
           - name: placeholder
             image: registry-vpc.cn-shenzhen.aliyuncs.com/acs/pause:3.1
             pullPolicy: IfNotPresent
             resources:
               requests:
                 cpu: 4            # Resource menempati 4C8G.
                 memory: 8Gi
         imagePullSecrets: {}
         annotations: {}
         nodeSelector:        # Seleksi node, konsisten dengan label node pool elastis.
           demo: "yes"  
         tolerations: []
         affinity: {}
         labels: {}

    Setelah pembuatan selesai, buka halaman Applications > Helm dan verifikasi bahwa status aplikasi adalah Deployed.

Langkah 2: Buat PriorityClass untuk workload aktual

  1. Buat file bernama priorityClass.yaml menggunakan contoh YAML berikut.

    apiVersion: scheduling.k8s.io/v1
    kind: PriorityClass
    metadata:
      name: high-priority
    value: 1000000       # Konfigurasikan prioritas, yang harus lebih tinggi daripada prioritas default Pod placeholder pada langkah sebelumnya.
    globalDefault: false
    description: "This priority class should be used for XYZ service pods only."
  2. Jalankan perintah berikut untuk deploy PriorityClass untuk workload aktual.

    kubectl apply -f priorityClass.yaml

    Expected output:

    priorityclass.scheduling.k8s.io/high-priority created

Langkah 3: Buat workload aktual

  1. Buat file bernama workload.yaml menggunakan contoh YAML berikut.

    View YAML Example

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
      name: placeholder-test
      labels:
        app: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          nodeSelector:    # Seleksi node, konsisten dengan label node pool elastis.
            demo: "yes"
          priorityClassName: high-priority     # Atur ini ke nama PriorityClass yang dikonfigurasi pada langkah sebelumnya.
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 
            ports:
            - containerPort: 80
            resources:       
              requests:      
                cpu: 3         # Permintaan resource untuk workload aktual.
                memory: 5Gi
  2. Jalankan perintah berikut untuk deploy workload aktual.

    kubectl apply -f workload.yaml

    Expected output:

    deployment.apps/placeholder-test created

Verifikasi Hasil

  1. Setelah workload placeholder ack-place-holder dibuat, status Pod-nya adalah Running.

    image

  2. Saat workload aktual dideploy, workload tersebut mengambil alih sumber daya dari workload placeholder untuk startup cepat karena PriorityClass dengan prioritas tinggi telah dikonfigurasi. Pod workload placeholder dievict dan tetap dalam status Pending karena sumber daya node tidak mencukupi.

    • Workload aktual placeholder-test dideploy dengan cepat pada node yang sama tempat workload placeholder berada.

      image

    • Workload placeholder dievict dan masuk ke status Pending.

      image

  3. Karena node pool telah mengaktifkan auto-scaling, ketidakcukupan sumber daya node memicu scale-out node. Workload placeholder dijadwalkan ke node baru yang di-scale-out, dan statusnya menjadi Running.

    image

Referensi

Untuk scale-out elastis dengan penerapan multi-zona dalam skenario ketersediaan tinggi, lihat Achieve Fast Elastic Scale-out in Multiple Zones Simultaneously.