All Products
Search
Document Center

Container Service for Kubernetes:Buat kelompok node ARM dan jadwalkan workload ke node ARM

Last Updated:Jun 22, 2026

Jika kluster Anda berisi node ARM dan x86, Anda dapat menggunakan fitur penjadwalan native Kubernetes untuk menjadwalkan workload khusus ARM ke node ARM atau memberikan preferensi penjadwalan workload multi-arsitektur ke node ARM.

Prasyarat

Catatan penggunaan

Jika kluster ACK Anda berisi node ARM dan x86, tambahkan taint kubernetes.io/arch=arm64:NoSchedule ke node ARM Anda. Hal ini mencegah aplikasi dan komponen yang tidak mendukung arsitektur ARM dijadwalkan secara keliru ke node tersebut. Jika kluster Anda menjalankan versi Kubernetes sebelum v1.24, Anda juga harus mendeklarasikan toleransi terhadap taint kubernetes.io/arch=arm64:NoSchedule saat menggunakan nodeSelector atau nodeAffinity untuk menjadwalkan aplikasi ke node ARM. Untuk melakukannya, tambahkan kunci tolerations yang sesuai untuk taint kubernetes.io/arch=arm64:NoSchedule. Untuk kluster yang menjalankan Kubernetes v1.24 atau lebih baru, penjadwal secara otomatis mengenali taint kubernetes.io/arch=arm64:NoSchedule pada node ARM, sehingga toleration tidak diperlukan.

Tagihan

Untuk informasi selengkapnya tentang tipe instans ECS yang menggunakan arsitektur ARM dan harganya, lihat topik berikut:

Buat kluster atau kelompok node ARM

Anda dapat menambahkan node ARM saat membuat kluster ACK baru atau menambahkan kelompok node ARM ke kluster yang sudah ada.

Saat pembuatan kluster

Saat mengonfigurasi kelompok node selama pembuatan kluster, di bagian Instance Type, atur Architecture ke Arm. Lalu, pilih tipe instans dari keluarga instans tujuan umum g8m dan konfigurasikan parameter lainnya untuk membuat kluster. Untuk informasi selengkapnya tentang cara membuat kluster, lihat Buat kluster ACK yang dikelola.image.png

Catatan

Buka Tipe Instans ECS yang Tersedia untuk Setiap Wilayah untuk memeriksa ketersediaan instans berdasarkan wilayah.

Di kluster yang sudah ada

Saat membuat kelompok node, di bagian Instance Type, atur Architecture ke Arm. Lalu, pilih tipe instans dan konfigurasikan parameter lainnya untuk membuat kelompok node. Untuk informasi selengkapnya tentang cara membuat kelompok node, lihat Buat dan kelola kelompok node.

Catatan

Buka Tipe Instans ECS yang Tersedia untuk Setiap Wilayah untuk memeriksa ketersediaan instans berdasarkan wilayah.

Jadwalkan workload khusus ARM ke node ARM

Jika kluster Anda berisi node ARM dan x86, pastikan aplikasi yang hanya mendukung arsitektur ARM dijadwalkan ke node ARM agar pod-nya tidak gagal dimulai di node yang tidak kompatibel. Secara default, semua node ARM memiliki label kubernetes.io/arch=arm64. Anda dapat menggunakan nodeSelector atau nodeAffinity untuk men-deploy aplikasi ke node ARM.

nodeSelector

Tambahkan nodeSelector berikut ke spec pod Anda untuk menjadwalkan pod ke node ARM. Ini menjadwalkan workload hanya ke node dengan label kubernetes.io/arch: arm64, yang ada di semua node ARM dalam kluster ACK.

nodeSelector:
  kubernetes.io/arch: arm64 # Tentukan node ARM.

Anda dapat menggunakan contoh YAML berikut untuk men-deploy aplikasi tanpa status ke node ARM.

Contoh YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: only-arm
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        kubernetes.io/arch: arm64 # Tentukan node ARM.
      containers:
      - name: nginx
        image: nginx

nodeAffinity

Anda dapat menggunakan afinitas node untuk menjadwalkan pod ke node ARM. Aturan berikut menjadwalkan pod hanya ke node dengan label kubernetes.io/arch=arm64.

Saat menggunakan aturan afinitas ini, penjadwal secara otomatis menambahkan toleransi terhadap taint kubernetes.io/arch=arm64:NoSchedule.

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/arch
          operator: In
          values:
          - arm64

Anda dapat menggunakan contoh YAML berikut untuk men-deploy aplikasi tanpa status ke node ARM.

Contoh YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: only-arm
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64
      containers:
      - name: nginx
        image: nginx

Jadwalkan workload multi-arch ke node ARM

Secara default, ACK menjadwalkan semua workload ke node x86. Jika sumber daya node x86 tidak mencukupi, pod tetap dalam status pending alih-alih dijadwalkan ke node ARM yang tersedia. Jika aplikasi Anda menggunakan gambar multi-arsitektur yang mendukung arsitektur x86 dan ARM, Anda harus mengonfigurasi preferensi penjadwalan untuk memanfaatkan node dengan arsitektur berbeda.

Misalnya, Anda dapat mengonfigurasi afinitas node untuk memberikan preferensi pada node ARM atau x86, lalu beralih ke node arsitektur lain jika node yang diprioritaskan tidak memiliki sumber daya yang cukup.

      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64

Beri preferensi pada node ARM

Contoh YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: arm-prefer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
# Jadwalkan workload secara preferensial ke node ARM.
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64
      containers:
      - name: my-container
        image: nginx

Beri preferensi pada node x86

Contoh YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: amd-prefer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
# Jadwalkan workload secara preferensial ke node x86.
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - amd64
      containers:
      - name: my-container
        image: nginx

FAQ

Apakah saya dapat menggunakan instans preemptible berbasis ARM?

Instans preemptible berbasis ARM tersedia. Untuk detail penggunaan, lihat Gunakan instans preemptible.

Batasan node ARM

Saat ini, hanya kategori Add-on berikut yang mendukung arsitektur ARM:

  • Core Components

  • Logs and Monitoring

  • Storage

  • Networking

Komponen Marketplace tidak mendukung arsitektur ARM.

Referensi