kubectl लॉग - लगातार


97
kubectl logs <pod-id>

मेरी तैनाती से नवीनतम लॉग मिलते हैं - मैं बग पर काम कर रहा हूं और रनटाइम पर लॉग जानने के लिए इच्छुक हूं - मुझे लॉग की निरंतर स्ट्रीम कैसे मिल सकती है?

संपादित करें: अंत में सही प्रश्न।

जवाबों:


172
kubectl logs -f <pod-id>

आप -fध्वज का उपयोग कर सकते हैं :

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

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


फली के अलावा सेवा या कुछ और के लिए लॉग के बारे में क्या?
अलेक्जेंडर मिल्स

4
यह थोड़े समय के लिए काम करता है फिर लॉग बंद हो जाते हैं। मुझे kubectl से बाहर निकलने के लिए ctrl-c करना है, फिर उन्हें पुनरारंभ करें। इसके बाद अधिक लॉग दिखाता है लेकिन फिर से बंद हो जाता है। किसी को भी पता है कि लॉग यादृच्छिक स्पॉट में क्यों रुकते हैं जब वे स्पष्ट रूप से अभी भी फली द्वारा उत्पन्न हो रहे हैं?
पितरेल

20

kubectl logs --help आपका मार्गदर्शन करेंगे:

उदाहरण:

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

झंडे:

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

आप --since=10mउस सापेक्ष समय से भी जोड़ सकते हैं या शुरू कर सकते हैं ।


क्या एक फली में एक से अधिक कंटेनर हो सकते हैं?
अलेक्जेंडर मिल्स


6

मुझे एक लंबे चलने वाले पॉड के लॉग तक पहुंचने की आवश्यकता थी, और -fदिन पहले से लॉग को स्ट्रीमिंग करना शुरू कर दिया, जो कि जहां मुझे देखने की जरूरत थी, वहां पहुंचने में घंटों लगेंगे (बस अंतिम दो मिनट या तो)।

एक --since=10mझंडा है, लेकिन वह मेरे लिए काम नहीं कर रहा था।

क्या चमत्कार था --tail=100, 100हाल ही में प्रदर्शित होने वाली लाइनों की संख्या कहां है।


4

फली ऊपर स्पिन करने के लिए क्यूब्स की प्रतीक्षा करें फिर आगे बढ़ें ...

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

पूंछ लॉग

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

सफलता के सूचक की तलाश करें

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

'सफल' अपनी फली के आधार पर बदलने की आवश्यकता हो सकती है।
ddtraveller

मैंने कई दूसरे
स्टैकओवरफ़्लो

4

यदि आप मल्टी पॉड ऐप से लॉग की स्ट्रीम प्राप्त करना चाहते हैं, तो आप कुबेटेल का उपयोग कर सकते हैं , उदाहरण:

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

कि आदेश के साथ, kubetail है पीछा फली से लॉग APP2-v31-9pbpn और APP2-v31-q74wg


1

इसे इस्तेमाल करे,

फली से पूंछ लॉग

kubectl --tail <"लाइनों की संख्या"> लॉग <"pod_name">

उदाहरण :

kubectl - 100 लॉग app_pod


0

kubctl लॉग -f = true [पॉड-नेम] -c [कंटेनर-नेम]

यदि आपके पास फली के ऊपर एक एकल कंटेनर है, तो कंटेनर नाम आवश्यक नहीं है -सी विकल्प के साथ कंटेनर नाम का उपयोग करें। -f यानी फॉलो डिफ़ॉल्ट रूप से गलत है। यदि आप इसे सही पर सेट नहीं करते हैं, तो आपको अपने कंटेनर लॉग का स्नैपशॉट मिलेगा।


0

आप -f के साथ लॉग का पालन कर सकते हैं

kubectl logs -f <pod_name>

यदि लॉग को सबसे अधिक रोका जाता है, तो पॉड दुर्घटनाग्रस्त हो जाता है, क्या आप जांच सकते हैं कि पॉड वास्तव में चल रहा है या नहीं? शायद उम्र की जाँच करें या:

kubectl describe deploy/ds <deploy_or_ds_name>?

या आप पॉड के अंदर कंटेनर के लिए लॉग की भी जांच कर सकते हैं जिसमें कई कंटेनर हैं

kubectl -f <pod_name> -c <container_name> 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.