
Saya telah mengelola pengoperasian cluster Kubernetes yang besar selama lebih dari tiga tahun, dan saya ingin berbagi pendekatan minimalis saya untuk mengonfigurasi terminal kubectl, yang telah terbukti sangat efektif dalam pekerjaan sehari-hari. Terminal baris perintah yang dikonfigurasi dengan baik dapat sangat meningkatkan produktivitas Anda. Ini seperti roti dan mentega - kombinasi ajaib.
Tetapi tidak seperti modifikasi populer dan tambahan fungsional, saya percaya pada konfigurasi sederhana yang tidak memerlukan penginstalan binari, pembungkus, atau modifikasi baru. Terutama dalam kasus kubectl - alat asli yang dirancang dengan cukup baik dengan sedikit kerugian.
Berikut adalah empat add-on sederhana untuk terminal kubectl. Dengan konfigurasi ini, saya mengelola 20 cluster Kubernetes besar yang terdiri dari 400 mesin setiap hari.
Menggunakan kubetail untuk melacak log dari beberapa pod
Hal pertama yang Anda perhatikan saat menggunakan kubectl adalah kesulitan melacak log di banyak pod. Ini adalah salah satu skenario yang paling banyak diminta yang belum diimplementasikan di kubectl.
Jika Anda perlu melacak log dari satu pod di kubectl, tampilannya akan seperti ini:
kubectl logs -f <POD_NAME> -n <NAMESPACE>
Untuk melacak banyak pod di kubetail, cukup tulis:
kubetail <POD_NAME_REGEX> -n <NAMESPACE>
Anda akan mulai melacak semua pod yang namanya cocok dengan ekspresi reguler. Karena banyak pod dicatat pada saat yang sama, kubetail menandainya dengan warna berbeda untuk membantu Anda menavigasi.

kubetail adalah pembungkus sederhana di sekitar kubectl. Mudah dipasang, Anda dapat menemukan petunjuknya di sini .
2. Secara dinamis mengubah namespace default
Akhirnya Anda akan bosan mengatur flag namespace untuk setiap operasi kubectl berulang kali. Kita perlu mencari tahu bagaimana mengubah ruang nama default secara dinamis.
Untuk ini, saya menulis fungsi alias sederhana
ksn(namanya menyiratkan set namespace ).
# Add the following to .zshrc/.bashrc...etc
# Allows setting default namespace while working with kubectl #
alias k='kubectl'
alias ksn='_f(){k get namespace $1 > /dev/null; if [ $? -eq 1 ]; then return $?; fi; k config set-context $(k config current-context) --namespace=$1; echo "Namespace: $1"};_f'
#Usage:
#➜ ~ ksn dev1 (dev-context/dev1)
# Context "dev-context" modified.
# Namespace: dev1
#➜ ~ ksn ff (dev-context/dev1)
# Error from server (NotFound): namespaces "ff" not found


Biasanya kami bekerja dengan array ruang nama tergantung pada tugas saat ini. Dan karena 80% masalah terkait dengan ruang nama Kafka, fitur ini telah lama menjadi alat default saya. Ini akan menghemat banyak waktu Anda, terutama saat mengerjakan tugas-tugas kompleks yang membutuhkan banyak instruksi untuk dimasukkan ke dalam kubectl.
3. Menampilkan konteks kube dan namespace di shell prompt
Saat menggunakan perintah kubectl, Anda harus selalu memperhatikan perintah saat ini
kube-contextdan namespace. Tidak mudah jika Anda mengelola kluster secara bersamaan dalam 20 konteks berbeda dan 50 ruang nama. Ada risiko menggunakan perintah yang salah di lingkungan, terutama saat mengerjakan beberapa tugas secara bersamaan di cluster dan konteks yang berbeda.
Untuk mengatasi masalah ini, sangat berguna untuk selalu menampilkan namespace dan konteks aktif di jendela yang berdekatan.
Pada contoh di bawah ini, konteks saya adalah
dev2–1dan namespace adalah test. Cukup bagi saya untuk hanya melihat informasi ini ketika saya menjalankan perintah yang berbeda di cluster.

Anda dapat menemukan petunjuk penginstalan dan konfigurasi di sini .
4. Alias kubectl yang paling penting
Alias adalah cara tercepat untuk menyesuaikan dan mempercepat pekerjaan Anda di terminal. Berikut adalah alias yang paling sering saya gunakan, yang hampir menjadi bagian dari sifat saya:
alias k='kubectl '
alias kcc='kubectl config current-context'
alias kdp='kubectl delete po'
alias kgc='kubectl config get-contexts'
alias kge='kubectl get events --sort-by='\''{.lastTimestamp}'\'
alias kgp='kubectl get po'
alias kl='kubectl logs '
alias kpf='kubectl port-forward'
alias ksc='kubectl config use-context'
Lebih sedikit lebih baik: jangan membebani terminal Anda secara berlebihan
Kami telah membahas empat peningkatan terminal utama untuk pengguna kubectl:
- Menggunakan kubetail untuk melacak log dari beberapa pod.
- Mengubah ruang nama default secara dinamis untuk mengurangi panjang instruksi kubectl secara signifikan.
- Menampilkan konteks dan ruang nama di sebelah terminal Anda untuk menghindari kesalahan yang tidak disengaja.
- Daftar alias kubectl penting.
Berbeda dengan perangkat minimalis ini, pemutakhiran terminal yang populer (seperti K9 ) sering kali kewalahan, penuh dengan fitur dan pembungkus permen, tetapi lambat, mengganggu dan, yang lebih penting, tidak perlu. Semakin banyak fitur (gemerlap dan busur) yang Anda tambahkan, semakin banyak waktu yang diperlukan untuk menjelajahi semua informasi tambahan di layar.
Konfigurasi terminal yang elegan membantu Anda tetap fokus seperti tidak ada yang lain.
Konfigurasi berbasis baris perintah sederhana akan memungkinkan Anda mengembangkan dengan cepat dan efisien menggunakan biner dan alat bawaan. Ini sangat penting, terutama saat bekerja dengan infrastruktur besar, masuk dan keluar dari profil yang berbeda di mesin virtual.
Konfigurasi terminal Anda harus memperkaya Anda sebagai pengembang, bukan membuat Anda merasa seperti tanpa tangan.