Init Container dan Urutan Startup
Pelajari cara init container menjalankan tugas penyiapan sebelum container aplikasi utama dimulai, serta cara init container mengatur urutan di dalam Pod.
Init Container dan Urutan Startup adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Apa Itu Kontainer Init?
Kontainer init adalah kontainer khusus yang berjalan hingga selesai sebelum kontainer aplikasi utama dalam sebuah Pod dimulai. Pod dapat memiliki satu atau beberapa kontainer init.
Kontainer ini sangat cocok untuk tugas penyiapan satu kali: menunggu dependensi, menyalin konfigurasi, atau menjalankan migrasi basis data.
Perbedaannya dengan Kontainer Aplikasi
Kontainer init selalu berjalan hingga selesai dan harus berhasil sebelum kontainer init berikutnya dimulai. Sebaliknya, kontainer aplikasi berjalan terus-menerus.
- Kontainer init berjalan secara berurutan, satu per satu
- Kontainer aplikasi berjalan secara paralel
- Jika kontainer init gagal, Pod memulainya lagi (sesuai restartPolicy)
Spesifikasi Dasar Kontainer Init
Kontainer init berada di bawah spec.initContainers, yang sejajar dengan spec.containers.
apiVersion: v1
kind: Pod
metadata:
name: app-with-init
spec:
initContainers:
- name: wait-for-db
image: busybox:1.36
command: ['sh', '-c', 'echo waiting; sleep 5']
containers:
- name: app
image: nginx:1.27Mengapa Urutan Penting
Kubernetes menjamin urutannya: setiap kontainer init harus selesai dengan berhasil sebelum kontainer utama mulai.
Dengan demikian, Anda dapat menyatakan dependensi secara deklaratif, alih-alih menanamkan perulangan percobaan ulang ke dalam citra aplikasi.
Menunggu Layanan
Pola yang umum adalah menahan proses mulai hingga Layanan yang menjadi dependensi memberikan respons.
initContainers:
- name: wait-for-api
image: busybox:1.36
command:
- sh
- -c
- 'until nslookup api-service; do echo waiting; sleep 2; done'Beberapa Kontainer Init
Anda dapat merangkai beberapa kontainer init. Kontainer tersebut berjalan sesuai urutan yang tercantum, dan masing-masing harus selesai sepenuhnya sebelum kontainer berikutnya dimulai.
initContainers:
- name: step-1-fetch-config
image: busybox:1.36
command: ['sh', '-c', 'echo fetching config']
- name: step-2-migrate
image: busybox:1.36
command: ['sh', '-c', 'echo running migration']Berbagi Data dengan emptyDir
Kontainer init sering menyiapkan berkas untuk kontainer aplikasi menggunakan volume emptyDir bersama.
volumes:
- name: shared
emptyDir: {}
initContainers:
- name: setup
image: busybox:1.36
command: ['sh', '-c', 'echo hello > /work/index.html']
volumeMounts:
- name: shared
mountPath: /workMemeriksa Status Init
Saat kontainer init berjalan, Pod menampilkan status seperti Init:0/2. Gunakan kubectl untuk mengikuti kemajuannya.
kubectl get pod app-with-init
kubectl logs app-with-init -c wait-for-db
kubectl describe pod app-with-initAturan Penggunaan Sumber Daya
Karena kontainer init berjalan secara berurutan, Kubernetes menggunakan permintaan atau batas sumber daya yang tertinggi di antara kontainer tersebut (bukan jumlahnya) saat menjadwalkan, lalu membandingkannya dengan kebutuhan kontainer aplikasi.
Kasus Penggunaan Umum
- Menunggu hingga basis data atau API eksternal dapat dijangkau
- Menjalankan migrasi skema sebelum aplikasi dimulai
- Membuat atau mengunduh berkas konfigurasi
- Mengatur izin berkas pada volume yang dipasang
- Mendaftarkan Pod ke registri layanan
Perilaku Saat Gagal
Jika kontainer init gagal dan restartPolicy Pod adalah Always atau OnFailure, Kubernetes akan terus mencobanya kembali hingga berhasil. Kontainer utama tidak akan dimulai sebelum itu.
Pemeriksaan Singkat
Uji pemahaman Anda tentang urutan kontainer init.
Rangkuman
Anda telah mempelajari bahwa kontainer init berjalan secara berurutan hingga selesai sebelum kontainer aplikasi dimulai. Kontainer ini menegakkan urutan mulai, menyiapkan data bersama melalui volume, dan menangani penyiapan satu kali seperti migrasi atau pemeriksaan dependensi.
Selanjutnya, Anda dapat menggabungkan kontainer init dengan kontainer samping untuk membentuk pola mulai Pod yang lebih kaya.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Init Container dan Urutan Startup” gratis?
Ya — teks lengkap “Init Container dan Urutan Startup” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Init Container dan Urutan Startup”?
Pelajari cara init container menjalankan tugas penyiapan sebelum container aplikasi utama dimulai, serta cara init container mengatur urutan di dalam Pod. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?
Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Init Container dan Urutan Startup” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?
Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pod: Unit Terkecil
- Siklus Hidup dan Status Pod
- Pod Multi-Container (Sidecar)
- Init Container dan Urutan Startup