Skip to content

Commit d545b8b

Browse files
committed
Add docs/concepts/architecture/controller.md in portuguese
1 parent 7375753 commit d545b8b

File tree

1 file changed

+162
-0
lines changed

1 file changed

+162
-0
lines changed
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
---
2+
title: Controladores
3+
content_template: templates/concept
4+
weight: 30
5+
---
6+
7+
{{% capture overview %}}
8+
9+
Em robótica e automação, um _control loop_ ou em português _ciclo de controlo_ é
10+
um ciclo não terminado que regula o estado de um sistema.
11+
12+
Um exemplo de um ciclo de controlo é um termostato de uma sala.
13+
14+
Quando você define a temperatura, isso indica ao termostato
15+
sobre o seu *estado desejado*. A temperatura ambiente real é o
16+
*estado atual*. O termostato atua de forma a trazer o estado atual
17+
mais perto do estado desejado, ligando ou desligando o equipamento.
18+
19+
{{< glossary_definition term_id="controller" length="short">}}
20+
21+
{{% /capture %}}
22+
23+
24+
{{% capture body %}}
25+
26+
## Padrão de controlo (Controller pattern)
27+
28+
Um controlador rastreia pelo menos um tipo de recurso Kubernetes.
29+
Estes [objetos](/docs/concepts/overview/working-with-objects/kubernetes-objects/#kubernetes-objects)
30+
têm um campo *spec* (especificação) que representa o *estado desejado*.
31+
Os controladores para esse recurso são responsáveis por trazer o *estado atual*
32+
mais perto do *estado desejado*.
33+
34+
O controlador pode levar ele proprio a cabo a ação; é mais comum, no Kubernetes,
35+
um controlador enviar uma mensagem para o
36+
{{< glossary_tooltip text="API server" term_id="kube-apiserver" >}} que tem
37+
efeitos colaterais uteis. Você vai ver exemplos disto abaixo.
38+
39+
{{< comment >}}
40+
Alguns controladores embutidos, como é o caso do controlador *namespace*, atuam em objetos
41+
que não têm uma especificação (*spec*). Por questões de simplicidade, esta página omite explicar
42+
esse detalhe.
43+
{{< /comment >}}
44+
45+
### Controlador via API server
46+
47+
O controlador {{< glossary_tooltip term_id="job" >}} é um exemplo de um
48+
controlador Kubernetes embutido. Controladores embutidos gerem estados através da
49+
interação com o *cluster API server*.
50+
51+
*Job* é um recurso do Kubernetes que corre um
52+
{{< glossary_tooltip term_id="pod" >}}, ou talvez vários *Pods*, com o objetivo de
53+
executar uma tarefa e depois parar.
54+
55+
(Uma vez [agendado](/docs/concepts/scheduling/), objetos *Pod* passam a fazer parte objects become part of the
56+
do *estado desejado* para um kubelet.
57+
58+
Quando o controlador *Job* observa uma nova tarefa ele garante que,
59+
algures no seu *cluster*, os kubelets num conjunto de nós (*Nodes*) estão correndo o numero
60+
correto de *Pods* para completar o trabalho.
61+
O controlador *Job* não corre *Pods* ou *containers* ele próprio.
62+
Em vez disso, o controlador *Job* informa o *API server* para criar ou remover *Pods*.
63+
Outros componentes do plano de controle
64+
({{< glossary_tooltip text="control plane" term_id="control-plane" >}})
65+
atuem na nova informação (existem novos *Pods* para serem agendados e executados),
66+
e eventualmente o trabalho é feito.
67+
68+
Após ter criado um novo *Job*, o *estado desejado* é que esse Job seja completado.
69+
O controlador *Job* faz com que o *estado atual* para esse *Job* esteja mais perto do seu
70+
*estado desejado*: creando *Pods* que fazem o trabalho desejado para esse *Job* para que
71+
o *Job* fique mais perto de ser completado.
72+
73+
Controladores também atualizam os objetos que os configuram.
74+
Por exemplo: assim que o trabalho de um *Job* está completo,
75+
o controlador *Job* atualiza esse objeto *Job* para o marcar como `Finished` (terminado).
76+
77+
(Isto é um pouco como alguns termostatos desligam uma luz para
78+
indicar que a temperatura da sala está agora na temperatura que foi introduzida).
79+
80+
### Controlo direto
81+
82+
Em contraste com *Job*, alguns controladores necessitam de efetuar
83+
mudanças a coisas fora do *cluster*.
84+
85+
Por exemplo, se usar um ciclo de controlo para garantir que existem
86+
*{{< glossary_tooltip text="Nodes" term_id="node" >}}* suficientes
87+
no seu *cluster*, então esse controlador necessita de algo exterior ao
88+
*cluster* atual para configurar novos *Nodes* quando necessário.
89+
90+
Controladores que interagem com estados externos encontram o seu estado desejado
91+
a partir do *API server*, e então comunicam diretamente com o sistema externo para
92+
trazer o *estado atual* mais próximo do desejado.
93+
94+
(Existe um controlador que escala horizontalmente nós no seu *cluster*.
95+
Veja [Escalamento automático do cluster](/docs/tasks/administer-cluster/cluster-management/#cluster-autoscaling))
96+
97+
## Estado desejado versus atual {#desired-vs-current}
98+
99+
Kubernetes leva uma visão *cloud-native* de sistemas, e é capaz de manipular
100+
mudanças constantes.
101+
102+
O seu *cluster* pode mudar em qualquer altura à medida que o trabalho acontece e
103+
os ciclos de controlo corrigem falhas automaticamente. Isto significa que,
104+
potencialmente, o seu *cluster* nunca atinge um estado estável.
105+
106+
Enquanto os controladores no seu *cluster* estiverem a correr e forem capazes de
107+
fazer alterações uteis, não importa se o estado é estável ou se é instável.
108+
109+
## Desenho
110+
111+
Como um principio do seu desenho, o Kubernetes usa muitos controladores onde cada
112+
um gere um aspeto particular do estado do *cluster*. Maioritariamente, um particular
113+
ciclo de controlo (controlador) usa uma espécie de recurso como o seu *estado desejado*,
114+
e tem uma espécie diferente de recurso que o mesmo gere para garantir que esse *estado desejado*
115+
é cumprido.
116+
117+
É util que haja controladores simples em vez de um conjunto monolítico de ciclos de controlo
118+
que estão interligados. Controladores podem falhar, então o Kubernetes foi desenhado para
119+
permitir isso.
120+
121+
Por exemplo: um controlador de *Jobs* rastreia objetos *Job* (para
122+
descobrir novos trabalhos) e objetos *Pod* (para correr o *Jobs*, e então
123+
ver quando o trabalho termina). Neste caso outra coisa cria os *Jobs*,
124+
enquanto o controlador *Job* cria *Pods*.
125+
126+
{{< note >}}
127+
Podem existir vários controladores que criam ou atualizam a mesma espécie (kind) de objeto.
128+
Atrás das cortinas, os controladores do Kubernetes garantem que eles apenas tomam
129+
atenção aos recursos ligados aos seus recursos controladores.
130+
131+
Por exemplo, você pode ter *Deployments* e *Jobs*; ambos criam *Pods*.
132+
O controlador de *Job* não apaga os *Pods* que o seu *Deployment* criou,
133+
porque existe informação ({{< glossary_tooltip term_id="label" text="labels" >}})
134+
que os controladores podem usar para diferenciar esses *Pods*.
135+
{{< /note >}}
136+
137+
## Formas de correr controladores {#running-controllers}
138+
139+
O Kubernetes vem com um conjunto de controladores embutidos que correm
140+
dentro do {{< glossary_tooltip term_id="kube-controller-manager" >}}.
141+
Estes controladores embutidos providenciam comportamentos centrais importantes.
142+
143+
O controlador *Deployment* e o controlador *Job* são exemplods de controladores
144+
que veem como parte do próprio Kubernetes (controladores "embutidos").
145+
O Kubernetes deixa voce correr o plano de controlo resiliente, para que se qualquer
146+
um dos controladores embutidos falhar, outra parte do plano de controlo assume
147+
o trabalho.
148+
149+
Pode encontrar controladores fora do plano de controlo, para extender o Kubernetes.
150+
Ou, se quiser, pode escrever um novo controlador você mesmo.
151+
Pode correr o seu próprio controlador como um conjunto de *Pods*,
152+
ou externo ao Kubernetes. O que encaixa melhor vai depender no que esse
153+
controlador faz em particular.
154+
155+
{{% /capture %}}
156+
157+
{{% capture whatsnext %}}
158+
* Leia mais sobre o [plano de controlo do Kubernetes](/docs/concepts/#kubernetes-control-plane)
159+
* Descubra alguns dos [objetos Kubernetes](/docs/concepts/#kubernetes-objects) básicos.
160+
* Aprenda mais sobre [API do Kubernetes](/docs/concepts/overview/kubernetes-api/)
161+
* Se pretender escrever o seu próprio controlador, veja [Padrões de Extensão](/docs/concepts/extend-kubernetes/extend-cluster/#extension-patterns)
162+
{{% /capture %}}

0 commit comments

Comments
 (0)