Skip to content

Commit 8a1198f

Browse files
[pt-br] Add tasks/debug/debug-cluster/_index.md (#52009)
* [pt-br] Add tasks/debug/debug-cluster/_index.md * Update content/pt-br/docs/tasks/debug/debug-cluster/_index.md Co-authored-by: Mauren <[email protected]> * Update content/pt-br/docs/tasks/debug/debug-cluster/_index.md Co-authored-by: Mauren <[email protected]> * Update content/pt-br/docs/tasks/debug/debug-cluster/_index.md Co-authored-by: Mauren <[email protected]> * Update content/pt-br/docs/tasks/debug/debug-cluster/_index.md Co-authored-by: Mauren <[email protected]> * Update content/pt-br/docs/tasks/debug/debug-cluster/_index.md Co-authored-by: Mauren <[email protected]> * Update content/pt-br/docs/tasks/debug/debug-cluster/_index.md Co-authored-by: Mauren <[email protected]> * Update content/pt-br/docs/tasks/debug/debug-cluster/_index.md Co-authored-by: Mauren <[email protected]> * [pt-br] Add tasks/debug/debug-cluster/_index.md --------- Co-authored-by: Mauren <[email protected]>
1 parent 34717b4 commit 8a1198f

File tree

1 file changed

+328
-0
lines changed
  • content/pt-br/docs/tasks/debug/debug-cluster

1 file changed

+328
-0
lines changed
Lines changed: 328 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
---
2+
title: "Solução de problemas em Clusters"
3+
description: Depurando problemas comuns em clusters.
4+
weight: 20
5+
no_list: true
6+
---
7+
8+
<!-- overview -->
9+
10+
Esta documentação é sobre solução de problemas em clusters; assumimos que você já descartou sua aplicação como a causa raiz do
11+
problema que está enfrentando. Consulte o [guia de solução de problemas em aplicações](/docs/tasks/debug/debug-application/) para
12+
dicas sobre depuração de aplicações.
13+
Você também pode visitar o [documento de visão geral de solução de problemas](/docs/tasks/debug/) para mais informações.
14+
15+
Para solução de problemas do {{<glossary_tooltip text="kubectl" term_id="kubectl">}}, consulte
16+
[Solução de problemas do kubectl](/docs/tasks/debug/debug-cluster/troubleshoot-kubectl/).
17+
18+
<!-- body -->
19+
20+
## Listando seu cluster
21+
22+
A primeira coisa a depurar no seu cluster é se todos os seus nós estão registrados corretamente.
23+
24+
Execute o seguinte comando:
25+
26+
```shell
27+
kubectl get nodes
28+
```
29+
30+
E verifique se todos os nós que você espera ver estão presentes e se todos estão no estado `Ready`.
31+
32+
Para obter informações detalhadas sobre a integridade geral do seu cluster, você pode executar:
33+
34+
```shell
35+
kubectl cluster-info dump
36+
```
37+
38+
### Exemplo: depurando um nó indisponível/inacessível
39+
40+
Às vezes, durante a depuração, pode ser útil verificar o status de um nó -- por exemplo, porque
41+
você notou um comportamento estranho de um Pod que está executando no nó, ou para descobrir por que um Pod
42+
não será alocado no nó. Assim como com os Pods, você pode usar `kubectl describe node` e `kubectl get
43+
node -o yaml` para recuperar informações detalhadas sobre os nós. Por exemplo, aqui está o que você verá se
44+
um nó estiver indisponível (desconectado da rede, ou o kubelet morre e não reinicia, etc.). Observe
45+
os eventos que mostram que o nó está `NotReady`, e também observe que os pods não estão mais em execução
46+
(eles são removidos após cinco minutos de status `NotReady`).
47+
48+
```shell
49+
kubectl get nodes
50+
```
51+
52+
```none
53+
NAME STATUS ROLES AGE VERSION
54+
kube-worker-1 NotReady <none> 1h v1.23.3
55+
kubernetes-node-bols Ready <none> 1h v1.23.3
56+
kubernetes-node-st6x Ready <none> 1h v1.23.3
57+
kubernetes-node-unaj Ready <none> 1h v1.23.3
58+
```
59+
60+
```shell
61+
kubectl describe node kube-worker-1
62+
```
63+
64+
```none
65+
Name: kube-worker-1
66+
Roles: <none>
67+
Labels: beta.kubernetes.io/arch=amd64
68+
beta.kubernetes.io/os=linux
69+
kubernetes.io/arch=amd64
70+
kubernetes.io/hostname=kube-worker-1
71+
kubernetes.io/os=linux
72+
node.alpha.kubernetes.io/ttl: 0
73+
volumes.kubernetes.io/controller-managed-attach-detach: true
74+
CreationTimestamp: Thu, 17 Feb 2022 16:46:30 -0500
75+
Taints: node.kubernetes.io/unreachable:NoExecute
76+
node.kubernetes.io/unreachable:NoSchedule
77+
Unschedulable: false
78+
Lease:
79+
HolderIdentity: kube-worker-1
80+
AcquireTime: <unset>
81+
RenewTime: Thu, 17 Feb 2022 17:13:09 -0500
82+
Conditions:
83+
Type Status LastHeartbeatTime LastTransitionTime Reason Message
84+
---- ------ ----------------- ------------------ ------ -------
85+
NetworkUnavailable False Thu, 17 Feb 2022 17:09:13 -0500 Thu, 17 Feb 2022 17:09:13 -0500 WeaveIsUp Weave pod has set this
86+
MemoryPressure Unknown Thu, 17 Feb 2022 17:12:40 -0500 Thu, 17 Feb 2022 17:13:52 -0500 NodeStatusUnknown Kubelet stopped posting node status.
87+
DiskPressure Unknown Thu, 17 Feb 2022 17:12:40 -0500 Thu, 17 Feb 2022 17:13:52 -0500 NodeStatusUnknown Kubelet stopped posting node status.
88+
PIDPressure Unknown Thu, 17 Feb 2022 17:12:40 -0500 Thu, 17 Feb 2022 17:13:52 -0500 NodeStatusUnknown Kubelet stopped posting node status.
89+
Ready Unknown Thu, 17 Feb 2022 17:12:40 -0500 Thu, 17 Feb 2022 17:13:52 -0500 NodeStatusUnknown Kubelet stopped posting node status.
90+
Addresses:
91+
InternalIP: 192.168.0.113
92+
Hostname: kube-worker-1
93+
Capacity:
94+
cpu: 2
95+
ephemeral-storage: 15372232Ki
96+
hugepages-2Mi: 0
97+
memory: 2025188Ki
98+
pods: 110
99+
Allocatable:
100+
cpu: 2
101+
ephemeral-storage: 14167048988
102+
hugepages-2Mi: 0
103+
memory: 1922788Ki
104+
pods: 110
105+
System Info:
106+
Machine ID: 9384e2927f544209b5d7b67474bbf92b
107+
System UUID: aa829ca9-73d7-064d-9019-df07404ad448
108+
Boot ID: 5a295a03-aaca-4340-af20-1327fa5dab5c
109+
Kernel Version: 5.13.0-28-generic
110+
OS Image: Ubuntu 21.10
111+
Operating System: linux
112+
Architecture: amd64
113+
Container Runtime Version: containerd://1.5.9
114+
Kubelet Version: v1.23.3
115+
Kube-Proxy Version: v1.23.3
116+
Non-terminated Pods: (4 in total)
117+
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits Age
118+
--------- ---- ------------ ---------- --------------- ------------- ---
119+
default nginx-deployment-67d4bdd6f5-cx2nz 500m (25%) 500m (25%) 128Mi (6%) 128Mi (6%) 23m
120+
default nginx-deployment-67d4bdd6f5-w6kd7 500m (25%) 500m (25%) 128Mi (6%) 128Mi (6%) 23m
121+
kube-system kube-proxy-dnxbz 0 (0%) 0 (0%) 0 (0%) 0 (0%) 28m
122+
kube-system weave-net-gjxxp 100m (5%) 0 (0%) 200Mi (10%) 0 (0%) 28m
123+
Allocated resources:
124+
(Total limits may be over 100 percent, i.e., overcommitted.)
125+
Resource Requests Limits
126+
-------- -------- ------
127+
cpu 1100m (55%) 1 (50%)
128+
memory 456Mi (24%) 256Mi (13%)
129+
ephemeral-storage 0 (0%) 0 (0%)
130+
hugepages-2Mi 0 (0%) 0 (0%)
131+
Events:
132+
...
133+
```
134+
135+
```shell
136+
kubectl get node kube-worker-1 -o yaml
137+
```
138+
139+
```yaml
140+
apiVersion: v1
141+
kind: Node
142+
metadata:
143+
annotations:
144+
node.alpha.kubernetes.io/ttl: "0"
145+
volumes.kubernetes.io/controller-managed-attach-detach: "true"
146+
creationTimestamp: "2022-02-17T21:46:30Z"
147+
labels:
148+
beta.kubernetes.io/arch: amd64
149+
beta.kubernetes.io/os: linux
150+
kubernetes.io/arch: amd64
151+
kubernetes.io/hostname: kube-worker-1
152+
kubernetes.io/os: linux
153+
name: kube-worker-1
154+
resourceVersion: "4026"
155+
uid: 98efe7cb-2978-4a0b-842a-1a7bf12c05f8
156+
spec: {}
157+
status:
158+
addresses:
159+
- address: 192.168.0.113
160+
type: InternalIP
161+
- address: kube-worker-1
162+
type: Hostname
163+
allocatable:
164+
cpu: "2"
165+
ephemeral-storage: "14167048988"
166+
hugepages-2Mi: "0"
167+
memory: 1922788Ki
168+
pods: "110"
169+
capacity:
170+
cpu: "2"
171+
ephemeral-storage: 15372232Ki
172+
hugepages-2Mi: "0"
173+
memory: 2025188Ki
174+
pods: "110"
175+
conditions:
176+
- lastHeartbeatTime: "2022-02-17T22:20:32Z"
177+
lastTransitionTime: "2022-02-17T22:20:32Z"
178+
message: Weave pod has set this
179+
reason: WeaveIsUp
180+
status: "False"
181+
type: NetworkUnavailable
182+
- lastHeartbeatTime: "2022-02-17T22:20:15Z"
183+
lastTransitionTime: "2022-02-17T22:13:25Z"
184+
message: kubelet has sufficient memory available
185+
reason: KubeletHasSufficientMemory
186+
status: "False"
187+
type: MemoryPressure
188+
- lastHeartbeatTime: "2022-02-17T22:20:15Z"
189+
lastTransitionTime: "2022-02-17T22:13:25Z"
190+
message: kubelet has no disk pressure
191+
reason: KubeletHasNoDiskPressure
192+
status: "False"
193+
type: DiskPressure
194+
- lastHeartbeatTime: "2022-02-17T22:20:15Z"
195+
lastTransitionTime: "2022-02-17T22:13:25Z"
196+
message: kubelet has sufficient PID available
197+
reason: KubeletHasSufficientPID
198+
status: "False"
199+
type: PIDPressure
200+
- lastHeartbeatTime: "2022-02-17T22:20:15Z"
201+
lastTransitionTime: "2022-02-17T22:15:15Z"
202+
message: kubelet is posting ready status
203+
reason: KubeletReady
204+
status: "True"
205+
type: Ready
206+
daemonEndpoints:
207+
kubeletEndpoint:
208+
Port: 10250
209+
nodeInfo:
210+
architecture: amd64
211+
bootID: 22333234-7a6b-44d4-9ce1-67e31dc7e369
212+
containerRuntimeVersion: containerd://1.5.9
213+
kernelVersion: 5.13.0-28-generic
214+
kubeProxyVersion: v1.23.3
215+
kubeletVersion: v1.23.3
216+
machineID: 9384e2927f544209b5d7b67474bbf92b
217+
operatingSystem: linux
218+
osImage: Ubuntu 21.10
219+
systemUUID: aa829ca9-73d7-064d-9019-df07404ad448
220+
```
221+
222+
223+
## Examinando logs
224+
225+
Por enquanto, investigar mais profundamente o cluster requer fazer login nas máquinas relevantes. Veja abaixo as localizações
226+
dos arquivos de log relevantes. Em sistemas baseados em systemd, você pode precisar usar `journalctl` ao invés de examinar arquivos de log.
227+
228+
### Nós da camada de gerenciamento
229+
230+
* `/var/log/kube-apiserver.log` - Servidor de API, responsável por servir a API
231+
* `/var/log/kube-scheduler.log` - Agendador, responsável por tomar decisões de alocação
232+
* `/var/log/kube-controller-manager.log` - um componente que executa a maioria dos
233+
{{<glossary_tooltip text="controladores" term_id="controller">}} embutidos do Kubernetes, com a notável exceção da alocação
234+
(o kube-scheduler lida com a alocação).
235+
236+
### Nós de carga de trabalho
237+
238+
* `/var/log/kubelet.log` - logs do kubelet, responsável por executar contêineres no nó
239+
* `/var/log/kube-proxy.log` - logs do `kube-proxy`, que é responsável por direcionar tráfego para endpoints de Service
240+
241+
## Modos de falha do cluster
242+
243+
Esta é uma lista incompleta de coisas que podem dar errado e como ajustar a configuração do seu cluster para mitigar os problemas.
244+
245+
### Causas contribuintes
246+
247+
- Desligamento de VM(s)
248+
- Partição de rede dentro do cluster, ou entre cluster e usuários
249+
- Falhas no software do Kubernetes
250+
- Perda de dados ou indisponibilidade de armazenamento persistente (por exemplo, volume GCE PD ou AWS EBS)
251+
- Erro do operador, por exemplo, software do Kubernetes ou software de aplicação mal configurados
252+
253+
### Cenários específicos
254+
255+
- Desligamento de VM do servidor de API ou falha do servidor de API
256+
- Resultados
257+
- incapaz de parar, atualizar ou iniciar novos pods, services, replication controller
258+
- pods e services existentes devem continuar funcionando normalmente, a menos que dependam da API do Kubernetes
259+
- Armazenamento de apoio do servidor de API perdido
260+
- Resultados
261+
- o componente kube-apiserver falha ao iniciar com sucesso e se tornar íntegro
262+
- kubelets não conseguirão alcançá-lo, mas continuarão a executar os mesmos pods e fornecer o mesmo proxy de serviço
263+
- recuperação manual ou recriação do estado do servidor de API necessária antes que o servidor de API seja reiniciado
264+
- Desligamento ou falha de VM dos serviços de apoio (controlador de nó, gerenciador de replication controller, agendador, etc)
265+
- atualmente eles estão localizados junto com o servidor de API, e sua indisponibilidade tem consequências similares ao servidor de API
266+
- no futuro, estes serão replicados também e podem não estar localizados juntos
267+
- eles não têm seu próprio estado persistente
268+
- Nó individual (VM ou máquina física) desliga
269+
- Resultados
270+
- pods nesse nó param de executar
271+
- Partição de rede
272+
- Resultados
273+
- partição A pensa que os nós na partição B estão inativos; partição B pensa que o servidor de API está inativo.
274+
(Assumindo que a VM principal fique na partição A.)
275+
- Falha de software do Kubelet
276+
- Resultados
277+
- kubelet com falha não consegue iniciar novos pods no nó
278+
- kubelet pode deletar os pods ou não
279+
- nó marcado como não íntegro
280+
- replication controllers iniciam novos pods em outros lugares
281+
- Erro do operador do cluster
282+
- Resultados
283+
- perda de pods, services, etc
284+
- perda do armazenamento de apoio do servidor de API
285+
- usuários incapazes de ler a API
286+
- etc.
287+
288+
### Mitigações
289+
290+
- Ação: Use a funcionalidade de reinicialização automática de VM do provedor IaaS para VMs IaaS
291+
- Mitiga: Desligamento de VM do servidor de API ou falha do servidor de API
292+
- Mitiga: Desligamento de VM de serviços de apoio ou falhas
293+
294+
- Ação: Use armazenamento confiável de provedores IaaS (por exemplo, GCE PD ou volume AWS EBS) para VMs com servidor de API + etcd
295+
- Mitiga: Armazenamento de apoio do servidor de API perdido
296+
297+
- Ação: Use configuração de [alta disponibilidade](/docs/setup/production-environment/tools/kubeadm/high-availability/)
298+
- Mitiga: Desligamento de nó da camada de gerenciamento ou falha de componentes da camada de gerenciamento (agendador, servidor de API, controller-manager)
299+
- Tolerará uma ou mais falhas simultâneas de nó ou componente
300+
- Mitiga: Armazenamento de apoio do servidor de API (ou seja, diretório de dados do etcd) perdido
301+
- Assume configuração de etcd HA (alta disponibilidade)
302+
303+
- Ação: Fazer snapshot de PDs/volumes EBS do servidor de API periodicamente
304+
- Mitiga: Armazenamento de apoio do servidor de API perdido
305+
- Mitiga: Alguns casos de erro do operador
306+
- Mitiga: Alguns casos de falha de software do Kubernetes
307+
308+
- Ação: usar replication controller e services na frente dos pods
309+
- Mitiga: Desligamento de nó
310+
- Mitiga: Falha de software do Kubelet
311+
312+
- Ação: aplicações (contêineres) projetadas para tolerar reinicializações inesperadas
313+
- Mitiga: Desligamento de nó
314+
- Mitiga: Falha de software do Kubelet
315+
316+
317+
## {{% heading "whatsnext" %}}
318+
319+
* Aprenda sobre as métricas disponíveis no
320+
[Pipeline de Métricas de Recursos](/docs/tasks/debug/debug-cluster/resource-metrics-pipeline/)
321+
* Descubra ferramentas adicionais para
322+
[monitoramento de uso de recursos](/docs/tasks/debug/debug-cluster/resource-usage-monitoring/)
323+
* Use o Node Problem Detector para
324+
[monitorar a integridade do nó](/docs/tasks/debug/debug-cluster/monitor-node-health/)
325+
* Use `kubectl debug node` para [depurar nós do Kubernetes](/docs/tasks/debug/debug-cluster/kubectl-node-debug)
326+
* Use `crictl` para [depurar nós do Kubernetes](/docs/tasks/debug/debug-cluster/crictl/)
327+
* Obtenha mais informações sobre [auditoria do Kubernetes](/docs/tasks/debug/debug-cluster/audit/)
328+
* Use `telepresence` para [desenvolver e depurar serviços localmente](/docs/tasks/debug/debug-cluster/local-debugging/)

0 commit comments

Comments
 (0)