全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Konfigurasikan sumber daya ACK yang dapat dioverkomit secara dinamis dalam proxy sidecar

更新时间:Jul 06, 2025

Ketika mode overkomit sumber daya dinamis diaktifkan untuk kluster Container Service for Kubernetes (ACK) Pro yang terhubung ke instance Service Mesh (ASM), proxy sidecar yang disuntikkan ke dalam Deployment mendukung sumber daya yang dapat dioverkomit secara dinamis untuk meningkatkan pemanfaatan sumber daya kluster. Topik ini menjelaskan cara mengonfigurasi sumber daya ACK yang dapat dioverkomit secara dinamis dalam proxy sidecar.

Prasyarat

  • Sebuah kluster ACK Pro telah dibuat. Untuk informasi lebih lanjut, lihat Buat Kluster ACK Pro.

    Catatan

    Hanya kluster ACK Pro yang mendukung konfigurasi sumber daya yang dapat dioverkomit secara dinamis.

  • Kluster ACK Pro telah diaktifkan dengan fitur overkomit sumber daya dinamis. Untuk informasi lebih lanjut, lihat Aktifkan Overkomit Sumber Daya Dinamis.

  • Kluster ACK Pro telah ditambahkan ke instance ASM versi 1.16 atau lebih baru. Untuk informasi lebih lanjut, lihat Tambahkan Kluster ke Instance ASM.

Pengenalan fitur overkomit sumber daya dinamis

Dalam Kubernetes, kubelet mengelola sumber daya yang digunakan oleh pod pada node berdasarkan kelas kualitas layanan (QoS) dari pod tersebut. Sebagai contoh, kubelet mengontrol prioritas out of memory (OOM). Kelas QoS sebuah pod bisa berupa Guaranteed, Burstable, atau BestEffort. Kelas QoS pod bergantung pada permintaan dan batas sumber daya CPU dan memori yang dikonfigurasi untuk pod tersebut.

ack-koordinator dapat melakukan overkomit sumber daya secara dinamis. ack-koordinator memantau beban node secara real-time dan kemudian menjadwalkan sumber daya yang dialokasikan ke pod tetapi tidak digunakan. Untuk membedakan sumber daya yang dapat dioverkomit secara dinamis dari sumber daya biasa, ack-koordinator memberikan prioritas Batch kepada sumber daya yang dapat dioverkomit secara dinamis, termasuk batch-cpu dan batch-memory. Untuk informasi lebih lanjut, lihat Aktifkan Overkomit Sumber Daya Dinamis.

Prosedur

  1. Deploy ConfigMap ack-slo-config.

    1. Buat file bernama configmap.yaml yang berisi konten berikut.

      Anda dapat mengelola sumber daya secara fleksibel dengan memodifikasi item konfigurasi dalam ConfigMap. Untuk informasi lebih lanjut tentang item konfigurasi, lihat Aktifkan Overkomit Sumber Daya Dinamis.

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: ack-slo-config
        namespace: kube-system
      data:
        colocation-config: |
          {
            "enable": true,
            "metricAggregateDurationSeconds": 60,
            "cpuReclaimThresholdPercent": 60,
            "memoryReclaimThresholdPercent": 70,
            "memoryCalculatePolicy": "usage"
          }
    2. Periksa apakah ConfigMap ack-slo-config ada di namespace kube-system.

      • Jika ConfigMap ack-slo-config ada, Anda dapat menjalankan perintah kubectl patch untuk memperbarui ConfigMap. Ini menghindari perubahan pengaturan lain dalam ConfigMap.

        kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)"
      • Jika ConfigMap ack-slo-config tidak ada, jalankan perintah berikut untuk membuat ConfigMap bernama ack-slo-config:

        kubectl apply -f configmap.yaml
  2. Jalankan perintah berikut untuk menanyakan jumlah total sumber daya Batch saat ini:

    # Ganti $nodeName dengan nama node yang ingin Anda tanyakan.
    kubectl get node $nodeName -o yaml

    Output yang Diharapkan:

    #Node
    status:
      allocatable:
        # Unit: millicores. Dalam contoh berikut, 50 core dapat dialokasikan.
        kubernetes.io/batch-cpu: 50000
        # Unit: bytes. Dalam contoh berikut, 50 GB memori dapat dialokasikan.
        kubernetes.io/batch-memory: 53687091200
  3. Konfigurasikan sumber daya yang dapat dioverkomit secara dinamis dalam proxy sidecar.

    Anda dapat mengonfigurasi sumber daya ACK yang dapat dioverkomit secara dinamis untuk container proxy sidecar yang disuntikkan dan container istio-init.

    1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

    2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sebelah kiri, pilih Data Plane Component Management > Sidecar Proxy Setting.

    3. Di tab global halaman Sidecar Proxy Setting, klik Resource Settings, pilih Set ACK Resources That Can Be Dynamically Overcommitted for Sidecar Proxy, konfigurasikan parameter terkait, lalu klik Update Settings di bagian bawah halaman.

      Resource Limits dan Required Resources dapat diatur ke nilai yang sama atau berbeda. Kami merekomendasikan Anda mengonfigurasi Resource Limits dan Required Resources berdasarkan jenis beban kerja.

      • Jika kelas QoS beban kerja adalah Guaranteed, kami merekomendasikan Anda mengaturnya ke nilai yang sama.

      • Jika Anda menggunakan jenis pod lainnya, kami merekomendasikan Anda menjaga nilai Required Resources lebih kecil daripada nilai Resource Limits. Persyaratan konfigurasi ini juga berlaku untuk sumber daya biasa.

      Contoh Konfigurasi:

      Item konfigurasi

      Item konfigurasi anak

      Deskripsi

      Configure Resources for Injected Sidecar Proxy (ACK Dynamically Overcommitted Resources)

      Resource Limits

      Dalam contoh ini, atur CPU ke 2000 millicores dan Memory ke 2048 MiB.

      Required Resources

      Dalam contoh ini, atur CPU ke 200 millicores dan Memory ke 256 MiB.

      Configure Resources for istio-init Container (ACK Dynamically Overcommitted Resources)

      Resource Limits

      Dalam contoh ini, atur CPU ke 1000 millicores dan Memory ke 1024 MiB.

      Required Resources

      Dalam contoh ini, atur CPU ke 100 millicores dan Memory ke 128 MiB.

  4. Opsional: Deploy aplikasi dan ajukan sumber daya Batch.

    1. Buat file bernama demo.yaml yang berisi konten berikut.

      Berikut adalah file YAML yang membuat Deployment dan mengajukan sumber daya Batch. Tambahkan label ke pod untuk menentukan kelas QoS pod dan tentukan sumber daya Batch di bidang requests dan limits. Dengan cara ini, pod dapat menggunakan sumber daya yang dapat dioverkomit secara dinamis.

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sleep
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: sleep
        template:
          metadata:
            labels:
              app: sleep
              # Wajib. Atur kelas QoS pod ke BestEffort.
              koordinator.sh/qosClass: "BE"
          spec:
            terminationGracePeriodSeconds: 0
            containers:
            - name: sleep
              image: curlimages/curl
              command: ["/bin/sleep", "infinity"]
              imagePullPolicy: IfNotPresent
              resources:
                requests:
                  # Unit: millicores. Dalam contoh berikut, permintaan CPU diatur ke satu core.
                  kubernetes.io/batch-cpu: "1k"
                  # Unit: bytes. Dalam contoh berikut, permintaan memori diatur ke 1 GB.
                  kubernetes.io/batch-memory: "1Gi"
                limits:
                  kubernetes.io/batch-cpu: "1k"
                  kubernetes.io/batch-memory: "1Gi"
    2. Jalankan perintah berikut untuk menerapkan demo.yaml sebagai aplikasi uji:

      kubectl apply -f demo.yaml
  5. Opsional: Periksa apakah batas sumber daya pod BestEffort berlaku.

    Setelah Anda menerapkan aplikasi dan mengajukan sumber daya Batch, Anda dapat memeriksa apakah batas sumber daya pod berlaku. Untuk informasi lebih lanjut, lihat Aktifkan Overkomit Sumber Daya Dinamis.

    1. Masuk ke node tempat pod berada dan jalankan perintah berikut untuk memeriksa batas CPU:

      cat /sys/fs/cgroup/cpu,cpuacct/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod****.slice/cri-containerd-****.scope/cpu.cfs_quota_us

      Output yang Diharapkan:

      # Batas CPU dalam cgroup diatur ke 1 core.
      100000
    2. Masuk ke node tempat pod berada dan jalankan perintah berikut untuk memeriksa batas memori:

      cat /sys/fs/cgroup/memory/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod****.slice/cri-containerd-****.scope/memory.limit_in_bytes

      Output yang Diharapkan:

      # Batas memori dalam cgroup diatur ke 1 GB.
      1073741824

    Jika batas CPU dan memori dalam output sama dengan yang diatur di Langkah4, maka batas sumber daya pod BestEffort berlaku.