Solusi yang tidak melibatkan pengeditan unit sistemd atau drop-in adalah dengan membuat (atau mengedit) /etc/docker/daemon.json
file konfigurasi dan untuk menyertakan yang berikut:
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
Setelah menyimpannya, mulai ulang layanan buruh pelabuhan Anda.
sudo systemctl restart docker
Solusi ini jelas hanya dapat dilakukan jika Anda ingin menerapkannya di seluruh sistem.
Karena saya memiliki dua file konfigurasi, saya perlu menambahkan entri di file konfigurasi kedua juga -- /etc/systemd/system/docker.service.d/docker-thinpool.conf
:
--exec-opt native.cgroupdriver=systemd \
Sebagai tambahan, cgroupfs adalah manajer grup kontrol buruh pelabuhan sendiri. Namun, untuk sebagian besar distribusi Linux ssytemd adalah sistem init default sekarang dan systemd memiliki integrasi yang erat dengan grup kontrol Linux dan Di situs Kubernetes, mereka merekomendasikan penggunaan systemd (lihat di bawah) karena menggunakan cgroupfs bersama dengan systemd tampaknya tidak optimal
Jadi lebih baik menggunakan systemd daripada untuk manajemen cgroup. kubelet dikonfigurasi secara default untuk menggunakan systemd. Jadi lebih mudah dan lebih baik untuk mengubah Docker menggunakan driver systemd Cgroup
Riwayat tumpang tindih ini ada di sini https://lwn.net/Articles/676831/
Di situs Kubernetes, mereka merekomendasikan penggunaan systemd https://kubernetes.io/docs/setup/production-environment/container-runtimes/
Driver cgroup Ketika systemd dipilih sebagai sistem init untuk distribusi Linux, proses init menghasilkan dan menggunakan root controlgroup (cgroup) dan bertindak sebagai manajer cgroup. Systemd memiliki integrasi yang erat dengan cgroups dan akan mengalokasikan cgroups per proses. Anda dapat mengonfigurasi runtime container dan kubelet untuk menggunakan cgroupfs. Menggunakan cgroupfs bersama systemd berarti akan ada dua manajer cgroup yang berbeda.
Grup kontrol digunakan untuk membatasi sumber daya yang dialokasikan ke proses. Seorang manajer cgroup tunggal akan menyederhanakan tampilan sumber daya apa yang dialokasikan dan secara default akan memiliki tampilan yang lebih konsisten dari sumber daya yang tersedia dan sedang digunakan. Ketika kami memiliki dua manajer, kami berakhir dengan dua pandangan tentang sumber daya tersebut. Kami telah melihat kasus di lapangan di mana node yang dikonfigurasi untuk menggunakan cgroupfs untuk kubelet dan Docker, dan systemd untuk sisa proses yang berjalan pada node menjadi tidak stabil di bawah tekanan sumber daya.