Melihat log Pod sering kali merupakan langkah pertama dalam mendiagnosis masalah dengan beban kerja cluster Anda. Berikut cara menggunakan Kubectl untuk melakukan streaming log ke terminal Anda, memungkinkan Anda memeriksa output dari aplikasi Anda.
Memulai
Pastikan Anda sudah menginstal Kubectl dan terhubung ke cluster Anda. Anda dapat menentukan file Kubeconfig dengan mengatur KUBECONFIG
variabel lingkungan di shell Anda:
export KUBECONFIG=~/.kube/my-cluster.yaml
Kemudian gunakan Kubectl untuk membuat daftar Pod Anda:
kubectl get pods
Ingatlah untuk menambahkan --namespace
tandai saat Pod Anda berada di luar namespace default:
kubectl --namespace my-namespace get pods
Menambahkan alias sementara ke shell Anda adalah cara yang baik untuk mempersingkat langkah ini, membantu Anda menjalankan beberapa perintah pada namespace yang sama:
alias k="kubectl --namespace my-namespace"
k get pods
Mengakses Log Pod
kubectl logs
perintah memungkinkan Anda memeriksa log yang dihasilkan oleh Pod bernama:
kubectl logs pod-name
Log Pod yang ada akan dikirimkan ke terminal Anda. Saat Pod dibentuk dari lebih dari satu container, kamu juga harus menentukan nama container yang ingin kamu periksa:
kubectl logs pod-name container-name
Atau, setel --all-containers
flag untuk memasukkan baris log yang dihasilkan oleh kontainer mana pun di Pod. Berhati-hatilah karena Anda dapat melihat keluaran yang bertele-tele dan berulang saat flag ini digunakan untuk melawan Pod yang sibuk:
kubectl logs pod-name --all-containers
Anda juga bisa mendapatkan log dari satu set Pod dengan label tertentu. Ini memungkinkan Anda menggabungkan log dari Pod yang berbeda, asalkan semuanya memiliki label yang sama:
kubectl logs -l my-label=my-value --all-containers
Log Streaming Terus-menerus
logs
plain biasa perintah mengeluarkan log Pod yang saat ini disimpan dan kemudian keluar. Tambahkan -f
(--follow
) tandai perintah untuk mengikuti log dan streaming langsung ke terminal Anda.
Kubectl akan memancarkan setiap baris log baru ke terminal Anda sampai Anda menghentikan perintah dengan Ctrl+C. Ini sama dengan menggunakan tail -f
dengan file log lokal di lingkungan non-containerized.
Melihat Log Lama
kubectl logs
tidak akan menyertakan baris log yang diproduksi oleh container lama yang pernah menjadi anggota Pod tetapi telah diganti. Log ini dapat diakses dengan menambahkan -p
(--previous
) bendera.
Kubectl kemudian akan memunculkan keseluruhan log yang disimpan untuk Pod, termasuk baris yang dikeluarkan oleh container yang telah dihentikan.
Mendapatkan Log Terbaru
Terkadang Anda tidak perlu melihat seluruh aliran log. Kubectl mendukung --since
bendera yang menampilkan garis log yang dipancarkan setelah waktu tertentu:
kubectl logs pod-name --since=2h
Perintah ini akan menampilkan output log dari pod-name
yang diproduksi dalam dua jam terakhir. Varian lain, --since-time
, mendukung string stempel waktu yang sesuai dengan RFC3339 alih-alih ekspresi waktu relatif yang ditunjukkan di atas.
--tail
flag adalah opsi lain untuk memadatkan log. Ini membatasi jumlah baris yang ditampilkan, menghindari terminal penuh saat Anda hanya perlu melihat keluaran terbaru:
# Shows the last 10 lines of the log
kubectl logs pod-name --tail=10
Kubectl tidak menampilkan stempel waktu baris secara default karena banyak aplikasi sudah menyertakannya dalam output log mereka. Tambahkan --timestamps
tandai agar Kubectl menambahkan stempel waktu ke awal baris saat beban kerja Anda tidak menyediakannya.
Anda dapat menambahkan nama pod dan container yang diperiksa ke baris log juga. Fungsionalitas ini diaktifkan dengan --prefix
bendera. Itu dapat digabungkan dengan --timestamps
untuk menampilkan waktu setiap baris dibuat dan sumber asalnya.
Mengakses Log Dari Jenis Sumber Daya Lain
kubectl logs
bekerja dengan penerapan dan sumber daya pekerjaan selain pod:
kubectl logs job/my-job
kubectl logs deployment/my-deployment
Anda akan mendapatkan log dari penampung pertama dalam pekerjaan atau penerapan. Gunakan --all-containers
tandai ke permukaan log yang dibuat oleh salah satu wadah yang cocok. Anda dapat menggunakan semua tanda yang dijelaskan di atas apakah Anda sedang melihat pod, penerapan, atau pekerjaan.
Pengelolaan Log Lebih Lanjut
Kubectl tidak menyertakan cara untuk memfilter, mencari, atau mengubah log Anda. Yang terbaik adalah menyalurkan kubectl logs
output ke alat terminal yang sudah ada seperti awk
, grep
atau sed
untuk tujuan ini.
kubectl logs my-pod | grep search-expression
Demikian pula, gunakan fitur pengalihan yang ada di shell Anda untuk menyimpan log ke file:
kubectl logs my-pod > my-pod-logs.txt
Ringkasan
Kubectl memungkinkan Anda mengakses log dari sumber daya Anda baik berdasarkan per-kontainer atau secara agregat. Anda dapat melihat cuplikan log yang dikumpulkan saat ini, terus mengalirkan jalur baru ke terminal Anda, dan mengakses jalur historis yang dipancarkan oleh kontainer yang dihentikan.
Perintah ini hadir dengan beberapa opsi penyesuaian terbatas termasuk pembatas jumlah baris dan pemfilteran tanggal yang sederhana. Saat parsing yang lebih menuntut diperlukan, pipa output ke perintah terminal Unix untuk menganalisis log Anda dengan cepat dan menemukan penyebab kesalahan dalam aplikasi Anda.
Kubectl mengumpulkan log dari output standar dan aliran kesalahan kontainer Anda. Penting untuk memastikan Anda menulis output ke stream ini dengan benar karena container yang salah konfigurasi akan menghasilkan output kosong saat Anda menjalankan kubectl logs
.