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.