Kubernetes Workload Management
medium

Kubernetes Workload Management Question #019e3a4f

Question Statement
Kubernetes Workload Management
#deployments
#statefulsets
#kubernetes
#pods
#workloads
Medium

O que Deployments e StatefulSets têm em comum?

A

Eles gerenciam Pods baseados em uma especificação de contêiner idêntica.

Correct
B

Eles suportam a estratégia de atualização OnDelete.

C

Eles suportam uma implantação e escalonamento ordenados e graciosos.

D

Eles mantêm uma identidade fixa para cada um de seus Pods.

Official Explanation / Community Explanations

Resumo

Deployments e StatefulSets são ambos recursos de workload do Kubernetes que gerenciam Pods baseados em uma especificação de contêiner idêntica. Isso significa que todos os Pods criados por um Deployment ou StatefulSet usam a mesma imagem de contêiner, variáveis de ambiente e solicitações/limites de recursos definidos no template do Pod. A principal diferença está em como eles lidam com a identidade e ordenação dos Pods, mas o template do Pod subjacente é idêntico para todas as réplicas.

Como Funciona

No Kubernetes, um Deployment é projetado para aplicações stateless onde os Pods são intercambiáveis. Ele garante que um número especificado de réplicas de Pods esteja em execução o tempo todo, suporta atualizações rolling e pode escalar para cima ou para baixo. Um StatefulSet, por outro lado, é usado para aplicações stateful que exigem identificadores de rede estáveis e únicos, armazenamento persistente e implantação/escalonamento ordenados. Apesar dessas diferenças, ambos os recursos definem um template de Pod em sua especificação, e todos os Pods criados a partir desse template são idênticos em termos de configuração de contêiner.

Por que a Resposta Correta está Correta

A resposta correta afirma que Deployments e StatefulSets gerenciam Pods baseados em uma especificação de contêiner idêntica. Isso é verdade porque ambos os recursos usam um campo template em sua definição YAML que especifica os contêineres, volumes e outras configurações do Pod. Cada Pod criado pelo mesmo Deployment ou StatefulSet terá a mesma imagem de contêiner, comando, portas e variáveis de ambiente conforme definido nesse template. Esta é uma propriedade fundamental de ambos os tipos de workload.

Por que as Respostas Incorretas estão Erradas

  • Eles suportam a estratégia de atualização OnDelete. Isso está incorreto. A estratégia de atualização OnDelete é suportada apenas por DaemonSets, não por Deployments ou StatefulSets. Deployments suportam as estratégias RollingUpdate e Recreate, enquanto StatefulSets suportam RollingUpdate e OnDelete? Na verdade, StatefulSets suportam OnDelete como uma estratégia de atualização, mas Deployments não. Portanto, esta não é uma característica comum.

  • Eles suportam uma implantação e escalonamento ordenados e graciosos. Isso está incorreto. Apenas StatefulSets fornecem implantação e escalonamento ordenados e graciosos (por exemplo, Pods são criados um de cada vez em ordem, e o escalonamento para baixo remove Pods em ordem reversa). Deployments não garantem ordenação; eles podem criar ou excluir Pods em qualquer ordem.

  • Eles mantêm uma identidade fixa para cada um de seus Pods. Isso está incorreto. Apenas StatefulSets fornecem identidades fixas (nomes de host de rede estáveis e armazenamento persistente) para cada Pod. Deployments tratam os Pods como efêmeros e intercambiáveis, sem identidade garantida.

Conclusão Principal

O ponto em comum entre Deployments e StatefulSets é que ambos usam um template de Pod para criar Pods idênticos. As diferenças estão na identidade do Pod, ordenação e estratégias de atualização.