nhật ký kubectl - liên tục


99
kubectl logs <pod-id>

nhận nhật ký mới nhất từ ​​quá trình triển khai của tôi - Tôi đang sửa lỗi và muốn biết nhật ký trong thời gian chạy - Làm cách nào để có được luồng nhật ký liên tục?

sửa: câu hỏi đã sửa ở cuối.

Câu trả lời:


175
kubectl logs -f <pod-id>

Bạn có thể sử dụng -fcờ:

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

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


những gì về nhật ký cho dịch vụ hoặc bất cứ điều gì khác ngoài các nhóm?
Alexander Mills

4
điều này hoạt động trong một thời gian ngắn sau đó các bản ghi dừng lại. Tôi phải ctrl-c để thoát khỏi kubectl, sau đó khởi động lại chúng. Điều này hiển thị nhiều bản ghi hơn sau nhưng dừng lại. Có ai biết tại sao các bản ghi dừng lại ở các điểm ngẫu nhiên khi chúng rõ ràng vẫn đang được tạo bởi nhóm không?
pferrel

20

kubectl logs --help sẽ hướng dẫn bạn:

Thí dụ:

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

Cờ:

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

Bạn cũng có thể thêm --since=10mhoặc bắt đầu từ thời điểm tương đối trước đó.


có thể có nhiều hơn một thùng chứa trong một nhóm không?
Alexander Mills

@AlexanderMills vâng, đây là mẫu "sidecar"
grokpot

6

Tôi cần truy cập nhật ký của một nhóm đang hoạt động dài và -fbắt đầu phát trực tuyến nhật ký từ nhiều ngày trước, điều này sẽ mất hàng giờ để đến nơi tôi cần xem (chỉ vài phút cuối cùng hoặc lâu hơn).

Có một --since=10mlá cờ, nhưng điều đó dường như không hiệu quả với tôi.

Điều kỳ diệu là --tail=100, 100số dòng gần đây được hiển thị ở đâu.


4

đợi các kubes quay lên pod rồi tiếp tục ...

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

nhật ký đuôi

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

tìm kiếm chỉ báo thành công

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

'thành công!' có thể cần thay đổi tùy thuộc vào nhóm của bạn.
ddtraveller

Tôi mất những hai phần đầu tiên từ một số bài viết stackoverflow khác vì vậy tôi không thể lấy tín dụng đối với những người hoàn toàn nhưng combo tôi hy vọng sẽ phục vụ những người khác cũng ...
ddtraveller

4

Nếu bạn muốn nhận luồng nhật ký từ một ứng dụng nhiều nhóm, bạn có thể sử dụng kubetail , ví dụ:

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

Với lệnh đó, kubetail được tailing các bản ghi từ pod app2-v31-9pbpn app2-V31-q74wg


1

Thử đi,

nhật ký đuôi từ vỏ

kubectl --tail <"no of lines"> nhật ký <"pod_name">

Ví dụ :

kubectl --tail 100 bản ghi app_pod


0

kubctl logs -f = true [pod-name] -c [container-name]

Nếu bạn chỉ có một vùng chứa duy nhất trên nhóm, tên vùng chứa là không cần thiết, hãy sử dụng tên vùng chứa với tùy chọn -c. -f tức là theo mặc định là sai. Nếu bạn không đặt nó thành true, bạn sẽ nhận được ảnh chụp nhanh các nhật ký vùng chứa của mình.


0

Bạn có thể theo dõi nhật ký với -f

kubectl logs -f <pod_name>

Nếu các bản ghi bị dừng, rất có thể nhóm đang bị lỗi, bạn có thể kiểm tra xem nhóm có thực sự đang chạy hay không? Kiểm tra độ tuổi có thể hoặc:

kubectl describe deploy/ds <deploy_or_ds_name>?

Hoặc bạn cũng có thể kiểm tra nhật ký xem vùng chứa bên trong pod có nhiều vùng chứa không

kubectl -f <pod_name> -c <container_name> 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.