All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan eci-profile

Last Updated:Sep 01, 2026

Pada kluster campuran yang menggabungkan node nyata dan node virtual, penjadwalan Pod ke Elastic Container Instance (ECI) serta pengaktifan fitur khusus ECI biasanya memerlukan modifikasi file YAML Pod—mengaburkan batas antara operasi platform dan konfigurasi aplikasi. eci-profile menghilangkan beban tersebut. Sebagai administrator kluster, Anda menetapkan aturan penjadwalan dan injeksi anotasi dalam satu ConfigMap tingkat kluster, sehingga Pod secara otomatis menerima konfigurasi yang tepat tanpa perubahan apa pun pada file YAML aplikasi.

Cara kerja

Saat sebuah Pod dibuat, ack-virtual-node membaca ConfigMap bernama eci-profile di namespace kube-system dan menerapkan konfigurasi pada bagian data-nya ke Pod tersebut.

eci-profile menyediakan tiga kemampuan:

  • ECI Scheduler — Mengarahkan Pod ke ECI berdasarkan label Pod atau label namespace melalui mekanisme mutating webhook, sehingga menghilangkan kebutuhan untuk menambahkan direktif penjadwalan ke setiap file YAML Pod.

  • ECI Effect — Secara otomatis menyuntikkan anotasi dan label ke Pod yang sesuai untuk mengaktifkan fitur lanjutan ECI, seperti menentukan tipe instans Elastic Compute Service (ECS), mengaktifkan cache gambar, dan mengonfigurasi layanan Network Time Protocol (NTP). Untuk daftar lengkap anotasi yang didukung, lihat ECI Pod Annotation.

  • Pembaruan panas (Hot updates) — Perubahan konfigurasi pada eci-profile (seperti alamat IP kluster, cloud hibrida, pengumpulan log, dan vSwitch) langsung berlaku untuk Pod yang baru dibuat tanpa perlu restart ack-virtual-node. Pod yang sudah ada hanya menerapkan perubahan setelah rolling update.

Prasyarat

Sebelum memulai, pastikan bahwa:

  • Add-on ack-virtual-node di kluster Anda menggunakan versi terbaru. Untuk memperbaruinya, lihat Kelola komponen.

  • Mutating webhook diaktifkan di kluster Anda (diperlukan untuk ECI Scheduler). Pada kluster ACK Serverless, Pod dijadwalkan ke ECI secara otomatis sehingga ECI Scheduler tidak diperlukan.

Catatan penggunaan

  • Setelah memperbarui eci-profile, Pod ECI yang baru dibuat langsung menggunakan konfigurasi terbaru. Pod yang sudah ada hanya menggunakan konfigurasi terbaru setelah rolling update.

  • Jika Anda tidak mengonfigurasi namespaceSelector maupun objectSelector untuk suatu selector tetapi mengonfigurasi effect, pengaturan effect tersebut berlaku untuk semua Pod yang dijadwalkan ke ECI.

  • Jika beberapa selector cocok dengan suatu Pod, mereka dievaluasi secara berurutan. Anotasi dan label dari selector yang cocok lebih awal memiliki prioritas lebih tinggi daripada yang cocok kemudian. Namun, anotasi dan label Pod yang sudah ada selalu memiliki prioritas lebih tinggi daripada yang disuntikkan oleh effect.

Lihat eci-profile

Jalankan perintah berikut untuk melihat ConfigMap eci-profile saat ini:

kubectl get cm -n kube-system eci-profile -o yaml

Bagian data dari ConfigMap berisi dua jenis konfigurasi:

Parameter Deskripsi
selectors Menentukan aturan ECI Scheduler dan ECI Effect. Lihat Konfigurasikan selector.
Parameter lain (vpcId, vSwitchIds, dll.) Parameter tingkat kluster yang berlaku jika tidak ada penggantian tingkat Pod. Mendukung pembaruan panas. Lihat Perbarui parameter tingkat kluster.

Contoh eci-profile default tampak seperti berikut:

apiVersion: v1
data:
  enableClusterIp: "true"
  enableHybridMode: "false"
  enableLinuxArm64Node: "false"
  enableLogController: "false"
  enablePVCController: "false"
  enablePrivateZone: "false"
  enableReuseSSLKey: "false"
  featureGates: "WaitForFirstConsumer=false"
  securityGroupId: sg-2zeeyaaxlkq9sppl****
  selectors: ""
  slsMachineGroup: ""
  vSwitchIds: vsw-2ze23nqzig8inprou****,vsw-2ze94pjtfuj9vaymf****
  vpcId: vpc-2zeghwzptn5zii0w7****
kind: ConfigMap
metadata:
  creationTimestamp: "2023-01-11T08:28:14Z"
  name: eci-profile
  namespace: kube-system
  resourceVersion: "356"
  uid: b345fa8c-919e-41fc-a981-57864b1a****

Edit eci-profile

Gunakan salah satu metode berikut untuk mengedit eci-profile.

kubectl

kubectl edit configmap eci-profile -n kube-system

Konsol ACK

  1. Masuk ke Konsol Container Service ACK.

  2. Pada halaman Clusters, klik nama kluster target.

  3. Di panel navigasi kiri, pilih Configurations > ConfigMaps.

  4. Pilih kube-system dari daftar drop-down Namespace.

  5. Temukan eci-profile dan klik Edit YAML di kolom Actions.

Konfigurasikan selector

Selector menentukan Pod mana yang diarahkan ke ECI (ECI Scheduler) dan anotasi atau label mana yang disuntikkan ke Pod tersebut (ECI Effect). Saat sebuah Pod dibuat, sistem mengevaluasi setiap selector secara berurutan dan menerapkan aturan yang sesuai.

Setiap selector mendukung bidang berikut:

  • `name` (wajib) — Nama unik untuk selector.

  • `namespaceSelector` (opsional) — Mencocokkan Pod berdasarkan label namespace. Tentukan label di bawah matchLabels. Beberapa label menggunakan logika AND.

  • `objectSelector` (opsional) — Mencocokkan Pod berdasarkan label Pod. Tentukan label di bawah matchLabels. Beberapa label menggunakan logika AND.

  • `effect` (opsional) — Anotasi dan label yang akan disuntikkan ke Pod yang cocok. Nilai yang disuntikkan tidak menimpa anotasi atau label Pod yang sudah ada.

Penting

Jika namespaceSelector dan objectSelector keduanya dikonfigurasi, Pod harus memenuhi keduanya agar cocok dengan selector. Jika keduanya tidak dikonfigurasi tetapi effect dikonfigurasi, efek tersebut berlaku untuk semua Pod yang dijadwalkan ke ECI.

Templat selector

data:
  selectors: |
    [
      {
        "name": "selector-demo1",         # Wajib. Nama selector unik.
        "namespaceSelector": {            # Opsional. Mencocokkan berdasarkan label namespace.
          "matchLabels": {                # Logika AND antar beberapa label.
            "eci": "true"
          }
        },
        "objectSelector": {               # Opsional. Mencocokkan berdasarkan label Pod.
          "matchLabels": {                # Logika AND antar beberapa label.
            "eci": "true"
          }
        },
        "effect": {                       # Opsional. Anotasi dan label yang akan disuntikkan.
          "annotations": {
            "k8s.aliyun.com/eci-use-specs": "ecs.c6.xlarge"
          },
          "labels": {
            "created-by-eci": "true"
          }
        }
      },
      {
        "name": "selector-demo2",
        "objectSelector": {
          "matchLabels": {
            "eci": "test"
          }
        }
      }
    ]

Pada contoh di atas, selector-demo1 mencocokkan Pod yang memiliki label Pod eci: true dan berada dalam namespace dengan label eci: true. Pod yang cocok dijadwalkan ke ECI dan menerima anotasi k8s.aliyun.com/eci-use-specs: ecs.c6.xlarge serta label created-by-eci: true.

Hapus komentar inline (#) sebelum menerapkan konfigurasi. JSON tidak mendukung komentar.

Verifikasi bahwa selector berlaku

Setelah memperbarui selector, jalankan perintah berikut untuk memastikan selector telah terdaftar:

kubectl get mutatingwebhookconfigurations -o yaml vk-webhook

Jika output berisi selector yang Anda konfigurasi, konfigurasi tersebut aktif. Jika tidak, periksa apakah format JSON selector Anda benar.

Contoh konfigurasi

Contoh 1: Arahkan Pod tertentu ke ECI

Selector berikut mengarahkan Pod ke ECI jika Pod memiliki label created-by-eci: true dan namespace-nya memiliki label type: eci.

data:
  selectors: |
    [
      {
        "name": "eci-selector",
        "namespaceSelector": {
          "matchLabels": {
            "type": "eci"
          }
        },
        "objectSelector": {
          "matchLabels": {
            "created-by-eci": "true"
          }
        }
      }
    ]

Contoh 2: Arahkan Pod ke ECI dengan tipe instans GPU-accelerated

Selector berikut mengarahkan Pod yang namespace-nya memiliki label gpu: true ke ECI, menggunakan tipe instans GPU-accelerated ecs.gn6v-c8g1.2xlarge, serta menambahkan label gpu: test ke Pod yang cocok.

data:
  selectors: |
    [
      {
        "name": "gpu-namespace-selector",
        "namespaceSelector": {
          "matchLabels": {
            "gpu": "true"
          }
        },
        "effect": {
          "annotations": {
            "k8s.aliyun.com/eci-use-specs": "ecs.gn6v-c8g1.2xlarge"
          },
          "labels": {
            "gpu": "test"
          }
        }
      }
    ]

Contoh 3: Arahkan Pod ke ECI dengan pencocokan cache gambar otomatis

Selector berikut mengarahkan Pod dengan label imc: auto ke ECI dan mengaktifkan pencocokan cache gambar otomatis.

data:
  selectors: |
    [
      {
        "name": "autoimc-object-selector",
        "objectSelector": {
          "matchLabels": {
            "imc": "auto"
          }
        },
        "effect": {
          "annotations": {
            "k8s.aliyun.com/eci-auto-imc": "true"
          }
        }
      }
    ]

Perbarui parameter tingkat kluster

Parameter berikut dalam bagian data merupakan nilai default tingkat kluster. Saat sebuah Pod dibuat tanpa penggantian tingkat Pod, nilai dari eci-profile digunakan. Semua parameter mendukung pembaruan panas—perubahan langsung berlaku tanpa perlu merestart ack-virtual-node.

Parameter ini hanya berlaku jika tidak ada konfigurasi tingkat Pod yang menggantikannya.
Parameter Default Deskripsi
enableClusterIp "true" Apakah alamat IP kluster didukung.
enableHybridMode "false" Apakah mode cloud hibrida diaktifkan.
enableLinuxArm64Node "false" Apakah node berbasis ARM diaktifkan. Lihat Jadwalkan Pod ke node virtual berbasis ARM.
enableLogController "false" Apakah Custom Resource Definition (CRD) untuk Simple Log Service digunakan untuk mengumpulkan log Pod. Jika diatur ke "true", konfigurasikan juga slsMachineGroup.
enablePVCController "false" Apakah ekstensi disk online diaktifkan. Jika diatur ke "true", sistem dapat melakukan hot-extend PersistentVolumeClaims (PVC) yang terikat ke disk.
enablePrivateZone "false" Apakah PrivateZone digunakan untuk resolusi nama domain.
enableReuseSSLKey "false" Apakah kunci SSL digunakan ulang di antara Pod. Secara default, ack-virtual-node menerbitkan sertifikat SSL unik untuk setiap Pod. Mengatur ini ke "true" membuat semua Pod berbagi sertifikat yang sama, yang meningkatkan throughput pembuatan Pod tetapi mengurangi keamanan.
featureGates "WaitForFirstConsumer=false" Feature gate canary. Hanya WaitForFirstConsumer yang dapat dikonfigurasi. Lihat catatan di bawah.
securityGroupId Grup keamanan untuk Pod ECI. Contoh: sg-2zeeyaaxlkq9sppl****.
slsMachineGroup Kelompok mesin untuk Pod ECI. Diperlukan saat enableLogController bernilai "true". Contoh: test-mg.
vSwitchIds ID vSwitch untuk Pod ECI. Pisahkan beberapa ID dengan koma. Contoh: vsw-2ze23nqzig8inprou**,vsw-2ze94pjtfuj9vaymf**.
vpcId ID Virtual Private Cloud (VPC) tempat Pod ECI dideploy. Contoh: vpc-2zeghwzptn5zii0w7****.

Tentang `featureGates: WaitForFirstConsumer`

Saat WaitForFirstConsumer diatur ke "true":

  • Add-on csi-provisioner harus menggunakan versi terbaru sebelum mengaktifkan pengaturan ini.

  • PersistentVolume (PV) dan penyimpanan backend hanya dibuat setelah Pod dijadwalkan. Zona dan wilayah yang ditentukan dalam StorageClass tidak lagi digunakan; sebagai gantinya, zona dan wilayah node tempat Pod dijadwalkan digunakan untuk membuat sumber daya penyimpanan. Hal ini memastikan sumber daya komputasi dijadwalkan secara optimal.

Untuk informasi lebih lanjut, lihat Volume binding mode.

Contoh lengkap bagian data:

data:
  enableClusterIp: "true"
  enableHybridMode: "false"
  enableLinuxArm64Node: "false"
  enableLogController: "false"
  enablePVCController: "false"
  enablePrivateZone: "false"
  enableReuseSSLKey: "false"
  securityGroupId: sg-2zeeyaaxlkq9sppl****
  selectors: ""
  slsMachineGroup: ""
  vSwitchIds: vsw-2ze23nqzig8inprou****,vsw-2ze94pjtfuj9vaymf****
  vpcId: vpc-2zeghwzptn5zii0w7****