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.

NPR
sumber

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

Yu-Ju Hong
sumber
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.

manojlds
sumber
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.

arshbot
sumber
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
ddtraveller.dll
sumber
'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

db80.dll
sumber
1

Coba ini,

log ekor dari polong

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

Contoh :

kubectl --tail 100 logs app_pod

Saurabh Bishnoi
sumber
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.

Jaraws
sumber
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> 
Abhi Gadroo
sumber