Aplikasi yang berjalan di Kubernetes biasanya merupakan layanan berumur panjang yang tidak perlu Anda gunakan untuk berinteraksi. Terkadang Anda mungkin ingin menjalankan perintah secara manual di dalam wadah, mungkin untuk operasi pemeliharaan satu kali atau untuk membantu prosedur debugging.
Dalam artikel ini kami akan menunjukkan cara menjalankan perintah dan mendapatkan sesi shell interaktif di dalam wadah Kubernetes. Ini akan memungkinkan Anda memulai proses dalam wadah menggunakan terminal lokal Anda. Ini sepenuhnya terintegrasi dengan Kubernetes dan Kubectl CLI-nya, jadi Anda tidak perlu mengotori gambar container Anda dengan daemon SSH untuk mengaktifkan akses jarak jauh.
Menggunakan Kubectl Exec
kubectl exec mengeksekusi perintah di dalam container yang sedang berjalan. Ini memiliki sintaks dasar berikut:
$ kubectl exec demo-pod -- demo-command
Ini akan menjalankan demo-command di dalam container pertama Pod demo. Perintah dijalankan dengan hak akses root.
Flag tambahan diperlukan untuk menyiapkan sesi terminal interaktif:
- --stdin (-i) – Lewatkan aliran input standar terminal Anda ke dalam wadah.
- --tty (-t) – Tandai standar input stream sebagai TTY, menjadikannya interaktif.
Berikut adalah contoh memasukkan shell ke container pertama di Pod:
$ kubectl exec -it demo-pod -- /bin/sh
Everything setelah -- menjadi bagian dari perintah itu dieksekusi di dalam wadah. kubectl exec mengabaikan entrypoint default container, alih-alih meluncurkan proses baru dengan perintah yang Anda tentukan. Anda tidak boleh membungkus perintah dengan tanda kutip ("/bin/sh") kecuali jika Anda menggunakannya secara normal saat menjalankan perintah secara lokal.
Memilih Container
kubectl exec yang Berbeda terhubung ke container default Pod ketika tidak ada argumen lain yang diberikan. Wadah default adalah wadah dengan anotasi kubectl.kubernetes.io/default-container. Ini akan menjadi container pertama di Pod jika Anda belum menambahkan anotasi secara manual ke yang lain.
Ini adalah Pod yang menjalankan dua container:
apiVersion: v1
kind: Pod
metadata:
name: demo-pod
spec:
containers:
- name: app-container
image: nginx:latest
- name: sidecar-container
image: busybox:latest
Anda dapat menjalankan perintah di dalam sidecar-container dengan menambahkan flag -c ke kubectl exec:
$ kubectl exec --it demo-pod -c sidecar-container -- /bin/sh
Menunggu Pod Berjalan
Kubectl akan menunggu sebentar hingga Pod berjalan jika containernya belum dijalankan saat Anda menjalankan perintah exec. Nilai batas waktu ini dapat diubah dengan tanda --pod-running-timeout. Ini berguna ketika Anda ingin menjalankan perintah langsung setelah membuat Pod baru, ketika itu mungkin belum dijadwalkan ke Node.
$ kubectl exec --pod-running-timeout=5m demo-pod -- demo-command
Kapan Saatnya Menggunakan
kubectl exec paling baik digunakan untuk situasi khusus di mana Anda perlu berinteraksi langsung dengan sistem file container. Anda dapat menggunakannya untuk mengakses log atau cache setelah masalah atau untuk menjalankan skrip housekeeping yang jarang digunakan yang disediakan di image container.
Meskipun kubectl exec memungkinkan Anda menjalankan perintah apa pun, Anda harus menghindari modifikasi lingkungan container secara dramatis. Hal ini dapat menyebabkan wadah menyimpang dari keadaan yang diharapkan. Wadah biasanya tidak memerlukan intervensi sehingga penggunaan kubectl exec di dalam lingkungan produksi biasanya menandakan bahwa ada sesuatu yang tidak beres.
Jangan gunakan perintah ini untuk menginstal paket atau menerapkan pembaruan di dalam wadah. Operasi semacam ini harus ditangani dengan membuat image container baru yang menyertakan perubahan, lalu mengganti Pod Kubernetes Anda dengan Pod yang menjalankan build yang direvisi. Mengikuti prinsip ini memastikan perubahan Anda tidak akan hilang ketika Pod di-restart dan kembali ke sistem file image containernya. Menjaga container Anda tidak berubah juga menjamin mereka dapat direproduksi secara andal dari gambarnya, yang meningkatkan keandalan dan kemudahan debugging.
Menjalankan perintah satu kali di dalam container Kubernetes memungkinkan Anda men-debug masalah, melakukan tugas pemeliharaan, dan memeriksa sistem file container. Dalam setiap situasi ini, Anda dapat menggunakan kubectl exec untuk mendapatkan koneksi ke container.
Menambahkan kombinasi flag -it akan meneruskan aliran input standar terminal Anda sebagai TTY, menyediakan sesi shell interaktif. Ini tidak selalu diperlukan tergantung pada perintah yang ingin Anda gunakan: jika hanya menghasilkan output, tanpa memerlukan input apa pun, Anda dapat dengan aman menghilangkan flags.
Itulah berita seputar
Cara Menjalankan Perintah Di Dalam Kontainer Pod Kubernetes, semoga bermanfaat.
Disadur dari HowToGeek.com.