kubectl logs - terus menerus


99
kubectl logs <pod-id>

mendapatkan log terbaru dari penerapan saya - Saya sedang menangani bug dan tertarik untuk mengetahui log pada waktu proses - Bagaimana saya bisa mendapatkan aliran log berkelanjutan?

edit: pertanyaan yang diperbaiki di akhir.

Jawaban:


176
kubectl logs -f <pod-id>

Anda dapat menggunakan -fbendera:

-f, --follow=false: Specify if the logs should be streamed.

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs


bagaimana dengan log untuk layanan atau apa pun selain pod?
Alexander Mills

4
ini berfungsi untuk waktu yang singkat kemudian log berhenti. Saya harus ctrl-c untuk keluar dari kubectl, lalu mulai ulang. Ini menunjukkan lebih banyak log setelah tetapi berhenti lagi. Adakah yang tahu mengapa log berhenti di titik-titik acak ketika mereka jelas-jelas masih dibuat oleh pod?
pferrel

20

kubectl logs --help akan memandu Anda:

Contoh:

# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1

Bendera:

-f, --follow[=false]: Specify if the logs should be streamed.

Anda juga dapat menambahkan --since=10matau lebih mulai dari waktu relatif yang lalu.


bisakah ada lebih dari satu wadah dalam satu pod?
Alexander Mills

@AlexanderMills ya, ini adalah pola "sespan"
grokpot

6

Saya perlu mengakses log dari pod yang sudah lama berjalan, dan -fmulai streaming log dari beberapa hari yang lalu, yang akan memakan waktu berjam-jam untuk sampai ke tempat yang perlu saya lihat (hanya beberapa menit terakhir atau lebih).

Ada sebuah --since=10mbendera, tapi sepertinya itu tidak berhasil bagi saya.

Apa keajaiban adalah --tail=100, di mana 100jumlah baris terbaru untuk ditampilkan.


4

tunggu kubes untuk memutar pod lalu lanjutkan ...

k8s_pod=some_pod
kubectl get pods -w $k8s_pod | while read LOGLINE
do
   [[ "${LOGLINE}" == *"Running"* ]] && pkill -P $$ kubectl
done

log ekor

for line in $(kubectl get pods | grep $k8s_pod | awk '{print $1}'); do
    kubectl logs -f $line | tee logfile
done

cari indikator kesuksesan

tail logfile | grep successful! 
RESULT=$?
exit $RESULT

'sukses!' mungkin perlu diubah tergantung pada pod Anda.
ddtraveller

Saya mengambil dua bagian pertama dari beberapa posting stackoverflow lainnya sehingga saya tidak dapat mengambil kredit untuk itu sepenuhnya tetapi kombo yang saya harap akan melayani orang lain dengan baik ...
ddtraveller

4

Jika Anda ingin mendapatkan aliran log dari aplikasi multi pod, Anda dapat menggunakan kubetail , contoh:

kubectl get pods

NAME                   READY     STATUS    RESTARTS   AGE
app2-v31-9pbpn         1/1       Running   0          1d
app2-v31-q74wg         1/1       Running   0          1d

kubetail app2

Dengan perintah itu, kubetail adalah tailing log dari pod app2-v31-9pbpn dan app2-V31-q74wg


1

Coba ini,

log ekor dari polong

kubectl --tail <"no of lines"> logs <"pod_name">

Contoh :

kubectl --tail 100 logs app_pod


0

kubctl logs -f = true [pod-name] -c [container-name]

Jika Anda hanya memiliki satu container di atas pod, nama container tidak diperlukan lagi, gunakan nama container dengan opsi -c. -f ie follow salah secara default. Jika Anda tidak menyetelnya ke true, Anda akan mendapatkan snapshot dari log penampung Anda.


0

Anda dapat mengikuti log dengan -f

kubectl logs -f <pod_name>

Jika log dihentikan, kemungkinan besar pod tersebut mengalami error, dapatkah Anda memeriksa apakah pod benar-benar berjalan atau tidak? Periksa usia mungkin atau:

kubectl describe deploy/ds <deploy_or_ds_name>?

Atau Anda juga dapat memeriksa log untuk kontainer di dalam pod yang ada beberapa kontainer

kubectl -f <pod_name> -c <container_name> 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.