Kolam Node Kapasitas Statis dalam Mode Otomatis EKS - Amazon EKS

Bantu tingkatkan halaman ini

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kolam Node Kapasitas Statis dalam Mode Otomatis EKS

Amazon EKS Auto Mode mendukung kumpulan node berkapasitas statis yang mempertahankan jumlah node tetap terlepas dari permintaan pod. Kumpulan node berkapasitas statis berguna untuk beban kerja yang memerlukan kapasitas yang dapat diprediksi, instance cadangan, atau persyaratan kepatuhan khusus di mana Anda perlu mempertahankan jejak infrastruktur yang konsisten.

Tidak seperti kumpulan node dinamis yang menskalakan berdasarkan permintaan penjadwalan pod, kumpulan node berkapasitas statis mempertahankan jumlah node yang telah Anda konfigurasikan.

Contoh basic

Berikut adalah kumpulan node berkapasitas statis sederhana yang mempertahankan 5 node:

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: my-static-nodepool spec: replicas: 5 # Maintain exactly 5 nodes template: spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["m", "c"] - key: "topology.kubernetes.io/zone" operator: In values: ["us-west-2a", "us-west-2b"] limits: nodes: 8

Konfigurasikan kumpulan node berkapasitas statis

Untuk membuat kumpulan node berkapasitas statis, atur replicas bidang dalam spesifikasi Anda. NodePool replicasBidang mendefinisikan jumlah pasti node yang akan dipertahankan oleh kumpulan node.

Kendala kumpulan node berkapasitas statis

Kumpulan node berkapasitas statis memiliki beberapa kendala dan perilaku penting:

Kendala konfigurasi:

  • Tidak dapat beralih mode: Setelah Anda mengatur replicas kumpulan node, Anda tidak dapat menghapusnya. Kumpulan node tidak dapat beralih antara mode statis dan dinamis.

  • Batas sumber daya terbatas: Hanya limits.nodes bidang yang didukung di bagian batas. Batas CPU dan memori tidak berlaku.

  • Tidak ada bidang berat: weight Bidang tidak dapat diatur pada kumpulan node berkapasitas statis karena pemilihan simpul tidak didasarkan pada prioritas.

Perilaku operasional:

  • Tidak ada konsolidasi: Node dalam kumpulan kapasitas statis tidak dipertimbangkan untuk konsolidasi berdasarkan pemanfaatan.

  • Operasi penskalaan: Operasi skala melewati anggaran gangguan node tetapi masih menghormati. PodDisruptionBudgets

  • Penggantian node: Node masih diganti untuk drift (seperti pembaruan AMI) dan kedaluwarsa berdasarkan konfigurasi Anda.

Menskalakan kumpulan node berkapasitas statis

Anda dapat mengubah jumlah replika dalam kumpulan node berkapasitas statis menggunakan perintah: kubectl scale

# Scale down to 5 nodes kubectl scale nodepool static-nodepool --replicas=5

Saat menurunkan skala, Mode Otomatis EKS akan menghentikan node dengan anggun, menghormati PodDisruptionBudgets dan memungkinkan pod yang sedang berjalan dijadwalkan ulang ke node yang tersisa.

Pantau kumpulan simpul berkapasitas statis

Gunakan perintah berikut untuk memantau kumpulan node kapasitas statis Anda:

# View node pool status kubectl get nodepool static-nodepool # Get detailed information including current node count kubectl describe nodepool static-nodepool # Check the current number of nodes kubectl get nodepool static-nodepool -o jsonpath='{.status.nodes}'

status.nodesBidang menunjukkan jumlah node saat ini yang dikelola oleh kumpulan node, yang harus sesuai dengan replicas jumlah yang Anda inginkan dalam kondisi normal.

Contoh konfigurasi

Kolam simpul kapasitas statis dasar

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: basic-static spec: replicas: 5 template: spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["m"] - key: "topology.kubernetes.io/zone" operator: In values: ["us-west-2a"] limits: nodes: 8 # Allow scaling up to 8 during operations

Kapasitas statis dengan tipe instans tertentu

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: reserved-instances spec: replicas: 20 template: metadata: labels: instance-type: reserved cost-center: production spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "node.kubernetes.io/instance-type" operator: In values: ["m5.2xlarge"] # Specific instance type - key: "karpenter.sh/capacity-type" operator: In values: ["on-demand"] - key: "topology.kubernetes.io/zone" operator: In values: ["us-west-2a", "us-west-2b", "us-west-2c"] limits: nodes: 25 disruption: # Conservative disruption for production workloads budgets: - nodes: 10%

Kumpulan simpul kapasitas statis multi-zona

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: multi-zone-static spec: replicas: 12 # Will be distributed across specified zones template: metadata: labels: availability: high spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "eks.amazonaws.com/instance-category" operator: In values: ["c", "m"] - key: "eks.amazonaws.com/instance-cpu" operator: In values: ["8", "16"] - key: "topology.kubernetes.io/zone" operator: In values: ["us-west-2a", "us-west-2b", "us-west-2c"] - key: "karpenter.sh/capacity-type" operator: In values: ["on-demand"] limits: nodes: 15 disruption: budgets: - nodes: 25%

Praktik terbaik

Perencanaan kapasitas:

  • Tetapkan limits.nodes lebih tinggi daripada replicas untuk memungkinkan penskalaan sementara selama operasi penggantian node.

  • Pertimbangkan kapasitas maksimum yang diperlukan selama node drift atau pembaruan AMI saat menetapkan batas.

Pemilihan contoh:

  • Gunakan jenis instans tertentu ketika Anda memiliki Instans Cadangan atau persyaratan perangkat keras tertentu.

  • Hindari persyaratan yang terlalu ketat yang mungkin membatasi ketersediaan instance selama penskalaan.

Manajemen gangguan:

  • Konfigurasikan anggaran gangguan yang sesuai untuk menyeimbangkan ketersediaan dengan operasi pemeliharaan.

  • Pertimbangkan toleransi aplikasi Anda untuk penggantian node saat menetapkan persentase anggaran.

Pemantauan :

  • Pantau status.nodes lapangan secara teratur untuk memastikan kapasitas yang Anda inginkan tetap terjaga.

  • Siapkan peringatan ketika jumlah node sebenarnya menyimpang dari replika yang diinginkan.

Distribusi zona:

  • Untuk ketersediaan tinggi, sebarkan kapasitas statis di beberapa Availability Zone.

  • Saat Anda membuat kumpulan node berkapasitas statis yang mencakup beberapa zona ketersediaan, Mode Otomatis EKS mendistribusikan node di seluruh zona yang ditentukan, tetapi distribusinya tidak dijamin genap.

  • Untuk distribusi yang dapat diprediksi dan merata di seluruh zona ketersediaan, buat kumpulan node kapasitas statis terpisah, masing-masing disematkan ke zona ketersediaan tertentu menggunakan persyaratan. topology.kubernetes.io/zone

  • Jika Anda membutuhkan 12 node yang didistribusikan secara merata di tiga zona, buat tiga kumpulan node dengan masing-masing 4 replika, bukan satu kumpulan node dengan 12 replika di tiga zona.

Pemecahan masalah

Node tidak mencapai replika yang diinginkan:

  • Periksa apakah limits.nodes nilainya cukup

  • Verifikasi bahwa persyaratan Anda tidak terlalu membatasi pemilihan instans

  • Tinjau kuota AWS layanan untuk jenis dan wilayah instans yang Anda gunakan

Penggantian node terlalu lama:

  • Sesuaikan anggaran gangguan untuk memungkinkan penggantian lebih bersamaan

  • Periksa PodDisruptionBudgets apakah mencegah penghentian node

Penghentian simpul yang tidak terduga:

  • Tinjau expireAfter dan terminationGracePeriod pengaturan

  • Periksa penghentian node manual atau acara AWS pemeliharaan