บันทึก kubectl - อย่างต่อเนื่อง


99
kubectl logs <pod-id>

รับบันทึกล่าสุดจากการปรับใช้ - ฉันกำลังแก้ไขข้อบกพร่องและสนใจที่จะทราบบันทึกขณะรันไทม์ - ฉันจะรับสตรีมบันทึกอย่างต่อเนื่องได้อย่างไร

แก้ไข: แก้ไขคำถามในตอนท้าย

คำตอบ:


176
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


สิ่งที่เกี่ยวกับบันทึกสำหรับบริการหรือสิ่งอื่นที่ไม่ใช่พ็อด?
Alexander Mills

4
ใช้งานได้ในช่วงเวลาสั้น ๆ จากนั้นบันทึกจะหยุดลง ฉันต้อง ctrl-c เพื่อออกจาก kubectl แล้วรีสตาร์ท แสดงบันทึกเพิ่มเติมหลังจากนั้น แต่หยุดอีกครั้ง มีใครรู้บ้างว่าเหตุใดบันทึกจึงหยุดอยู่ในจุดสุ่มเมื่อเห็นได้ชัดว่ายังคงถูกสร้างขึ้นโดยพ็อด?
pferrel

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หรือเริ่มจากเวลาที่ผ่านมาได้


ในฝักมีมากกว่าหนึ่งตู้ได้หรือไม่?
Alexander Mills

@AlexanderMills ใช่นี่คือรูปแบบ "sidecar"
grokpot

6

ฉันต้องการเข้าถึงบันทึกของพ็อดที่ใช้งานได้ยาวนานและ-fเริ่มสตรีมบันทึกตั้งแต่หลายวันก่อนซึ่งจะต้องใช้เวลาหลายชั่วโมงกว่าจะไปถึงจุดที่ฉันต้องการดู (เพียงไม่กี่นาทีสุดท้ายหรือมากกว่านั้น)

มี--since=10mธง แต่ดูเหมือนจะไม่ได้ผลสำหรับฉัน

อะไรเป็นสิ่งมหัศจรรย์--tail=100ที่100เป็นจำนวนของเส้นที่ผ่านมาเพื่อการแสดงผล


4

รอให้ kubes หมุนฝักแล้วไปต่อ ...

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

ฉันเอาสองส่วนแรกมาจากโพสต์ stackoverflow อื่น ๆ ดังนั้นฉันจึงไม่สามารถให้เครดิตกับสิ่งเหล่านั้นได้ทั้งหมด แต่คอมโบฉันหวังว่าจะให้บริการผู้อื่นได้ดี ...
ddtraveller

4

หากคุณต้องการรับสตรีมบันทึกจากแอปหลายพ็อดคุณสามารถใช้kubetailได้เช่น:

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 tailingบันทึกจากฝักApp2-v31-9pbpn และ App2-V31-q74wg


1

ลองสิ่งนี้

บันทึกหางจากฝัก

kubectl --tail <"no of lines"> บันทึก <"pod_name">

ตัวอย่าง :

kubectl - หาง 100 บันทึก app_pod


0

บันทึก kubctl -f = true [pod-name] -c [container-name]

หากคุณมีคอนเทนเนอร์เดียวบนพ็อดไม่จำเป็นต้องใช้ชื่อคอนเทนเนอร์อีกให้ใช้ชื่อคอนเทนเนอร์ที่มีตัวเลือก -c -f เช่นติดตามเป็นเท็จโดยค่าเริ่มต้น หากคุณไม่ได้ตั้งค่าเป็นจริงคุณจะได้รับสแนปชอตของบันทึกคอนเทนเนอร์ของคุณ


0

คุณสามารถติดตามบันทึกด้วย -f

kubectl logs -f <pod_name>

หากบันทึกถูกหยุดส่วนใหญ่พ็อดอาจขัดข้องคุณสามารถตรวจสอบได้ว่าพ็อดทำงานจริงหรือไม่ ตรวจสอบอายุหรือ:

kubectl describe deploy/ds <deploy_or_ds_name>?

หรือคุณสามารถตรวจสอบบันทึกสำหรับคอนเทนเนอร์ภายในพ็อดที่มีหลายคอนเทนเนอร์

kubectl -f <pod_name> -c <container_name> 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.