Google 컨테이너 엔진에 놀 수 있는 단일 노드 kubernetes 클러스터가 있습니다.
제가 호스팅하는 작은 개인 웹사이트가 두 번이나 몇 분 동안 오프라인 상태가 되었습니다. 컨테이너의 로그를 보면 최근 정상적인 시작 순서가 완료된 것을 볼 수 있으므로 컨테이너가 종료(또는 종료?)되었다가 다시 시작되었다고 가정합니다.
이런 일이 발생하는 방법과 이유를 어떻게 알 수 있나요?
컨테이너가 예기치 않게 시작/중지될 때마다 경고를 받을 수 있는 방법이 있나요?
답변1
다음을 사용하여 컨테이너의 마지막 다시 시작 로그를 볼 수 있습니다.
kubectl 로그 podname -c 컨테이너 이름 --previous
Sreekanth의 설명대로 kubectl get pods는 재시작 횟수를 표시해야 하지만 다음을 실행할 수도 있습니다.
kubectl 설명 포드 포드 이름
그리고 Pod의 수명 주기 이벤트에 대해 kubelet이 apiserver로 보낸 이벤트를 보여줍니다.
/dev/termination-log에 최종 메시지를 쓸 수도 있으며 이는 다음에 설명된 대로 표시됩니다.문서.
답변2
이전 답변 외에도 오류를 찾는 데 도움이 된 또 다른 명령은 다음과 같습니다.
kubectl get event [--namespace=my-namespace]
Pod, Job, Node의 이벤트도 나열됩니다.
답변3
실패 이유를 정의하려면 다음 단계를 따르세요.
# print out a pod logs (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#logs)
kubectl logs {name_of_pod} -n {namespace} --since=2h --timestamps
# print the logs for the _previous_ instance of the container in a pod if it exists
kubectl logs -p {name_of_pod} -n {namespace} --previous
# check events (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#describe)
kubectl describe pod {pod_name} -n {namespace}
# look at the 'Events' at the end of the output
# ..
# Events:
# Type Reason Age From Message
# ---- ------ ---- ---- -------
# Warning BackOff 40m kubelet, gke-xx Back-off restarting failed container
# ..
# observe all events (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get)
kubectl get events -n {namespace} --sort-by=.metadata.creationTimestamp
# check logs, etc. in pod container (https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#exec)
kubectl exec -it {pod_name} -n {namespace} -- sh
답변4
다시 시작하면
kubectl describe pod your-pod-name
다음과 같은 섹션을 찾으세요.
State: Running
Started: Wed, 23 Jun 2021 23:52:05 +1000
Last State: Terminated
Reason: Error
Exit Code: 1
Started: Wed, 23 Jun 2021 23:46:48 +1000
Finished: Wed, 23 Jun 2021 23:46:52 +1000
Ready: True
위 내용을 해석하면 다음과 같습니다.
- 포드가
Wed, 23 Jun 2021 23:46:52 +1000
에 시작된 후 종료되었으며Wed, 23 Jun 2021 23:46:48 +1000
, 에 마지막으로 시작된 후 현재 실행 및 준비가 되어 있습니다.Wed, 23 Jun 2021 23:52:05 +1000
이제 끌어오기 요청이 kubernetes 1.22 마일스톤에 병합되어 에 LAST RESTART
열을 추가했으며 kubectl get pods
출시되면 사용할 수 있습니다. 여기를 참조하세요.
https://github.com/kubernetes/kubernetes/pull/100142
현재 버전을 보려면 -kubernetes version
(1.21은 2021년 6월 28일 기준 최신 릴리스입니다.)
다시 시작한 경우
kubectl get po [your-pod-name]
RESTARTS
열에 숫자가 있으면 어떤 단계에서 포드가 다시 시작되었습니다.
다시 시작한 이유
kubectl describe pod [your-pod-name]
Last State
높은 수준의 표시를 제공하는 이 표시됩니다 . Pod가 다시 시작되기 전에 Pod에서 어떤 일이 발생했는지 확인하려면 를 사용하세요 kubectl logs your-pod-name --previous
. 검사를 위해 이를 파일로 파이프할 수 있습니다.
kubectl logs your-pod-name --previous > pod_previous_log.txt
(위의 '다시 시작하는 경우' 참조)