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
replicaskumpulan node, Anda tidak dapat menghapusnya. Kumpulan node tidak dapat beralih antara mode statis dan dinamis. -
Batas sumber daya terbatas: Hanya
limits.nodesbidang yang didukung di bagian batas. Batas CPU dan memori tidak berlaku. -
Tidak ada bidang berat:
weightBidang 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.nodeslebih tinggi daripadareplicasuntuk 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.nodeslapangan 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.nodesnilainya 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
expireAfterdanterminationGracePeriodpengaturan -
Periksa penghentian node manual atau acara AWS pemeliharaan