All Products
Search
Document Center

Container Service for Kubernetes:Tentukan alokasi sumber daya untuk ECS dan ECI

Last Updated:Mar 07, 2026

Saat menyebarluaskan layanan di kluster ACK, Anda dapat menggunakan toleransi dan afinitas node untuk menentukan apakah hanya menggunakan sumber daya ECS atau ECI. Anda juga dapat secara otomatis meminta sumber daya ECI ketika sumber daya ECS tidak mencukupi. Hal ini memungkinkan Anda mengonfigurasi kebijakan penjadwalan guna memenuhi kebutuhan sumber daya elastis berbagai skenario workload.

Konsep terkait

  • Taints: Aturan yang diterapkan pada node untuk mencegah Pod tertentu dijadwalkan ke node tersebut.

  • Tolerations: Properti yang diterapkan pada Pod sehingga dapat mengabaikan taints suatu node selama proses penjadwalan.

  • Node affinity: Properti Pod yang menjadwalkan Pod ke node dengan label tertentu. Terdapat dua jenis:

    • requiredDuringSchedulingIgnoredDuringExecution: Persyaratan wajib. Aturan ini harus dipenuhi agar penjadwal dapat menjadwalkan Pod.

    • preferredDuringSchedulingIgnoredDuringExecution: Persyaratan opsional. Penjadwal berusaha menemukan node yang memenuhi aturan tersebut; jika tidak ditemukan, Pod tetap akan dijadwalkan.

Untuk informasi lebih lanjut, lihat Taints and Tolerations dan Node affinity.

Prasyarat

  • Kluster merupakan ACK Managed Cluster Pro Edition dan versinya v1.22 atau lebih baru.

  • Komponen ack-virtual-node versi v2.10.0 atau lebih baru telah dideploy di kluster. Untuk informasi lebih lanjut tentang cara menginstal dan melakukan upgrade komponen ack-virtual-node, lihat Virtual nodes.

  • Versi komponen kube-scheduler di kluster adalah v5.9 atau lebih baru, dan kebijakan penjadwalan node virtual telah diaktifkan.

    Pada halaman Add-ons, temukan Kube Scheduler, klik Configuration, lalu pastikan bahwa Enable Virtual Node-based Pod Scheduling telah dipilih.

Contoh konfigurasi

Node virtual yang dideploy di kluster ACK memiliki taint bawaan: virtual-kubelet.io/provider=alibabacloud:NoSchedule. Taint ini mencegah penggunaan sumber daya ECI secara tidak disengaja. Untuk menjadwalkan Pod ke node virtual dan menggunakan sumber daya ECI, Anda harus mengonfigurasi toleransi terhadap taint ini.

      tolerations:
      - key: virtual-kubelet.io/provider
        operator: Equal
        value: alibabacloud
        effect: NoSchedule

Anda dapat menggabungkan toleransi dan afinitas node untuk menerapkan kebijakan penjadwalan hibrida dengan aturan preferensi maupun wajib, sehingga memenuhi berbagai kebutuhan sumber daya dari layanan yang berbeda.

  • Prioritaskan ECS: Utamakan penggunaan sumber daya ECS. Jika sumber daya ECS di kluster tidak mencukupi, gunakan sumber daya ECI.

  • Gunakan hanya ECI: Gunakan hanya sumber daya ECI dan jangan gunakan sumber daya ECS di kluster.

  • Gunakan hanya ECS: Gunakan hanya sumber daya ECS yang tersedia di kluster.

Prioritaskan ECS

Untuk menjadwalkan Pod ke node virtual, tambahkan toleransi terhadap taint bawaan pada node virtual tersebut. Anda juga dapat mengonfigurasi afinitas node dengan menggunakan preferredDuringSchedulingIgnoredDuringExecution untuk menetapkan preferensi penjadwalan yang mengutamakan node tanpa label type: virtual-kubelet (node ECS).

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ecs-prefer
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      tolerations:
      - key: virtual-kubelet.io/provider
        operator: Equal
        value: alibabacloud
        effect: NoSchedule
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: type
                operator: NotIn
                values:
                - virtual-kubelet
      containers:
      - name: my-container
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
Catatan

Saat mengonfigurasi afinitas node, perhatikan hal berikut:

  • Jika Anda menentukan beberapa matchExpressions di bawah nodeSelectorTerms, Pod akan dijadwalkan ke node jika salah satu ekspresi terpenuhi (logika OR). Jika Anda menentukan beberapa ekspresi dalam satu matchExpressions, Pod hanya akan dijadwalkan ke node jika semua ekspresi terpenuhi (logika AND).

  • Menggunakan preferredDuringSchedulingIgnoredDuringExecution untuk memprioritaskan penjadwalan ke ECS tidak menjamin bahwa Pod hanya akan dijadwalkan ke ECI saat sumber daya ECS tidak mencukupi. Pod mungkin tetap dijadwalkan ke ECI meskipun sumber daya ECS tersedia. Untuk persyaratan yang lebih ketat, gunakan requiredDuringSchedulingIgnoredDuringExecution untuk mengonfigurasi aturan wajib yang lebih spesifik.

Untuk memprioritaskan penyebaran Pod ke node ECS dengan label tertentu, seperti label_1=key_1, dan menggunakan node virtual untuk skalabilitas elastis saat sumber daya node tersebut tidak mencukupi, gunakan konfigurasi YAML berikut.

Perluas untuk melihat detail YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: some-ecs-prefer
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      tolerations:
      - key: virtual-kubelet.io/provider
        operator: Equal
        value: alibabacloud
        effect: NoSchedule
      affinity:
        nodeAffinity:
    # Menentukan bahwa Pod harus dijadwalkan ke node dengan label label_1:key_1 atau label type:virtual-kubelet.
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: label_1
                operator: In
                values:
                - key_1
            - matchExpressions:
              - key: type
                operator: In
                values:
                - virtual-kubelet
    # Menentukan bahwa Pod diprioritaskan dijadwalkan ke node dengan label label_1:key_1, lalu ke node dengan label type:virtual-kubelet.
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            preference:
              matchExpressions:
              - key: label_1
                operator: In
                values:
                - key_1
          - weight: 1
            preference:
              matchExpressions:
              - key: type
                operator: In
                values:
                - virtual-kubelet
      containers:
      - name: my-container
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

Gunakan hanya ECI

Untuk menjadwalkan Pod ke node virtual, tambahkan toleransi terhadap taint bawaan mereka dan konfigurasikan afinitas node dengan menggunakan requiredDuringSchedulingIgnoredDuringExecution untuk mewajibkan agar Pod hanya dijadwalkan ke node dengan label type: virtual-kubelet (node virtual).

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eci-only
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      tolerations:
      - key: virtual-kubelet.io/provider
        operator: Equal
        value: alibabacloud
        effect: NoSchedule
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: In
                values:
                - virtual-kubelet
      containers:
      - name: my-container
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            

Gunakan hanya ECS

Node virtual memiliki taint bawaan. Jika Anda tidak mengonfigurasi toleransi terhadap taint ini, Pod hanya akan dijadwalkan ke node ECS.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ecs-only
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6