Init Container adalah container yang dijalankan sebelum aplikasi Pod. Init container bisa digunakan untuk berbagai macam kegunaan, beberapa contoh kasus yang biasa digunakan:
– Download konfigurasi
– Cloning git
– Script migrasi database
– Inject Variable environment
Init container ini harus berjalan dengan status sukses, sebelum container selanjutnya dijalankan. Contoh kasus kita akan membuat init container yang mengecek apakah suatu URL/Internet bisa diakses, bila sesuai maka akan dijalankan container yang berisi aplikasi sederhana
Buat sebuah file init-container.yaml
apiVersion: v1 kind: Pod metadata: name: aplikasi-hello labels: app: aplikasi spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'echo Halo Dunia! && sleep 99999'] initContainers: - name: cek-koneksi-internet image: curlimages/curl command: ['curl', '-s', 'https://fedoraproject.org/static/hotspot.txt', '-o', '/dev/null']
lalu deploy
kubectl apply -f init-container.yaml
Cek status pod yang baru dideploy
kubectl get pods aplikasi-hello # output NAME READY STATUS RESTARTS AGE aplikasi-hello 1/1 Running 0 15s
Trobleshooting Init Container Error
Contoh kita akan membuat pod error, ubah init-container.yaml
menjadi
apiVersion: v1 kind: Pod metadata: name: aplikasi-hello labels: app: aplikasi spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'echo Halo Dunia! && sleep 99999'] initContainers: - name: cek-koneksi-internet image: curlimages/curl command: ['curl', '-s', 'https://fzedoraproject.org/static/hotspot.txt', '-o', '/dev/null']
karena kita melakukan perubahan command, maka perlu pod harus di hapus, lalu di deploy ulang
kubectl delete -f init-container.yaml && kubectl apply -f init-container.yaml
Cek status pod
$ kubectl get pods aplikasi-hello NAME READY STATUS RESTARTS AGE aplikasi-hello 0/1 Init:CrashLoopBackOff 2 55s
Dari pesan status diatas Init containter crash, cek lognya dengan
kubectl logs aplikasi-hello -c cek-koneksi-internet # output % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0curl: (6) Could not resolve host: fzedoraproject.org
karena Pod ini terdapat error, maka status deployment aplikasi-hello gagal
Pengertian dari status yang muncul saat menggunakan Init Container
Init:X/Y -> Pod memiliki Y Init Containers, X yang sudah complete/berhasil dijalankan
Init:Error -> Init Container gagal dijalankan
Init:CrashLoopBackOff -> Init Container error/crash
Pending -> Pod belum menjalankan Init Container.
PodInitializing or Running -> Pod telah selesai menjalankan Init Containers.