All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan eci-profile

Last Updated:Aug 21, 2026

Untuk menghindari modifikasi file YAML aplikasi, ECI menyediakan fitur eci-profile. eci-profile adalah ConfigMap tingkat kluster yang memungkinkan Anda menentukan aturan dengan selector untuk secara otomatis menjadwalkan pod ke ECI dan menyuntikkan konfigurasi tertentu. Topik ini menjelaskan cara mengonfigurasi eci-profile.

Cara kerja

Saat menggunakan ECI di kluster ACK melalui Virtual Kubelet (VK), yang diterapkan sebagai add-on ack-virtual-node, Anda mungkin menghadapi masalah berikut:

  • Tim aplikasi harus memodifikasi file YAML untuk menjadwalkan pod ke ECI.

  • Tim aplikasi harus memodifikasi file YAML untuk mengaktifkan fitur lanjutan khusus ECI.

Masalah-masalah tersebut mengaburkan batas antara operasi platform dan manajemen aplikasi. Untuk mengatasinya, ECI menyediakan fitur eci-profile yang menawarkan tiga kemampuan berikut:

  • ECI Scheduler

    Pada kluster hibrida yang menggunakan ECI dan node reguler, Anda dapat menjadwalkan pod ke ECI dengan mengonfigurasi label pod, label namespace, atau penjadwalan elastis ECI. Namun, metode-metode tersebut memerlukan perubahan pada resource yang sudah ada dan tidak sepenuhnya zero-touch.

    Untuk mengatasi hal ini, ECI Scheduler memperkenalkan mekanisme penjadwalan baru berbasis mutating webhook. Di dalam eci-profile, Anda dapat menentukan selector kustom yang menyaring pod berdasarkan label pod atau label namespace-nya. Pod yang sesuai dengan kriteria selector akan secara otomatis dijadwalkan ke ECI.

  • ECI Effect

    Beberapa fitur ECI—seperti menentukan tipe instans ECS, mengaktifkan cache gambar, atau mengonfigurasi layanan NTP—mengharuskan Anda menambahkan anotasi atau label ke pod. Untuk informasi lebih lanjut, lihat ECI Pod Annotation.

    ECI Effect mengotomatiskan proses ini dengan menyuntikkan anotasi dan label. Di dalam eci-profile, Anda dapat menentukan selector yang mencakup kriteria pencocokan serta anotasi dan label yang akan disuntikkan. Pod yang sesuai dengan selector akan secara otomatis dijadwalkan ke ECI, dan anotasi serta label yang ditentukan akan disuntikkan.

  • Pembaruan panas (hot updates)

    eci-profile mencakup pengaturan seperti ClusterIP, mode cloud hibrida, pengumpulan log, dan vSwitch. Anda dapat memperbarui pengaturan ini sesuai kebutuhan.

    • Anda tidak perlu me-restart VK saat memperbarui konfigurasi.

    • Konfigurasi yang diperbarui langsung berlaku untuk pod ECI baru. Untuk pod ECI yang sudah ada, Anda harus melakukan rolling update agar perubahan diterapkan.

Prasyarat

  • Pastikan VK (add-on ack-virtual-node) di kluster Anda telah diperbarui ke versi terbaru. Untuk informasi selengkapnya tentang cara memperbarui komponen, lihat Manage components.

  • Untuk menggunakan fitur ECI Scheduler, Anda harus mengaktifkan webhook. Pod di kluster ACK Serverless dijadwalkan ke ECI secara default dan tidak memerlukan fitur ECI Scheduler.

Konfigurasi

Saat sebuah pod dibuat, sistem menggunakan konfigurasi di bidang data ConfigMap eci-profile di namespace kube-system untuk membuat pod tersebut. Anda dapat melihat file YAML eci-profile dengan menjalankan perintah kubectl get cm -n kube-system eci-profile -o yaml. Berikut adalah templat file YAML eci-profile:

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****

Anda dapat memodifikasi konfigurasi data di eci-profile untuk mengonfigurasi selector atau memperbarui parameter tingkat kluster.

Parameter

Deskripsi

Detail

selectors

Menentukan selector kustom (objectSelector dan namespaceSelector) dan efek untuk mengimplementasikan fitur ECI Scheduler dan ECI Effect. Anda dapat mengonfigurasi selector sesuai kebutuhan.

Configure selectors

Parameter tingkat kluster selain selectors, seperti vpcId dan vSwitchIds.

Ini adalah parameter tingkat kluster yang mendukung pembaruan panas. Anda dapat memperbarui nilainya sesuai kebutuhan.

Update cluster-level parameters

Anda dapat memodifikasi eci-profile dengan salah satu cara berikut:

  • Gunakan perintah kubectl edit:

    kubectl edit configmap eci-profile -n kube-system
  • Gunakan Konsol ACK:

    1. Masuk ke Konsol ACK.

    2. Pada halaman Clusters, temukan kluster target dan klik namanya.

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

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

    5. Temukan eci-profile dan klik Edit YAML.

Konfigurasikan selector

Bidang selectors menentukan konfigurasi untuk ECI Scheduler dan ECI Effect. Saat sebuah pod dibuat, sistem mengevaluasi selector terhadap pod tersebut. Jika label pod cocok, pod tersebut secara otomatis dijadwalkan ke ECI, dan anotasi atau label disuntikkan untuk mengaktifkan fitur ECI.

Bidang selectors dapat berisi beberapa selector. Pada setiap selector, Anda harus mendeklarasikan name dan secara opsional dapat menyertakan bidang-bidang berikut:

  • namespaceSelector: label namespace yang akan dicocokkan.

  • objectSelector: label pod yang akan dicocokkan.

  • effect: anotasi dan label yang akan disuntikkan secara dinamis.

Berikut adalah templat untuk konfigurasi selectors:

Catatan

Rancang selector berdasarkan kebutuhan workload Anda. Hapus komentar dari konfigurasi sebelum menerapkannya.

data:
  selectors: |
    [
      {
        "name": "selector-demo1", # Nama selector. Wajib diisi. Tidak boleh kosong.
        "namespaceSelector": {    # Cocokkan berdasarkan label namespace. Opsional.
          "matchLabels": {        # Label namespace yang dicocokkan. Beberapa label menggunakan logika AND.
            "eci": "true"
          }
        },
        "objectSelector": {       # Cocokkan berdasarkan label pod. Opsional.
          "matchLabels": {        # Label pod yang dicocokkan. Beberapa label menggunakan logika AND.
            "eci": "true"
          }
        },
        "effect": {               # Anotasi dan label yang disuntikkan. Opsional.
          "annotations": {
            "k8s.aliyun.com/eci-use-specs": "ecs.c6.xlarge"
          },
          "labels": {
            "created-by-eci": "true"
          }
        }
      },
      {
        "name": "selector-demo2",   
        "objectSelector": {      
          "matchLabels": {     
            "eci": "test"
    	  }
        }
      }
    ]

Pada templat di atas, selector bernama selector-demo1 menerapkan logika berikut:

Jika sebuah pod berada di namespace dengan label eci: true dan pod tersebut memiliki label eci: true, pod tersebut secara otomatis dijadwalkan ke ECI. Sistem juga menambahkan anotasi "k8s.aliyun.com/eci-use-specs": "ecs.c6.xlarge" dan label created-by-eci: true ke pod tersebut.

Penting
  • Pada sebuah selector, konfigurasikan minimal salah satu dari namespaceSelector atau objectSelector. Jika keduanya dikonfigurasi, pod harus memenuhi keduanya. Jika tidak ada yang dikonfigurasi tetapi effect ada, efek tersebut berlaku untuk semua pod yang dijadwalkan ke ECI.

  • Jika Anda mengonfigurasi beberapa selector, sistem mengevaluasinya secara berurutan. Setelah ditemukan kecocokan, sistem menyuntikkan anotasi dan label yang didefinisikan di effect tanpa menimpa nilai yang sudah ada. Untuk anotasi dan label duplikat, nilai yang didefinisikan pada pod memiliki prioritas tertinggi, diikuti oleh effect dari selector pertama yang cocok, dan seterusnya.

Setelah mengonfigurasi selector, jalankan perintah berikut untuk memverifikasi konfigurasi. Jika YAML yang dikembalikan mencakup selector Anda, konfigurasi berhasil. Jika tidak, periksa apakah format selector sudah benar.

kubectl get mutatingwebhookconfigurations -o yaml vk-webhook

Contoh 1: Jadwalkan pod tertentu

Contoh ini mengonfigurasi namespaceSelector dan objectSelector untuk perilaku berikut:

Jika sebuah pod memiliki label created-by-eci: true dan berada di namespace dengan label type: eci, pod tersebut dijadwalkan ke ECI.

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

Contoh 2: Gunakan instans GPU

Contoh ini mengonfigurasi namespaceSelector dan effect untuk perilaku berikut:

Jika sebuah pod berada di namespace dengan label gpu: true, pod tersebut dijadwalkan ke ECI. Sistem menggunakan tipe instans ECS berakselerasi GPU yang ditentukan ecs.gn6v-c8g1.2xlarge dan menambahkan label gpu: test.

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: Aktifkan cache gambar otomatis

Contoh ini mengonfigurasi objectSelector dan effect untuk perilaku berikut:

Jika sebuah pod memiliki label imc: auto, pod tersebut dijadwalkan ke ECI dan fitur pencocokan cache gambar otomatis diaktifkan.

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

Perbarui parameter kluster

Parameter tingkat kluster di bidang data, seperti vpcId dan vSwitchIds, menentukan pengaturan VPC dan vSwitch. Anda dapat memperbarui parameter ini sesuai kebutuhan. Pembaruan langsung berlaku tanpa perlu me-restart VK. Parameter berikut didukung:

Catatan

Saat Anda membuat pod ECI, sistem menggunakan nilai-nilai ini kecuali jika ditimpa dalam spesifikasi pod.

Parameter

Contoh

Deskripsi

enableClusterIp

"true"

Menentukan apakah akan mendukung ClusterIP.

enableLinuxArm64Node

"false"

Menentukan apakah akan mengaktifkan node berbasis ARM. Untuk informasi selengkapnya, lihat Schedule pods to ARM-based virtual nodes.

enableLogController

"false"

Menentukan apakah akan mengaktifkan pengumpulan log berdasarkan CRD Log Service. Jika Anda mengatur parameter ini ke true, Anda juga harus mengonfigurasi

slsMachineGroup.

enablePVCController

"false"

Menentukan apakah akan mengaktifkan ekspansi disk online. Jika diatur ke true, Anda dapat melakukan ekspansi online untuk PVC yang terikat ke disk cloud.

enablePrivateZone

"false"

Menentukan apakah akan menggunakan PrivateZone untuk resolusi DNS.

enableReuseSSLKey

"false"

Menentukan apakah akan mengaktifkan penggunaan ulang kunci SSL. Jika diatur ke true, kunci SSL digunakan kembali saat Anda membuat pod ECI untuk meningkatkan efisiensi pembuatan.

Penting

Secara default, saat Anda membuat pod ECI, VK mengeluarkan sertifikat SSL berbeda untuk setiap pod ECI, yang mengurangi efisiensi pembuatan dalam skala besar. Jika Anda mengaktifkan penggunaan ulang kunci SSL, VK mengeluarkan sertifikat SSL yang sama untuk semua pod ECI. Hal ini meningkatkan efisiensi tetapi mengurangi keamanan.

securityGroupId

sg-2ze0b9o8pjjzts4h****

ID grup keamanan tempat pod ECI berada.

slsMachineGroup

"test-mg"

Kelompok mesin tempat pod ECI berada. Parameter ini wajib diisi saat enableLogController diatur ke true.

vSwitchIds

vsw-2zeet2ksvw7f14ryz****

ID vSwitch tempat pod ECI berada. Anda dapat menentukan beberapa ID, dipisahkan koma.

vpcId

vpc-2zeghwzptn5zii0w7****

ID VPC tempat pod ECI berada.

Berikut adalah contoh konfigurasi:

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****