Container Service for Kubernetes (ACK) mendukung tiga runtime kontainer: containerd, Sandboxed-Container, dan Docker. Topik ini membandingkan jenis kluster yang didukung, batasan fitur, arsitektur penerapan, dan perintah CLI untuk membantu Anda memilih runtime yang tepat bagi beban kerja Anda.
Runtime Docker telah dihentikan. Jika kluster Anda menjalankan Docker, lakukan migrasi ke containerd. Untuk petunjuknya, lihat Migrasi dari Docker ke containerd.
Cara runtime kontainer berintegrasi dalam node Kubernetes
Runtime kontainer mengelola eksekusi dan siklus hidup kontainer pada setiap node. kubelet berkomunikasi dengan runtime melalui Container Runtime Interface (CRI) untuk menjalankan, menghentikan, dan memantau kontainer. Pilihan runtime menentukan model isolasi, jenis node yang didukung, serta alat CLI yang digunakan untuk mengelola kontainer.
ACK mendukung runtime berikut:
-
containerd — Runtime yang direkomendasikan untuk sebagian besar beban kerja. Ringan dan langsung kompatibel dengan CRI tanpa lapisan daemon perantara.
-
Sandboxed-Container — Menggunakan VM ringan (runV) untuk menjalankan setiap Pod dalam kernel yang terisolasi.
-
Docker (tidak lagi dikembangkan) — Telah ditinggalkan dan tidak lagi menerima pemeliharaan. Lakukan migrasi ke containerd.
Perbandingan berdasarkan implementasi dan batasan
|
Fitur |
containerd |
Sandboxed-Container |
Docker (maintenance dihentikan) |
|
Jenis kluster |
|
|
Semua jenis kluster ACK |
|
Versi Kubernetes |
Versi 1.20 atau lebih baru |
Kubernetes 1.16 atau lebih baru |
Kubernetes 1.22 dan sebelumnya |
|
Jenis node |
|
Hanya keluarga ECS Bare Metal Instance yang didukung |
ECS |
|
Sistem operasi node |
Container Service for Kubernetes menyediakan gambar publik untuk sistem operasi seperti versi Alibaba Cloud Linux 3 yang dioptimalkan untuk kontainer, ContainerOS, Alibaba Cloud Linux 3, Ubuntu, dan Windows. Untuk informasi selengkapnya, lihat Sistem operasi. |
|
|
|
Engine kontainer |
containerd |
containerd |
Docker |
|
Pemantauan |
Didukung |
Didukung |
Didukung |
|
Pengumpulan log kontainer |
Didukung |
Injeksi manual (sidecar). Lihat Gunakan CRD untuk mengumpulkan log teks kontainer dalam mode sidecar. |
Didukung |
|
Pengumpulan stdout kontainer |
Didukung |
Didukung |
Didukung |
|
RuntimeClass |
Tidak didukung |
Didukung (runV) |
Tidak didukung |
|
Penjadwalan Pod |
Tidak perlu konfigurasi. |
Anda harus menambahkan konfigurasi berdasarkan aturan berikut:
|
Tidak perlu konfigurasi. |
|
HostNetwork |
Didukung |
Tidak didukung |
Didukung |
|
Disk data node |
Opsional |
Wajib. Disk data harus berukuran minimal 200 GiB. |
Opsional |
|
Plugin jaringan |
|
|
|
|
Mode kube-proxy |
|
|
|
|
Plugin volume |
Plugin CSI (tidak termasuk kluster ACK Edge) |
Plugin CSI |
Plugin CSI |
|
Sistem file root kontainer |
OverlayFS |
OverlayFS dengan konfigurasi kuota disk |
OverlayFS |
Anda tidak dapat menerapkan Docker dan Sandboxed-Container pada node yang sama. Untuk menjalankan kedua jenis runtime dalam satu kluster, buat kelompok node terpisah—satu untuk node runtime Docker dan satu lagi untuk node runtime Sandboxed-Container.
Sandboxed-Container diimplementasikan di atas containerd. Saat Anda memeriksa node Sandboxed-Container dengan kubectl get node atau melihat daftar node di konsol ACK, runtime akan ditampilkan sebagai containerd.
Perbandingan berdasarkan arsitektur penerapan
Arsitektur penerapan menunjukkan rantai pemanggilan komponen dari kubelet hingga ke kontainer. Semakin sedikit lapisan, semakin rendah overhead dan kompleksitas operasionalnya.
|
Runtime |
Arsitektur penerapan |
|
Docker |
|
|
containerd |
|
|
Sandboxed-Container v2 |
|
containerd menghilangkan lapisan dockerd yang dibutuhkan oleh Docker, sehingga kubelet dapat mengakses runtime secara langsung melalui CRI. Sandboxed-Container v2 memperluas containerd dengan shim tambahan (containerd-shim-runv2) yang menjalankan Pod di dalam VM ringan menggunakan runV, memungkinkan isolasi tingkat kernel bersama kontainer runC standar pada node yang sama.
Perintah CLI untuk containerd dan Docker
containerd dan Docker menggunakan alat CLI berbeda untuk mengelola image dan kontainer. crictl adalah alat yang direkomendasikan untuk containerd karena beroperasi di tingkat CRI dan konsisten di seluruh lingkungan Kubernetes. ctr adalah CLI tingkat rendah containerd dan tersedia sebagai alternatif.
|
Operasi |
crictl (direkomendasikan untuk containerd) |
ctr (CLI tingkat rendah containerd) |
docker |
|
Kueri kontainer |
|
|
|
|
Kueri detail kontainer |
|
|
|
|
Kueri log kontainer |
|
N/A |
|
|
Jalankan perintah di dalam kontainer |
|
N/A |
|
|
Sambungkan stdin, stdout, dan stderr lokal ke kontainer |
|
N/A |
|
|
Kueri statistik penggunaan resource |
|
N/A |
|
|
Buat kontainer |
|
|
|
|
Jalankan kontainer |
|
|
|
|
Hentikan kontainer |
|
ctr -n k8s.io task pause <container> |
|
|
Hapus kontainer |
|
|
|
|
Kueri Gambar |
|
|
|
|
Kueri detail image |
|
N/A |
|
|
Tarik citra |
|
|
|
|
Dorong image |
N/A |
|
|
|
Hapus image |
|
|
|
|
Kueri Pod |
|
N/A |
N/A |
|
Kueri detail Pod |
|
N/A |
N/A |
|
Jalankan Pod |
|
N/A |
N/A |
|
Hentikan Pod |
|
N/A |
N/A |