GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Melihat Log Pod Kubernetes Dengan Kubectl

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 .


Docker
  1. Cara Menginstal Kubernetes dengan Minikube di Ubuntu 20.04

  2. Cara Menyalin File Antara Pod Kubernetes dan Mesin Anda

  3. Cara melihat kinerja sebelumnya dengan sar di Linux

  1. Cara Melihat Akses Apache &Log Kesalahan

  2. Cara Melihat &Membaca File Log Linux

  3. Bagaimana cara memasukkan pod sebagai root?

  1. Cara Membuat Sertifikat yang Ditandatangani Sendiri untuk Kubernetes

  2. Cara Mengatur Cluster Kubernetes dengan Rancher

  3. Cara Menyebarkan Cluster Redis di Kubernetes