Skip to content

Commit b3e86c5

Browse files
[pt-br] Add /tasks/debug/debug-application/determine-reason-pod-failu… (kubernetes#50051)
* [pt-br] Add /tasks/debug/debug-application/determine-reason-pod-failure.md * [pt-br] Add /tasks/debug/debug-application/determine-reason-pod-failure.md * [pt-br] Add /tasks/debug/debug-application/determine-reason-pod-failure.md * [pt-br] Add /tasks/debug/debug-application/determine-reason-pod-failure.md
1 parent 17aed07 commit b3e86c5

File tree

2 files changed

+142
-0
lines changed

2 files changed

+142
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
---
2+
title: Determine a razão para a falha do Pod
3+
content_type: task
4+
weight: 30
5+
---
6+
7+
<!-- overview -->
8+
9+
Esta página mostra como escrever e ler uma mensagem de término do contêiner.
10+
11+
Mensagens de término fornecem uma maneira para os contêineres registrarem informações sobre eventos fatais em um local onde possam ser facilmente recuperadas e exibidas por ferramentas como painéis e softwares de monitoramento. Na maioria dos casos, as informações incluídas em uma mensagem de término também devem ser registradas nos
12+
[logs do Kubernetes](/docs/concepts/cluster-administration/logging/).
13+
14+
## {{% heading "prerequisites" %}}
15+
16+
{{< include "task-tutorial-prereqs.md" >}}
17+
18+
<!-- steps -->
19+
20+
## Escrevendo e lendo uma mensagem de término
21+
22+
Neste exercício, você cria um Pod que executa um único contêiner.
23+
O manifesto para esse Pod especifica um comando que é executado quando o contêiner é iniciado:
24+
25+
{{% code_sample file="debug/termination.yaml" %}}
26+
27+
1. Crie um Pod com base no arquivo de configuração YAML:
28+
29+
```shell
30+
kubectl apply -f https://k8s.io/examples/debug/termination.yaml
31+
```
32+
33+
No arquivo YAML, nos campos `command` e `args`, é possível ver que o
34+
contêiner dorme por 10 segundos e, em seguida, escreve "Sleep expired"
35+
no arquivo `/dev/termination-log`. Após escrever a mensagem "Sleep expired",
36+
o contêiner é encerrado.
37+
38+
1. Exiba informações sobre o Pod:
39+
40+
```shell
41+
kubectl get pod termination-demo
42+
```
43+
44+
Repita o comando anterior até que o Pod não esteja mais em execução.
45+
46+
1. Exiba informações detalhadas sobre o Pod:
47+
48+
```shell
49+
kubectl get pod termination-demo --output=yaml
50+
```
51+
52+
A saída inclui a mensagem "Sleep expired":
53+
54+
```yaml
55+
apiVersion: v1
56+
kind: Pod
57+
...
58+
lastState:
59+
terminated:
60+
containerID: ...
61+
exitCode: 0
62+
finishedAt: ...
63+
message: |
64+
Sleep expired
65+
...
66+
```
67+
68+
1. Use um template Go para filtrar a saída, de modo que inclua apenas a mensagem de término:
69+
70+
```shell
71+
kubectl get pod termination-demo -o go-template="{{range .status.containerStatuses}}{{.lastState.terminated.message}}{{end}}"
72+
```
73+
74+
Se você estiver executando um Pod com vários contêineres, pode usar um template Go
75+
para incluir o nome do contêiner.
76+
Dessa forma, você pode descobrir qual dos contêineres está falhando:
77+
78+
```shell
79+
kubectl get pod multi-container-pod -o go-template='{{range .status.containerStatuses}}{{printf "%s:\n%s\n\n" .name .lastState.terminated.message}}{{end}}'
80+
```
81+
82+
## Personalizando a mensagem de término
83+
84+
O Kubernetes recupera mensagens de término do arquivo especificado no campo
85+
`terminationMessagePath` de um contêiner, que tem o valor padrão de `/dev/termination-log`.
86+
Ao personalizar esse campo, você pode instruir o Kubernetes a usar um arquivo diferente.
87+
O Kubernetes usa o conteúdo do arquivo especificado para preencher a mensagem de status
88+
do contêiner, tanto em casos de sucesso quanto de falha.
89+
90+
A mensagem de término deve ser um breve status final, como uma mensagem de falha de asserção.
91+
O kubelet trunca mensagens que excedam 4096 bytes.
92+
93+
O tamanho total da mensagem entre todos os contêineres é limitado a 12KiB,
94+
sendo dividido igualmente entre cada contêiner.
95+
Por exemplo, se houver 12 contêineres (`initContainers` ou `containers`),
96+
cada um terá 1024 bytes disponíveis para a mensagem de término.
97+
98+
O caminho padrão para a mensagem de término é `/dev/termination-log`.
99+
Não é possível definir o caminho da mensagem de término após o lançamento de um Pod.
100+
101+
No exemplo a seguir, o contêiner grava mensagens de término em
102+
`/tmp/my-log` para que o Kubernetes possa recuperá-las:
103+
104+
```yaml
105+
apiVersion: v1
106+
kind: Pod
107+
metadata:
108+
name: msg-path-demo
109+
spec:
110+
containers:
111+
- name: msg-path-demo-container
112+
image: debian
113+
terminationMessagePath: "/tmp/my-log"
114+
```
115+
116+
Além disso, os usuários podem definir o campo `terminationMessagePolicy` de um contêiner
117+
para uma personalização adicional. Esse campo tem como valor padrão "`File`",
118+
o que significa que as mensagens de término são recuperadas apenas do arquivo
119+
de mensagem de término.
120+
Ao definir `terminationMessagePolicy` como "`FallbackToLogsOnError`", você instrui
121+
o Kubernetes a usar o último trecho do log de saída do contêiner caso o arquivo
122+
de mensagem de término esteja vazio e o contêiner tenha encerrado com erro.
123+
A saída do log é limitada a 2048 bytes ou 80 linhas, o que for menor.
124+
125+
## {{% heading "whatsnext" %}}
126+
127+
* Veja o campo `terminationMessagePath` em [Container](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#container-v1-core).
128+
* Consulte [ImagePullBackOff](/docs/concepts/containers/images/#imagepullbackoff) em [Imagens](/docs/concepts/containers/images/).
129+
* Saiba mais sobre [recuperação de logs](/docs/concepts/cluster-administration/logging/).
130+
* Aprenda sobre [templates Go](https://pkg.go.dev/text/template).
131+
* Conheça mais sobre [status do Pod](/docs/tasks/debug/debug-application/debug-init-containers/#understanding-pod-status) e [fase do Pod](/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase).
132+
* Entenda os [estados do contêiner](/docs/concepts/workloads/pods/pod-lifecycle/#container-states).

Diff for: content/pt-br/examples/debug/termination.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: termination-demo
5+
spec:
6+
containers:
7+
- name: termination-demo-container
8+
image: debian
9+
command: ["/bin/sh"]
10+
args: ["-c", "sleep 10 && echo Sleep expired > /dev/termination-log"]

0 commit comments

Comments
 (0)