全部产品
Search
文档中心

Container Service for Kubernetes:Praktik Terbaik untuk Mengaitkan Set Penyebaran dengan Kolam Node

更新时间:Jul 06, 2025

Set penyebaran berisi Instance ECS dari Elastic Compute Service (ECS) yang didistribusikan di beberapa server fisik. Anda dapat menggunakan set penyebaran untuk meningkatkan ketersediaan aplikasi dan menerapkan pemulihan bencana. Kolam node yang dikaitkan dengan set penyebaran berisi node ECS yang didistribusikan di beberapa server fisik. Dengan mengonfigurasi afinitas pod, Anda dapat menyebarkan pod aplikasi ke node ECS yang berbeda, sehingga meningkatkan ketersediaan aplikasi dan memastikan pemulihan bencana.

Prasyarat

Set penyebaran telah dibuat. Untuk informasi lebih lanjut, lihat Langkah 1: Buat Set Penyebaran.

Informasi latar belakang

Untuk memastikan ketersediaan tinggi aplikasi dalam zona, Anda harus mendistribusikan aplikasi di beberapa host. Namun, jika server fisik gagal, semua pod aplikasi terpengaruh. Untuk mengatasi masalah ini, gunakan set penyebaran yang disediakan oleh ECS. Instance ECS dalam set penyebaran didistribusikan di beberapa server fisik dan diisolasi satu sama lain, membantu mencegah gangguan layanan akibat titik kegagalan tunggal. Untuk informasi lebih lanjut tentang set penyebaran, lihat Set Penyebaran.

Batasan

Panduan penggunaan fitur klaster

  • Set penyebaran didukung oleh ACK dedicated cluster dan ACK managed cluster.

  • Anda hanya dapat mengaitkan set penyebaran dengan kolam node saat membuat kolam node. Kolam node yang sudah ada tidak dapat memiliki set penyebaran yang diaktifkan. Hanya satu set penyebaran yang dapat dikaitkan dengan setiap kolam node.

  • Anda tidak dapat secara manual menambahkan atau menghapus Instance ECS dari set penyebaran. Jika ingin mengubah jumlah Instance ECS dalam set penyebaran, skala kolam node yang dikaitkan dengan set penyebaran tersebut. Untuk informasi lebih lanjut, lihat Buat dan Kelola Kolam Node.

  • Setelah mengaitkan set penyebaran dengan kolam node, kolam node tidak mendukung instance preemptible.

Batas kuota dan spesifikasi set penyebaran

  • Batas Kuota Set Penyebaran

    • Secara default, set penyebaran kolam node diimplementasikan berdasarkan strategi ketersediaan tinggi. Dalam set penyebaran yang menggunakan strategi ketersediaan tinggi, Anda dapat membuat hingga 20 Instance ECS per zona. Gunakan rumus berikut untuk menghitung jumlah maksimum Instance ECS yang dapat dibuat dalam set penyebaran di wilayah Alibaba Cloud: 20 × Jumlah zona dalam wilayah. Pastikan ada cukup Instance ECS dalam set penyebaran dan stok yang memadai dari tipe instance yang diperlukan. Untuk informasi lebih lanjut, lihat Set Penyebaran.

      Anda tidak dapat meningkatkan jumlah Instance ECS dalam set penyebaran. Namun, jika ingin meningkatkan jumlah maksimum set penyebaran yang dimiliki akun Alibaba Cloud Anda, ajukan permintaan peningkatan kuota di Konsol Quota Center. Untuk informasi lebih lanjut tentang batasan dan kuota set penyebaran, lihat Set Penyebaran.

    • Kekurangan sumber daya instance dalam wilayah dapat menyebabkan kegagalan dalam membuat Instance ECS atau memulai instance pay-as-you-go yang dihentikan dalam mode ekonomis dalam set penyebaran. Tunggu sejenak dan coba buat atau mulai ulang instance tersebut lagi.

  • Batas Keluarga Instance

    Strategi penyebaran yang didukung dapat bervariasi berdasarkan keluarga instance. Tabel berikut menjelaskan strategi penyebaran yang didukung oleh berbagai keluarga instance.

    Catatan

    Untuk menanyakan keluarga instance yang mendukung strategi penyebaran tertentu, panggil operasi DescribeDeploymentSetSupportedInstanceTypeFamily.

    Strategi Penyebaran

    Keluarga Instance yang Mendukung Strategi Penyebaran

    Strategi Ketersediaan Tinggi atau Strategi Kelompok Ketersediaan Tinggi

    • g8a, g8i, g8y, g7se, g7a, g7, g7h, g7t, g7ne, g7nex, g6, g6e, g6a, g5, g5ne, sn2ne, sn2, and sn1

    • c8a, c8i, c8y, c7se, c7, c7t, c7nex, c7a, c6, c6a, c6e, c5, ic5, and sn1ne

    • r8a, r8i, r8y, r7, r7se, r7t, r7a, r6, r6e, r6a, re6, re6p, r5, re4, se1ne, and se1

    • hfc8i, hfg8i, hfr8i, hfc7, hfg7, hfr7, hfc6, hfg6, hfr6, hfc5, and hfg5

    • d3c, d2s, d2c, d1, d1ne, d1-c14d3, and d1-c8d3

    • i3g, i3, i2, i2g, i2ne, i2gne, and i1

    • ebmg5, ebmc7, ebmg7, ebmr7, sccgn6, scch5, scch5s, sccg5, and sccg5s

    • e, t6, xn4, mn4, n4, e4, n2, and n1

    • gn6i

    Strategi Latensi Rendah

    • g8a, g8i, g8ae, and g8y

    • c8a, c8i, c8ae, and c8y

    • ebmc8i, ebmg8i, and ebmr8i

    • r8a, r8i, r8ae, and r8y

    • ebmc7, ebmg7, and ebmr7

Mengaitkan set penyebaran dengan kolam node di konsol ACK

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, temukan klaster yang ingin dikelola dan klik namanya. Di panel navigasi kiri, pilih Nodes > Node Pools.

  3. Di halaman Node Pools, klik Create Node Pool. Di kotak dialog Create Node Pool, konfigurasikan parameter, pilih set penyebaran, lalu klik Confirm Order.

    Untuk informasi lebih lanjut tentang parameter, lihat Buat Kolam Node.部署集.png

Contoh

Afinitas anti-pod dikonfigurasi untuk pod yang termasuk dalam beban kerja yang sama di kolam node yang sama dan setiap node hanya dapat menampung satu pod

Contoh ini menunjukkan cara menjadwalkan tiga pod replika dalam Deployment ke tiga node yang berbeda.

  1. Buat kolam node yang berisi tiga node dan tentukan ID set penyebaran yang ingin dikaitkan dengan kolam node. Untuk informasi lebih lanjut, lihat Mengaitkan Set Penyebaran dengan Kolam Node di Konsol ACK.

    Setelah membuat kolam node, klik nama kolam node di halaman Node Pools. Tab Nodes menampilkan node yang termasuk dalam kolam node.部署集1.png

    Masuk ke Konsol ECS. Di panel navigasi kiri, pilih Deployment & Elasticity > Deployment Sets. Halaman Deployment Sets menunjukkan bahwa tiga node tersebut termasuk dalam set penyebaran yang ditentukan.部署集2.png

  2. Buat file YAML berdasarkan konten berikut.

    Sebarkan tiga pod dan konfigurasikan anti-afinitas untuk menjadwalkan pod ke tiga node yang berbeda.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx
          labels:
            app: nginx
        spec:
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:  # Konfigurasikan kebijakan penjadwalan. 
              - labelSelector:
                  matchExpressions:
                  - key: app
                    operator: In
                    values:
                    - nginx
                topologyKey: kubernetes.io/hostname
          nodeSelector:
              alibabacloud.com/nodepool-id: <nodepool-id>  # Tentukan ID kolam node. 
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            resources:
              limits:
                cpu: 1
              requests:
                cpu: 1

    Results

    Di halaman Deployments, klik Deployment yang ingin dikelola. Tab Pods menunjukkan bahwa pod dijadwalkan ke tiga node yang berbeda.部署集3.png

Pod yang termasuk dalam beban kerja yang sama di kolam node yang sama dapat dijadwalkan ke node yang berbeda di beberapa zona

  1. Buat kolam node yang berisi empat node, tentukan ID set penyebaran yang ingin dikaitkan dengan kolam node, dan pilih vSwitch yang ditempatkan di beberapa zona. Untuk informasi lebih lanjut, lihat Mengaitkan Set Penyebaran dengan Kolam Node di Konsol ACK.

    Setelah membuat kolam node, klik nama kolam node di halaman Node Pools. Klik tab Nodes, empat node dan empat zona ditampilkan. Instance ECS ditempatkan di empat zona berbeda dan ditambahkan ke set penyebaran yang sama berdasarkan kebijakan distribusi seimbang Auto Scaling.部署集4.png

    Masuk ke Konsol ECS. Di panel navigasi kiri, pilih Deployment & Elasticity > deployment set. Halaman Deployment Sets menunjukkan bahwa empat node dalam kolam node termasuk dalam set penyebaran yang ditentukan.部署集5.png

  2. Buat file YAML berdasarkan konten berikut.

    Anda dapat menggunakan kendala penyebaran topologi pod untuk menjadwalkan pod yang termasuk dalam aplikasi yang sama ke node yang berbeda di beberapa zona. Untuk informasi lebih lanjut, lihat Kendala Penyebaran Topologi Pod.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 4
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx
          labels:
            app: nginx
        spec:
          topologySpreadConstraints:
            - maxSkew: 1
              topologyKey: kubernetes.io/hostname
              whenUnsatisfiable: DoNotSchedule
              labelSelector:
                  matchLabels:
                    app: nginx
            - maxSkew: 1
              topologyKey: topology.kubernetes.io/zone
              whenUnsatisfiable: DoNotSchedule
              labelSelector:
                  matchLabels:
                    app: nginx
          nodeSelector:
              alibabacloud.com/nodepool-id: <nodepool-id>  #Tentukan ID kolam node. 
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            resources:
              limits:
                cpu: 1
              requests:
                cpu: 1

    Results

    Di halaman Deployments, klik Deployment yang ingin dikelola. Tab Pods menunjukkan bahwa pod yang termasuk dalam aplikasi yang sama dijadwalkan ke node yang berbeda di beberapa zona.部署集6

Referensi