kubectl günlükleri - sürekli


100
kubectl logs <pod-id>

dağıtımımdan en son günlükleri alıyor - Bir hata üzerinde çalışıyorum ve çalışma zamanında günlükleri bilmekle ilgileniyorum - Günlüklerin sürekli akışını nasıl elde edebilirim?

düzenleme: sonunda düzeltilmiş soru.

Yanıtlar:


176
kubectl logs -f <pod-id>

-fBayrağı kullanabilirsiniz :

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

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


servis veya kapsüller dışında herhangi bir şey için günlükler ne olacak?
— Alexander Mills

4
bu kısa bir süre için çalışır ve ardından günlükler durur. Kubectl'den çıkmak için ctrl-c yapmalı ve sonra onları yeniden başlatmalıyım. Bu, daha sonra daha fazla günlük gösterir ancak tekrar durur. Günlüklerin hala bölme tarafından üretilmeye devam ederken neden rastgele noktalarda durduğunu bilen var mı?
— pferrel

20

kubectl logs --help size rehberlik edecek:

Misal:

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

Bayraklar:

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

Ayrıca --since=10mbu göreceli zaman öncesine kadar ekleyebilirsiniz .


bir bölmede birden fazla kap olabilir mi?
— Alexander Mills

@AlexanderMills evet, bu "sepet" kalıbı
— grokpot

6

Uzun süredir çalışan bir kapsülün -fgünlüklerine erişmem gerekiyordu ve günler öncesinden günlükleri akışa almaya başladım, bu da görüntülemem gereken yere ulaşmak için saatler alacaktı (sadece son birkaç dakika kadar).

Bir --since=10mbayrak var ama bu bende işe yaramadı.

Harikalar yaratan şey --tail=100, 100görüntülenecek son satırların nerede olduğuydu .


4

kubes'ın kapsülü döndürmesini bekleyin ve sonra devam edin ...

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

kuyruk günlükleri

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

başarı göstergesini ara

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

'başarılı!' bölmenize bağlı olarak değişmesi gerekebilir.
— ddtraveller

Tamamen o ama açılan bir umut iyi başkalarına hizmet edecek için kredi alamaz yüzden ... birkaç diğer stackoverflow görevlerinden bu ilk iki bölüm sürdü
— ddtraveller

4

Çok bölmeli bir uygulamadan günlük akışını almak istiyorsanız, kubetail'i kullanabilirsiniz , örneğin:

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

O komutla, kubetail edilir atık pod günlükleri app2-v31-9pbpn ve app2-v31-q74wg


1

Bunu dene,

kapsüllerden kuyruk günlükleri

kubectl --tail <"satır sayısı"> günlükler <"pod_name">

Örnek :

kubectl --tail 100 günlük app_pod


1

Günlükleri -f ile takip edebilirsiniz

kubectl logs -f <pod_name>

Günlükler durdurulmuşsa, büyük olasılıkla bölme kilitleniyorsa, bölmenin gerçekten çalışıp çalışmadığını kontrol edebilir misiniz? Belki yaşı kontrol edin veya:

kubectl describe deploy/ds <deploy_or_ds_name>?

Veya birden fazla kapsayıcıda kapsayıcı içindeki kapsayıcı için günlükleri de kontrol edebilirsiniz.

kubectl -f <pod_name> -c <container_name> 

0

kubctl günlükleri -f = true [kapsül adı] -c [kapsayıcı adı]

Kapsül üzerinde yalnızca tek bir kabınız varsa, kapsayıcı adı gerekli değildir, yoksa kap adını -c seçeneğiyle kullanın. -f ie follow varsayılan olarak yanlıştır. Doğru olarak ayarlamazsanız, kapsayıcı günlüklerinizin anlık görüntüsünü alırsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.