From 1ca77d26b9bae2259874f8c86ad88d9a8630aae5 Mon Sep 17 00:00:00 2001 From: ydFu Date: Fri, 23 Sep 2022 18:29:52 +0800 Subject: [PATCH] Update Determine the Reason for Pod Failure Signed-off-by: ydFu --- .../determine-reason-pod-failure.md | 74 +++++++++---------- 1 file changed, 34 insertions(+), 40 deletions(-) diff --git a/content/en/docs/tasks/debug/debug-application/determine-reason-pod-failure.md b/content/en/docs/tasks/debug/debug-application/determine-reason-pod-failure.md index 975e0591d5..40a0fbb6e7 100644 --- a/content/en/docs/tasks/debug/debug-application/determine-reason-pod-failure.md +++ b/content/en/docs/tasks/debug/debug-application/determine-reason-pod-failure.md @@ -1,12 +1,12 @@ --- title: Determine the Reason for Pod Failure content_type: task +weight: 30 --- -This page shows how to write and read a Container -termination message. +This page shows how to write and read a Container termination message. Termination messages provide a way for containers to write information about fatal events to a location where it can @@ -16,31 +16,25 @@ put in a termination message should also be written to the general [Kubernetes logs](/docs/concepts/cluster-administration/logging/). - - - ## {{% heading "prerequisites" %}} - -{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} - - - +{{< include "task-tutorial-prereqs.md" >}} ## Writing and reading a termination message In this exercise, you create a Pod that runs one container. -The configuration file specifies a command that runs when -the container starts. +The manifest for that Pod specifies a command that runs when the container starts: {{< codenew file="debug/termination.yaml" >}} 1. Create a Pod based on the YAML configuration file: - kubectl apply -f https://k8s.io/examples/debug/termination.yaml - + ```shell + kubectl apply -f https://k8s.io/examples/debug/termination.yaml + ``` + In the YAML file, in the `command` and `args` fields, you can see that the container sleeps for 10 seconds and then writes "Sleep expired" to the `/dev/termination-log` file. After the container writes @@ -48,34 +42,42 @@ the container starts. 1. Display information about the Pod: - kubectl get pod termination-demo + ```shell + kubectl get pod termination-demo + ``` Repeat the preceding command until the Pod is no longer running. 1. Display detailed information about the Pod: - kubectl get pod termination-demo --output=yaml + ```shell + kubectl get pod termination-demo --output=yaml + ``` The output includes the "Sleep expired" message: - apiVersion: v1 - kind: Pod - ... - lastState: - terminated: - containerID: ... - exitCode: 0 - finishedAt: ... - message: | - Sleep expired - ... + ```yaml + apiVersion: v1 + kind: Pod + ... + lastState: + terminated: + containerID: ... + exitCode: 0 + finishedAt: ... + message: | + Sleep expired + ... + ``` -1. Use a Go template to filter the output so that it includes -only the termination message: +1. Use a Go template to filter the output so that it includes only the termination message: - kubectl get pod termination-demo -o go-template="{{range .status.containerStatuses}}{{.lastState.terminated.message}}{{end}}" + ```shell + kubectl get pod termination-demo -o go-template="{{range .status.containerStatuses}}{{.lastState.terminated.message}}{{end}}" + ``` -If you are running a multi-container pod, you can use a Go template to include the container's name. By doing so, you can discover which of the containers is failing: +If you are running a multi-container Pod, you can use a Go template to include the container's name. +By doing so, you can discover which of the containers is failing: ```shell kubectl get pod multi-container-pod -o go-template='{{range .status.containerStatuses}}{{printf "%s:\n%s\n\n" .name .lastState.terminated.message}}{{end}}' @@ -96,7 +98,7 @@ The total message length across all containers is limited to 12KiB, divided equa For example, if there are 12 containers (`initContainers` or `containers`), each has 1024 bytes of available termination message space. The default termination message path is `/dev/termination-log`. -You cannot set the termination message path after a Pod is launched +You cannot set the termination message path after a Pod is launched. In the following example, the container writes termination messages to `/tmp/my-log` for Kubernetes to retrieve: @@ -121,17 +123,9 @@ to use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. - - ## {{% heading "whatsnext" %}} - * See the `terminationMessagePath` field in [Container](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#container-v1-core). * Learn about [retrieving logs](/docs/concepts/cluster-administration/logging/). * Learn about [Go templates](https://golang.org/pkg/text/template/). - - - - -