Sejak Kubernetes 1.8, sepertinya saya perlu menonaktifkan swap pada node saya (atau set --fail-swap-on
ke false
).
Saya tidak dapat menemukan alasan teknis mengapa Kubernetes bersikeras swap dinonaktifkan. Apakah ini karena alasan kinerja? Alasan keamanan? Mengapa alasan ini tidak didokumentasikan?
kubernetes
swap
Jeroen Jacobs
sumber
sumber
Alasan untuk ini, seperti yang saya mengerti, adalah bahwa kubelet tidak dirancang untuk menangani situasi swap dan tim Kubernetes tidak berencana untuk mengimplementasikan ini karena tujuannya adalah agar polong harus sesuai dengan memori host.
dari masalah ini
sumber
TL; DR yang tidak benar menggunakan swap hanyalah hack malas yang menunjukkan pemahaman yang buruk tentang subsistem memori dan kurangnya keterampilan administrasi sistem dasar. Merancang layanan infrastruktur dan tidak memahami sistem ini pasti berakhir dengan kegagalan.
Jadi, saya punya beberapa komentar tentang ini, ini tampaknya lebih seperti kemalasan bagi saya daripada fitur atau persyaratan. Sangat mungkin untuk menangani swap dengan benar, menganalisis memori, dan menentukan cara memanfaatkan subsistem memori dengan benar tanpa memukul swap. Ada sejumlah alat yang dibangun di sekitar ini dan Anda dapat menjamin suatu proses tidak akan menggunakan swap dengan mudah sehingga titik kinerja salah. Ini hanya coding malas untuk tidak memasukkan instrumentasi ini, dan secara keseluruhan penghapusan lengkap swap akan merugikan kinerja sistem. Kuncinya di sini adalah menggunakannya dengan benar. Saya setuju bahwa menukar pod ke disk akan memengaruhi kinerja, namun ada beberapa hal yang harus diganti ke disk.
Selain itu kernel linux dirancang untuk menggunakan swap, dan menonaktifkan sepenuhnya itu akan memiliki konsekuensi negatif. Cara yang lebih baik untuk menangani ini adalah dengan menyematkan pod ke dalam memori utama dan tidak memungkinkan mereka untuk bertukar ke disk, mengurangi tekanan cache vfs sehingga tidak bertukar kecuali itu benar-benar diperlukan, dan bahkan kemudian Anda dapat menyebabkan proses yang disematkan ke Gagal MALLOC jika memori utama habis.
Bergantung pada proses dalam wadah yang mengalami kegagalan yang sulit pada wadah atau dibunuh oleh pembunuh OOM dapat menghasilkan beberapa hasil yang cukup buruk. Namun saya mengerti bahwa proses yang berjalan dalam wadah ini idealnya adalah stateless dan fana, tetapi dalam 20 tahun menjalankan sistem, saya belum pernah melihat semua orang mengikuti desain yang dimaksud pada huruf 100% dari waktu.
Selain itu, ini tidak memperhitungkan teknologi masa depan seperti memori yang tidak mudah menguap, dan sistem memori yang lebih baru seperti intel xpoint yang dapat digunakan untuk memperluas memori utama secara signifikan menggunakan disk hybrid / sistem memori. Dengan jenis sistem ini mereka dapat menggunakannya secara langsung sebagai memori utama tambahan atau menggunakan file swap untuk memperpanjang memori utama dengan dampak kinerja yang dapat diabaikan.
sumber
Ada tiket untuk mengaktifkannya lagi Anda akan mendapatkan lebih banyak wawasan di sana
https://github.com/kubernetes/kubernetes/issues/53533
sumber