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.

Leave a comment

Your email address will not be published. Required fields are marked *