CRI-O merupakan salah satu container runtime yang bisa digunakan untuk kubernetes yang bersifat free dan open sources. CRIO menjadi salah satu alternatif container runtime yang bisa digunakan pada kubernetes selain Docker.
Aristektur
Arsitektur diatas merupakan penerapan cri-o pada environment kubernetes dimana flownya sebagai berikut
- Kubernetes akan meminta kubelet untuk membuat pod
- pod adalah entitas terkecil didalam kubernetes dimana pada pod terdapat satu atau lebih container yang saling berbagi sumber daya seperti IPC, NET dan PID namespace dan berjalan didalam cgroup yang sama
- Kemudian kubelet akan meneruskan permintaan ke CRI-O melalui kubernetes CRI (Container Runtime Interface) untuk menjalankan pod baru
- CRI-O mengunakan library containers/image untuk pull image dari sebuah image registry
- hasil download image akan di ekstrak kedalam filesistem root container, dimana akan disimpan pada filesistem COW mengunakan library containers/storage
- setelah rootfs terbuat untuk container, maka CRI-O akan mengenerate file json spesifikasi runtime OCI (Open Container Initiative) yang menjelaskan cara menjalankan container mengunakan tools OCI generator
- CRIO kemudian menjalankan OCI compatible runtime mengunakan spesifikasi yang sudah digenerate sebelumnya untuk menjalankan sebuah proses container, dimana default OCI runtime adalah runc
- setiap container akan dimonitor oleh proses conmon terpisah. proses conmon mengunakan pty pid 1 dari proses contianer untuk menangani logging kontainer dan mencatat exit code pada proses kontainer
- Networking pada pod akan dibuat mengunakan CNI, dimana terdapat banyak CNI yang bisa digunakan dengan CRIO seperti calico, flannel, weave dan lain-lain
Komentar