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 kapasitas statis yang mempertahankan jumlah node tetap terlepas dari permintaan pod. Kumpulan node kapasitas 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 kapasitas statis mempertahankan jumlah node yang telah Anda konfigurasikan.

Konfigurasikan kumpulan node kapasitas statis

Untuk membuat kumpulan node kapasitas statis, atur replicas bidang dalam NodePool spesifikasi Anda. replicasBidang mendefinisikan jumlah pasti node yang akan dipertahankan oleh kumpulan node. Lihat Contoh cara mengkonfigurasireplicas.

Pertimbangan kumpulan node kapasitas statis

Pool node kapasitas 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 kapasitas statis karena pemilihan node tidak didasarkan pada prioritas.

Perilaku operasional:

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

  • 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.

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 instans:

  • 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 kapasitas 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 topology.kubernetes.io/zone persyaratan.

  • 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.

Menskalakan kumpulan node kapasitas statis

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

# 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 kolam simpul kapasitas 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.

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 simpul

Penghentian simpul yang tidak terduga:

  • Tinjau expireAfter dan terminationGracePeriod pengaturan

  • Periksa penghentian node manual atau acara AWS pemeliharaan

Contoh

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%

Kolam 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%

Kapasitas statis dengan reservasi kapasitas

Contoh berikut menunjukkan cara menggunakan kolam node kapasitas statis dengan Reservasi Kapasitas EC2. Untuk informasi selengkapnya tentang penggunaan Reservasi Kapasitas EC2 dengan Mode Otomatis EKS, lihat. Kontrol penyebaran beban kerja ke Reservasi Kapasitas dengan Mode Otomatis EKS

NodeClassmendefinisikan capacityReservationSelectorTerms

apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: capacity-reservation-nodeclass spec: role: AmazonEKSNodeRole securityGroupSelectorTerms: - id: sg-0123456789abcdef0 subnetSelectorTerms: - id: subnet-0123456789abcdef0 capacityReservationSelectorTerms: - id: cr-0123456789abcdef0

NodePoolmereferensikan hal di atas NodeClass dan menggunakankarpenter.sh/capacity-type: reserved.

apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: static-capacity-reservation-nodepool spec: replicas: 5 limits: nodes: 8 # Allow scaling up to 8 during operations template: metadata: {} spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: capacity-reservation-nodeclass requirements: - key: karpenter.sh/capacity-type operator: In values: ['reserved']