全部产品
Search
文档中心

Container Service for Kubernetes:Aktifkan isolasi sumber daya berdasarkan L3 cache dan MBA

更新时间:Jul 02, 2025

Dalam kluster Kubernetes, beberapa pod mungkin diterapkan pada node yang sama untuk berbagi L3 cache (last level cache) dan Memory Bandwidth Allocation (MBA) yang disediakan oleh host. Hal ini dapat menyebabkan aplikasi bersaing untuk mendapatkan sumber daya dalam kondisi yang ketat. Kami menyarankan Anda mengaktifkan isolasi sumber daya untuk aplikasi dengan prioritas berbeda dengan mengontrol L3 cache dan menggunakan fitur MBA. Metode ini memastikan kualitas layanan (QoS) untuk aplikasi prioritas tinggi selama persaingan sumber daya.

Catatan

Untuk lebih memahami dan secara efektif menggunakan fitur ini, kami sarankan Anda merujuk ke dokumentasi resmi Kubernetes berikut: Kelas QoS Pod dan Tetapkan sumber daya memori ke kontainer dan pod.

Ikhtisar

Untuk memanfaatkan sepenuhnya sumber daya komputasi, biasanya pod yang berbeda diterapkan pada node yang sama untuk berbagi L3 cache dan bandwidth memori. Jika Anda tidak mengaktifkan isolasi sumber daya, beban kerja dengan prioritas berbeda mungkin bersaing untuk mendapatkan sumber daya komputasi seperti L3 cache dan bandwidth memori. Akibatnya, jaminan sumber daya untuk tugas prioritas tinggi terganggu, dan QoS mereka menurun.

Resource Director Technology (RDT) mengaktifkan isolasi sumber daya untuk aplikasi dengan prioritas berbeda melalui ConfigMap. Anda dapat mendeklarasikan jumlah sumber daya L3 cache dan MBA yang tersedia di file YAML dari pod BestEffort (BE) untuk secara efektif memastikan QoS dari aplikasi sensitif-latensi (LS).

Prasyarat

Tagihan

Tidak ada biaya yang dikenakan saat Anda menginstal atau menggunakan komponen ack-koordinator. Namun, biaya mungkin dikenakan dalam skenario berikut:

  • ack-koordinator adalah komponen non-managed yang menggunakan sumber daya node pekerja setelah diinstal. Anda dapat menentukan jumlah sumber daya yang diminta oleh setiap modul saat menginstal komponen tersebut.

  • Secara default, ack-koordinator mengekspos metrik pemantauan fitur seperti profil sumber daya dan penjadwalan terperinci sebagai metrik Prometheus. Jika Anda mengaktifkan metrik Prometheus untuk ack-koordinator dan menggunakan Managed Service for Prometheus, metrik ini dianggap sebagai metrik kustom dan biaya akan dikenakan untuk metrik ini. Biaya bergantung pada faktor-faktor seperti ukuran kluster Anda dan jumlah aplikasi. Sebelum mengaktifkan metrik Prometheus, kami sarankan Anda membaca topik Tagihan dari Managed Service for Prometheus untuk mempelajari tentang kuota gratis dan aturan tagihan metrik kustom. Untuk informasi lebih lanjut tentang cara memantau dan mengelola penggunaan sumber daya, lihat Kueri jumlah data observabel dan tagihan.

Langkah 1: Periksa apakah kernel node telah mengaktifkan RDT

Sebelum menggunakan L3 cache dan MBA untuk mengaktifkan isolasi sumber daya, Anda harus mengaktifkan fitur RDT dari kernel.

  1. Jalankan perintah berikut untuk memeriksa apakah fitur RDT dari kernel telah diaktifkan:

    cat /proc/cmdline

    Output yang diharapkan:

    # Konten lain dihilangkan, contoh ini hanya menunjukkan bagian RDT dari field BOOT_IMAGE.
    BOOT_IMAGE=... rdt=cmt,l3cat,l3cdp,mba

    Jika output mencakup opsi l3cat dan mba, fitur RDT telah diaktifkan. Jika tidak, lanjutkan ke langkah berikutnya.

  2. Aktifkan fitur RDT dari kernel.

    1. Ubah file /etc/default/grub untuk menyertakan konfigurasi RDT di field GRUB_CMDLINE_LINUX.

      # Konten lain dihilangkan, contoh ini hanya menunjukkan bagian RDT dari field GRUB_CMDLINE_LINUX.
      GRUB_CMDLINE_LINUX="... rdt=cmt,mbmtotal,mbmlocal,l3cat,l3cdp,mba" 
      Penting

      Pisahkan konfigurasi RDT baru dari pengaturan yang ada dengan spasi.

    2. Jalankan perintah berikut untuk memperbarui file grub.cfg:

      # Jalur file tergantung pada kondisi aktual.
      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    3. Jalankan perintah berikut untuk me-restart node:

      sudo systemctl reboot

Langkah 2: Gunakan fitur isolasi L3 cache dan MBA

Setelah fitur RDT dari kernel diaktifkan, Anda dapat mengaktifkan isolasi L3 cache dan MBA di tingkat kluster menggunakan ConfigMap. Ini memungkinkan Anda menetapkan alokasi sumber daya L3 cache dan MBA untuk pod kelas QoS yang berbeda, memberikan manajemen sumber daya yang fleksibel dan presisi. Setelah dikonfigurasi, Anda dapat menentukan tingkat QoS di file YAML pod untuk membatasi sumber daya L3 cache dan MBA yang tersedia.

  1. Buat file configmap.yaml dengan template YAML berikut:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ack-slo-config
      namespace: kube-system
    data:
      resource-qos-config: |
        {
          "clusterStrategy": {
            "beClass": {
              "resctrlQOS": {
                "enable": true # Atur ke true untuk mengaktifkan isolasi L3 cache dan MBA untuk pod tipe BE.
              }
            }
          }
        }
  2. Periksa apakah ConfigMap ack-slo-config ada di namespace kube-system.

    • Jika ConfigMap ada: Kami sarankan Anda menjalankan perintah kubectl patch untuk memperbarui ConfigMap. Ini menghindari perubahan pengaturan lain di ConfigMap.

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

      kubectl apply -f configmap.yaml
  3. (Opsional) Untuk isolasi terperinci berdasarkan kelas QoS beban kerja, konfigurasikan parameter lanjutan berdasarkan template YAML berikut:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ack-slo-config
      namespace: kube-system
    data:
      resource-qos-config: |
        {
          "clusterStrategy": {
            "lsClass": {
              "resctrlQOS": {
                "enable": true,
                "catRangeEndPercent": 100,
                "mbaPercent": 100
              }
            },
            "beClass": {
              "resctrlQOS": {
                "enable": true,
                "catRangeEndPercent": 30,
                "mbaPercent": 100
              }
            }
          }
        }

    Tabel berikut menjelaskan parameter utama:

    Parameter

    Tipe

    Nilai valid

    Deskripsi

    enable

    Boolean

    • true

    • false

    • true: mengaktifkan isolasi L3 cache dan MBA untuk beban kerja di kluster.

    • false: menonaktifkan isolasi L3 cache dan MBA untuk beban kerja di kluster.

    catRangeEndPercent

    Int

    [0, 100]

    Persentase L3 cache yang dialokasikan untuk kelas QoS masing-masing. Unit: %. Nilai default untuk beban kerja kelas LS adalah 100. Nilai default untuk beban kerja kelas BE adalah 30.

    mbaPercent

    Int

    [0, 100]

    Persentase MBA yang dapat digunakan oleh kelas QoS masing-masing. Unit: %. Anda harus menetapkan nilai menjadi kelipatan 10. Nilai default untuk beban kerja kelas LS dan BE adalah 100.

  4. Gunakan template YAML berikut untuk membuat file bernama pod-demo.yaml. File ini membatasi L3 cache dan bandwidth memori yang dapat digunakan oleh pod BE.

    Catatan

    Untuk menerapkan konfigurasi ke beban kerja, seperti deployment, tetapkan anotasi yang sesuai untuk pod di field template.metadata.

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-demo
      labels:
        koordinator.sh/qosClass: 'BE' # Tetapkan kelas QoS pod menjadi BE.
    spec:
      containers:
      - name: pod-demo
        image: polinux/stress
        resources:
          requests:
            cpu: 1
            memory: "50Mi"
          limits:
            cpu: 1
            memory: "1Gi"
        command: ["stress"]
        args: ["--vm", "1", "--vm-bytes", "256M", "-c", "2", "--vm-hang", "1"]
  5. Jalankan perintah berikut untuk menerapkan pod-demo.yaml di kluster:

    kubectl apply -f pod-demo.yaml