Manajemen Container - CRI (containerd/CRI-O)
Vapor mendukung runtime yang kompatibel dengan Container Runtime Interface (CRI) termasuk containerd dan CRI-O. Ini menyediakan manajemen container yang kompatibel dengan Kubernetes tanpa Docker.
Prasyarat
- containerd atau CRI-O harus terinstal dan berjalan
- Izin yang sesuai untuk mengakses socket CRI
- Tool CLI crictl (otomatis digunakan oleh Vapor)
Runtime yang Didukung
containerd
- Runtime default untuk banyak distribusi Kubernetes
- Lokasi socket:
/run/containerd/containerd.sock - Ringan dan efisien
CRI-O
- Dibuat khusus untuk Kubernetes
- Lokasi socket:
/var/run/crio/crio.sock - Runtime yang sesuai dengan OCI
Navigasi ke Manajemen Container
- Dari menu utama, klik Containers
- Vapor otomatis mendeteksi runtime CRI yang tersedia
Deteksi Runtime
Vapor otomatis mendeteksi runtime mana yang tersedia:
- Pertama memeriksa socket containerd
- Kemudian memeriksa socket CRI-O
- Kembali ke Docker jika tidak ada runtime CRI ditemukan
Runtime yang aktif ditampilkan di status bar atas.
Container
Tampilan Containers menampilkan semua container yang dikelola oleh runtime CRI.
Daftar Container
Setiap container menampilkan:
- Container ID (dipotong)
- Nama dan namespace
- Referensi image
- State (Running, Exited, Unknown)
- Timestamp dibuat
- Asosiasi Pod
Status Container
Container CRI dapat berada dalam status berikut:
- Running: Container sedang berjalan aktif
- Exited: Container telah berhenti
- Unknown: Status tidak dapat ditentukan
- Created: Container dibuat tapi belum dimulai
Mengelola Container
Melihat Detail Container
Klik pada container untuk melihat:
- Container ID lengkap
- Image ID dan digest
- Pod sandbox ID
- Label dan anotasi
- Waktu dibuat dan dimulai
- Exit code (jika berhenti)
Log Container
- Klik tombol Logs
- Lihat streaming log
- Opsi:
- Ikuti log secara real-time
- Tampilkan timestamp
- Batasi jumlah baris
- Filter berdasarkan rentang waktu
Menjalankan Perintah
- Klik tombol Exec
- Pilih atau masukkan perintah untuk dijalankan
- Membuka sesi terminal interaktif
- Mendukung shell standar (sh, bash)
Menghapus Container
- Hentikan container terlebih dahulu (jika berjalan)
- Klik Remove di menu aksi
- Konfirmasi penghapusan
Catatan: Di lingkungan CRI, container biasanya dikelola oleh Kubernetes. Manipulasi langsung harus dilakukan dengan hati-hati.
Images
Bagian Images mengelola container images.
Daftar Image
Menampilkan image yang di-cache dengan:
- Repository dan tag image
- Image ID
- Ukuran
- Jumlah container yang menggunakannya
Operasi Image
Pull Image
- Klik Pull Image
- Masukkan referensi image lengkap:
- Docker Hub:
docker.io/library/nginx:latest - Registry lain:
quay.io/coreos/flannel:latest
- Docker Hub:
- Konfigurasi autentikasi jika diperlukan
- Klik Pull
Menghapus Image
- Pastikan tidak ada container yang menggunakan image
- Klik Remove di menu aksi
- Konfirmasi penghapusan
Catatan: Penghapusan image di CRI lebih ketat daripada Docker. Image yang sedang digunakan tidak dapat dihapus.
Pod (Khusus CRI)
Runtime CRI mengorganisir container ke dalam pod (bahkan container tunggal).
Informasi Pod
Setiap pod menampilkan:
- Pod ID
- Nama dan namespace
- State
- Network namespace
- Waktu dibuat
Operasi Pod
- List Pods: Lihat semua pod sandbox
- Pod Status: Periksa status pod detail
- Remove Pod: Hapus pod dan container-nya
Integrasi Kubernetes
Saat berjalan di node Kubernetes:
Informasi Node
- Nama dan role node
- Versi container runtime
- Versi Kubernetes
- Informasi plugin CNI
Container Kubernetes
- Container sistem (namespace kube-system)
- Container aplikasi
- Init container
- Sidecar container
Perbedaan CRI vs Docker
Fitur Tersedia di CRI
- Lifecycle container dasar (start, stop, remove)
- Melihat log
- Eksekusi perintah
- Pull dan remove image
- Manajemen pod
Fitur TIDAK Tersedia di CRI
- Pembuatan container (dikelola oleh Kubernetes)
- Restart container (dikelola oleh kubelet)
- Pause/unpause container
- Build image
- Manajemen volume (dikelola oleh Kubernetes)
- Manajemen network (dikelola oleh CNI)
Perbedaan Penting
- Pembuatan Container: Container harus dibuat melalui Kubernetes, bukan langsung
- Networking: Dikelola oleh plugin CNI, tidak dapat dikonfigurasi langsung
- Storage: Volume dikelola oleh Kubernetes, bukan CRI
- Format Image: Menggunakan format OCI, kompatibel dengan Docker images
Bekerja dengan crictl
Vapor menggunakan crictl secara internal, tapi Anda juga bisa menggunakannya langsung:
Perintah Umum
# List container
crictl ps
# List image
crictl images
# Lihat log
crictl logs <container-id>
# Eksekusi perintah
crictl exec -it <container-id> sh
# Pull image
crictl pull nginx:latest
# Inspect container
crictl inspect <container-id>Praktik Terbaik
- Kubernetes Dulu: Di lingkungan CRI, kelola container melalui Kubernetes jika memungkinkan
- Kesadaran Namespace: Perhatikan namespace Kubernetes saat bekerja dengan container
- Hindari Manipulasi Langsung: Jangan memodifikasi container yang dikelola Kubernetes secara langsung
- Gunakan Label: Manfaatkan label Kubernetes untuk organisasi
- Monitor Resource: CRI menyediakan stats dasar, gunakan metrik Kubernetes untuk monitoring detail
- Manajemen Log: Konfigurasi log driver yang tepat di level Kubernetes
Pemecahan Masalah
Runtime Tidak Terdeteksi
- Verifikasi containerd atau CRI-O berjalan:bash
systemctl status containerd # atau systemctl status crio - Periksa socket ada:bash
ls -la /run/containerd/containerd.sock # atau ls -la /var/run/crio/crio.sock
Tidak Dapat Melihat Container
- Pastikan Anda memiliki izin untuk mengakses socket
- Periksa apakah container berada di namespace berbeda
- Verifikasi crictl dikonfigurasi dengan benar
Kegagalan Pull Image
- Periksa aksesibilitas registry
- Verifikasi format referensi image
- Konfigurasi mirror registry jika diperlukan
- Periksa autentikasi untuk registry privat
Log Container Kosong
- Container mungkin menggunakan log driver berbeda
- Periksa log pod Kubernetes sebagai gantinya
- Verifikasi pengaturan rotasi log
Exec Gagal
- Container mungkin tidak memiliki shell terinstal
- Coba shell berbeda (sh daripada bash)
- Periksa container berjalan
- Verifikasi izin
