Sebarkan pod di atas cluster

Aug 20 2020

Saat ini menggunakan kebijakan skala otomatis AWS untuk memulai node pekerja EKS (min + 10 yang diinginkan, maks 15) pada waktu yang tetap setiap hari. Ada 120 pod dan 30 penerapan.

Jelas, hanya satu node yang akan aktif terlebih dahulu. Kemudian simpul kedua. Setelah itu node terakhir akan naik. Oleh karena itu, Kubernetes menambahkan semua pod di node pertama. Apakah ada cara agar pod didistribusikan secara merata dalam skenario tersebut?

Jawaban

1 EduardoBaitello Oct 23 2020 at 21:30

Lihatlah Descheduler . Proyek ini berjalan sebagai Pekerjaan Kubernetes yang bertujuan untuk membunuh pod jika menurutnya cluster tidak seimbang.

The LowNodeUtilizationstrategi tampaknya cocok kasus Anda:

Strategi ini menemukan node yang kurang dimanfaatkan dan mengeluarkan pod, jika memungkinkan, dari node lain dengan harapan pembuatan ulang pod yang digusur akan dijadwalkan pada node yang kurang dimanfaatkan ini.


Pilihan lainnya adalah dengan menerapkan sedikit teknik chaos secara manual, memaksakan Pembaruan Bergulir pada penerapan Anda, dan mudah-mudahan, penjadwal akan memperbaiki masalah keseimbangan saat pod dibuat ulang.

Anda bisa menggunakan kubectl rollout restart my-deployment. Ini jauh lebih baik daripada hanya menghapus pod kubectl delete pod, karena peluncuran akan memastikan ketersediaan selama "penyeimbangan ulang" (meskipun menghapus pod sekaligus meningkatkan peluang Anda untuk penyeimbangan ulang yang lebih baik).

2 joshk132 Aug 21 2020 at 09:19

Anda harus melihat ke dalam afinitas dan anti-afinitas karena hal itu memungkinkan Anda untuk mengontrol pod mana yang berada di node mana. Anda dapat memilikinya sehingga dengan anti-afinitas hanya ada 1 pod dari setiap penerapan pada sebuah node. Ini sedikit berlebihan dan tidak akan berhasil untuk Anda meskipun IIRC Anda dapat memiliki banyak pod pada sebuah node hanya dengan sebuah batas.

https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/