You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/pt-br/docs/concepts/workloads/controllers/replicaset.md
+37-37Lines changed: 37 additions & 37 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,13 +15,13 @@ O propósito de um ReplicaSet é gerenciar um conjunto de réplicas de Pods em e
15
15
16
16
Um ReplicaSet é definido por campos, incluindo um seletor que identifica quais Pods podem ser adquiridos, um número de réplicas indicando quantos Pods devem ser mantidos, e um pod template especificando as definições para novos Pods que devem ser criados para atender ao número de réplicas estipuladas. Um ReplicaSet cumpre seu propósito criando e deletando Pods conforme for preciso para atingir o número desejado. Quando um ReplicaSet precisa criar novos Pods, ele usa o seu Pod template.
17
17
18
-
Um ReplicaSet é conectado ao seus Pods pelo campo do Pod [metadata.ownerReferences](/docs/concepts/workloads/controllers/garbage-collection/#owners-and-dependents), que especifíca qual recurso é dono do objeto atual. Todos os Pods adquiridos por um ReplicaSet possuem as informações de indetificação do ReplicaSet pai no campo ownerReferences. É por esse elo que o ReplicaSet tem conhecimento do estado dos Pods que está mantendo e assim planeja de acordo.
18
+
Um ReplicaSet é conectado ao seus Pods pelo campo do Pod [metadata.ownerReferences](/docs/concepts/workloads/controllers/garbage-collection/#owners-and-dependents), que especifíca qual recurso é dono do objeto atual. Todos os Pods adquiridos por um ReplicaSet possuem as informações de identificação do ReplicaSet vinculado no campo ownerReferences. É por esse elo que o ReplicaSet tem conhecimento do estado dos Pods que está mantendo e assim faz seu planejamento.
19
19
20
20
Um ReplicaSet identifica novos Pods a serem adquiridos utilizando o seu seletor. Caso exista um Pod que não tenha OwnerReference ou se o OwnerReference não for um {{< glossary_tooltip term_id="controller" >}} e o seu seletor corresponde com o do ReplicaSet, o Pod é adquirido imediatamente por esse ReplicaSet.
21
21
22
22
## Quando usar um ReplicaSet
23
23
24
-
Um ReplicaSet garante que um número de pod réplicas estão executando em qualquer momento. Entretanto, um Deployment é um conceito de nível superior que gerencia ReplicaSets e fornece atualizações declarativas aos Pods assim como várias outras funções úteis. Portanto, nós recomendamos a utilização de Deployments em oposição ao uso direto de ReplicaSets, exceto se for preciso uma orquestração de atualização customizada ou que nenhuma atualização seja necessária.
24
+
Um ReplicaSet garante que um número de réplicas de um Pod estão executando em qualquer momento. Entretanto, um Deployment é um conceito de nível superior que gerencia ReplicaSets e fornece atualizações declarativas aos Pods assim como várias outras funções úteis. Portanto, nós recomendamos a utilização de Deployments ao invés do uso direto de ReplicaSets, exceto se for preciso uma orquestração de atualização customizada ou que nenhuma atualização seja necessária.
25
25
26
26
Isso na realidade significa que você pode nunca precisar manipular objetos ReplicaSet:
27
27
prefira usar um Deployment, e defina sua aplicação na seção spec.
@@ -30,32 +30,32 @@ prefira usar um Deployment, e defina sua aplicação na seção spec.
30
30
31
31
{{< codenew file="controllers/frontend.yaml" >}}
32
32
33
-
Salvando esse manifesto como `frontend.yaml` e submetendo no cluster Kubernetes irá criar a ReplicaSet definida e os Pods mantidos pela mesma.
33
+
Salvando esse manifesto como `frontend.yaml` e submetendo no cluster Kubernetes irá criar o ReplicaSet definida e os Pods mantidos pela mesma.
Você consegue também validar que a referência de dono desses pods está definida para a ReplicaSet frontend.
103
+
Você consegue também validar que a referência de dono desses pods está definida para o ReplicaSet frontend.
104
104
Para fazer isso, retorne o yaml de um dos Pods que estão executando:
105
105
106
106
```shell
107
107
kubectl get pods frontend-b2zdv -o yaml
108
108
```
109
109
110
-
O output será parecido com algo assim, com as informações do ReplicaSet frontend definidas no campo ownerReferences dentro da metadata do Pod:
110
+
O output será semelhante ao exibido abaixo, com as informações do ReplicaSet frontend definidas no campo ownerReferences dentro da metadata do Pod:
111
111
112
112
```shell
113
113
apiVersion: v1
@@ -131,29 +131,29 @@ metadata:
131
131
132
132
## Aquisições de Pod sem Template
133
133
134
-
Enquanto você pode criar Pods diretamente sem problemas, é fortemente recomendado que você se certifique que esses Pods não tenham labels que combinem com o seletor de um dos seus ReplicaSets. O motivo para isso é que um ReplicaSet não é limitado a possuir apenas Pods estipulados por seu template-- Ele pode adquirir outros Pods na maneira discriminada nas seções anteriores.
134
+
Enquanto você pode criar Pods diretamente sem problemas, é fortemente recomendado que você se certifique que esses Pods não tenham labels que combinem com o seletor de um dos seus ReplicaSets. O motivo para isso é que um ReplicaSet não é limitado a possuir apenas Pods estipulados por seu template-- ele pode adquirir outros Pods na maneira descrita nas seções anteriores.
135
135
136
-
Observe o último exemplo do ReplicaSet frontend, e seus Pods especificados no seguinte manifesto:
136
+
Observe o exemplo anterior do ReplicaSet frontend, e seus Pods especificados no seguinte manifesto:
137
137
138
138
{{< codenew file="pods/pod-rs.yaml" >}}
139
139
140
-
Como esses Pods não possuem um Controller (ou qualquer objeto) referenciados como seu dono e possuem labels que casam com o seletor do ReplicaSet frontend, eles serão imediatamente adquiridos pelo ReplicaSet.
140
+
Como esses Pods não possuem um Controller (ou qualquer objeto) referenciados como seu dono e possuem labels que combinam com o seletor do ReplicaSet frontend, eles serão imediatamente adquiridos pelo ReplicaSet.
141
141
142
-
Imagine que você crie os Pods depois que o ReplicaSet frontend foi implantado e criou as réplicas de Pod inicial definida para cumprir o número de réplicas requiridas:
142
+
Imagine que você crie os Pods depois que o ReplicaSet frontend foi implementado e criou as réplicas de Pod inicial definida para cumprir o número de réplicas requiridas:
Você vai perceber que o ReplicaSet adquiriu os Pods e criou apenas novos de acordo com o seu spec até que o número de novo Pods e os Pods iniciais igualem ao número desejado. Trazendo os Pods:
179
+
Você vai perceber que o ReplicaSet adquiriu os Pods e criou apenas novos de acordo com o seu spec até que o número de novo Pods e os Pods iniciais seja igual a ao número desejado. Listando os Pods:
180
180
181
181
```shell
182
182
kubectl get pods
183
183
```
184
184
185
-
Will reveal in its output:
185
+
Irá retornar a seguinte saída:
186
186
```shell
187
187
NAME READY STATUS RESTARTS AGE
188
188
frontend-hmmj2 1/1 Running 0 9s
@@ -202,7 +202,7 @@ Um ReplicaSet também precisa de uma [seção `.spec`](https://git.k8s.io/commun
202
202
203
203
### Template de Pod
204
204
205
-
O `.spec.template` é um [template de pod](/docs/concepts/workloads/pods/#pod-templates) que também necessita de labels configurados. No nosso exemplo `frontend.yaml` nós temos uma label: `tie: frontend`.
205
+
O `.spec.template` é um [template de pod](/docs/concepts/workloads/pods/#pod-templates) que também necessita de labels configurados. No nosso exemplo `frontend.yaml` nós temos uma label: `tier: frontend`.
206
206
Fique atento para não sobrepor com seletores de outros controllers, para que eles não tentem adquirir esse Pod.
207
207
208
208
Para o campo de [restart policy](/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy) do template, `.spec.template.spec.restartPolicy`, o único valor permitido é `Always`, que é o padrão.
@@ -216,7 +216,7 @@ matchLabels:
216
216
tier: frontend
217
217
```
218
218
219
-
No ReplicaSet, `.spec.template.metadata.labels` precisa casar com `spec.selector`, ou irá ser rejeitado pela API.
219
+
No ReplicaSet, `.spec.template.metadata.labels` precisa combinar com `spec.selector`, ou será rejeitado pela API.
220
220
221
221
{{< note >}}
222
222
Para 2 ReplicaSets definindo o mesmo `.spec.selector` mas diferentes campos de `.spec.template.metadata.labels` e `.spec.template.spec`, cada ReplicaSet ignorará os Pods criados pelo outro ReplicaSet.
Quando o original for deletado, você pode criar um novo ReplicaSet para substituí-lo. Contanto que o `.spec.selector` do velho e do novo sejam o mesmo, o novo irá adquirir os Pods antigos. Porém, o ReplicaSet não fará nenhum esforço nos Pods existentes para ajustá-los caso surja um novo e diferente template de pod.
259
-
Para atualizar esses Pods para um novo spec de um modo controlado, use um [Deployment](/docs/concepts/workloads/controllers/deployment/#creating-a-deployment), já que ReplicaSets não suportam um rolling update diretamente.
258
+
Quando o ReplicaSet original for deletado, você pode criar um novo ReplicaSet para substituí-lo. Contanto que o `.spec.selector` do antigo e do atual sejam o mesmo, o novo irá adquirir os Pods antigos. Porém, o ReplicaSet não atualizará as definições dos Pods existentes caso surja um novo e diferente template de pod.
259
+
Para atualizar esses Pods para um novo spec de um modo controlado, use um [Deployment](/docs/concepts/workloads/controllers/deployment/#creating-a-deployment), já que ReplicaSets não suportam um atualização gradual diretamente.
260
260
261
261
### Isolando Pods de um ReplicaSet
262
262
263
-
Você pode remover Pods de um Replicaset trocando suas labels. Essa técnica pode ser usada para remover Pods de um service para depuramento, recuperação de dados, etc. Pods que forem removidos por esse método serão substituídos imediatamente (assumindo que o número de replicas não tenha sido alterado).
263
+
Você pode remover Pods de um Replicaset trocando suas labels. Essa técnica pode ser usada para remover Pods de um serviço para depuração, recuperação de dados, etc. Pods que forem removidos por esse método serão substituídos imediatamente (assumindo que o número de replicas não tenha sido alterado).
264
264
265
-
### Escalando um ReplicaSet
265
+
### Escalonando um ReplicaSet
266
266
267
-
Um ReplicaSet pode ser facilmente escalado ou decaído simplismente atualizando o campo de `.spec.replicas`. O Replicaset controller garante que o número desejado de Pods com um seletor de label correspondente estejam disponíveis e operando.
267
+
Um ReplicaSet pode ser facilmente escalonado para cima ou para baixo simplesmente atualizando o campo de `.spec.replicas`. O Replicaset controller garante que o número desejado de Pods com um seletor de label correspondente estejam disponíveis e operando.
268
268
269
-
Ao escalar para baixo, o ReplicaSet controller escolhe quais pods irá deletar ordenando os pods disponíveis para priorizar quais pods seram decaídos seguindo o seguinte algoritmo geral:
270
-
1. Pods pending (e unschedulable) são decaídos primeiro
269
+
Ao escalonar para baixo, o Replicaset controller escolhe quais pods irá deletar ordenando os pods disponíveis para priorizar quais pods seram escalonados para baixo seguindo o seguinte algoritmo geral:
270
+
1. Pods pendentes (e não agendáveis) são decaídos primeiro
271
271
2. Se a anotação `controller.kubernetes.io/pod-deletion-cost` estiver definida, então o pod com o menor valor será priorizado primeiro.
272
-
3. Pods em nodes com mais réplicas são decaídos primeiro que pods em nodes com menos réplicas.
273
-
4. Se a data de criação dos pods for diferente, o pod que foi criado mais recentemente vem antes que o pod mais antigo (as datas de criação são guardados em uma escala logaritmica caso o [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) `LogarithmicScaleDown` esteja habilitado)
272
+
3. Pods em nós com mais réplicas são decaídos primeiro que pods em nodes com menos réplicas.
273
+
4. Se a data de criação dos pods for diferente, o pod que foi criado mais recentemente vem antes que o pod mais antigo (as datas de criação são guardados em uma escala logarítmica caso o [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) `LogarithmicScaleDown` esteja habilitado)
274
274
275
-
Se o Pod obdecer todos os items acima simultaneamente, a seleção é aleatória.
275
+
Se o Pod obedecer todos os items acima simultaneamente, a seleção é aleatória.
Utilizando a anotação [`controller.kubernetes.io/pod-deletion-cost`](/docs/reference/labels-annotations-taints/#pod-deletion-cost),
281
-
usuários podem definir uma preferência em relação à quais pods seram removidos primeiro caso o ReplicaSet precisa escalar para baixo.
281
+
usuários podem definir uma preferência em relação à quais pods serão removidos primeiro caso o ReplicaSet precise escalar para baixo.
282
282
283
283
A anotação deve ser definida no pod, com uma variação de [-2147483647, 2147483647]. Isso representa o custo de deletar um pod comparado com outros pods que pertencem à esse mesmo ReplicaSet. Pods com um custo de deleção menor são eleitos para deleção antes de pods com um custo maior.
284
284
@@ -295,7 +295,7 @@ Esse recurso está em beta e é habilitado por padrão. Você consegue desabilit
295
295
{{< /note >}}
296
296
297
297
#### Exemplo de caso de uso
298
-
Os diferentes pods de uma aplicação podem ter níves de utilização divergentes. Ao escalar para baixo, a aplicação pode prefirir remover os pods com a menor utilização. Para evitar atualizações frequentes nos pods, a aplicação deve atualizar `controller.kubernetes.io/pod-deletion-cost` uma vez antes de expedir o decaimento das réplicas (configurando a anotação para um valor proporcional ao nível de utilização do pod). Isso funciona se a própria aplicação controlar a escala para baixo; por exemplo, o pod condutor de um deployment de Spark.
298
+
Os diferentes pods de uma aplicação podem ter níves de utilização divergentes. Ao escalar para baixo, a aplicação pode preferir remover os pods com a menor utilização. Para evitar atualizações frequentes nos pods, a aplicação deve atualizar `controller.kubernetes.io/pod-deletion-cost` uma vez antes de expedir o decaimento das réplicas (configurando a anotação para um valor proporcional ao nível de utilização do pod). Isso funciona se a própria aplicação controlar a escala para baixo; por exemplo, o pod condutor de um deployment de Spark.
299
299
300
300
### ReplicaSet como um Horizontal Pod Autoscaler Target
301
301
@@ -306,7 +306,7 @@ um ReplicaSet pode ser automaticamente escalado por um HPA. Aqui está um exempl
306
306
{{< codenew file="controllers/hpa-rs.yaml" >}}
307
307
308
308
Salvando esse manifesto como `hpa-rs.yaml` e enviando para o cluster Kubernetes deve
309
-
criar um HPA definido que autoescala o ReplicaSet controlado dependendo no uso de CPU
309
+
criar um HPA definido que autoescala o ReplicaSet controlado dependendo do uso de CPU
310
310
dos Pods replicados.
311
311
312
312
```shell
@@ -331,7 +331,7 @@ Por isso, é recomendado o uso de Deployments quando você deseja ReplicaSets.
331
331
332
332
### Bare Pods
333
333
334
-
Diferente do caso onde um usuário cria Pods diretamente, um ReplicaSet substitui Pods que forem deletados ou terminados por qualquer motivo, como em caso de falha de node ou manutenção disruptivo de node, como uma atualização de kernel. Por esse motivo, nós recomendamos que você use um ReplicaSet mesmo que sua aplicação necessite apenas de um único Pod. Pense na semelhança com um supervisor de processos, apenas que ele supervise vários Pods em múltiplos nodes ao invés de apenas um Pod. Um ReplicaSet delega reinicializações de um container local para algum agente do node (Kubelet ou Docker, por exemplo).
334
+
Diferente do caso onde um usuário cria Pods diretamente, um ReplicaSet substitui Pods que forem deletados ou terminados por qualquer motivo, como em caso de falha de nó ou manutenção disruptivo de nó, como uma atualização de kernel. Por esse motivo, nós recomendamos que você use um ReplicaSet mesmo que sua aplicação necessite apenas de um único Pod. Pense na semelhança com um supervisor de processos, apenas que ele supervisione vários Pods em múltiplos nós ao invés de apenas um Pod. Um ReplicaSet delega reinicializações de um container local para algum agente do nó (Kubelet ou Docker, por exemplo).
335
335
336
336
### Job
337
337
@@ -345,7 +345,7 @@ os Pods precisam estar executando na máquina antes de outros Pods inicializarem
345
345
### ReplicationController
346
346
ReplicaSets são sucessores ao [_ReplicationControllers_](/docs/concepts/workloads/controllers/replicationcontroller/).
347
347
Os dois servem para o mesmo propósito, e tem comportamentos semelhantes, exceto que um ReplicationController não suporta os requerimentos de um seletor baseado em definição como descrito no [guia de usuário de label](/docs/concepts/overview/working-with-objects/labels/#label-selectors).
348
-
Portantom, ReplicaSets são preferíveis à ReplicationControllers
348
+
Portanto, ReplicaSets são preferíveis à ReplicationControllers
0 commit comments