Kubernetes Workload Management Question #019e3a4f
Qual objeto da API é a maneira recomendada para executar uma aplicação escalável e sem estado no seu cluster?
ReplicaSet
Deployment
DaemonSet
Pod
Official Explanation / Community Explanations
O objeto da API Deployment é a maneira recomendada para executar uma aplicação escalável e sem estado em um cluster Kubernetes. Ele fornece atualizações declarativas para Pods e ReplicaSets, habilitando recursos como atualizações contínuas (rolling updates), rollbacks, escalonamento e autocura.
Como Funciona
Um Deployment gerencia um ReplicaSet, que por sua vez gerencia Pods. Quando você atualiza um Deployment, ele cria um novo ReplicaSet e gradualmente o escala para cima enquanto escala o antigo para baixo, garantindo zero downtime. Deployments são ideais para aplicações sem estado porque podem ser escalados horizontalmente ajustando o número de réplicas, e eles substituem automaticamente Pods com falha.
Por que a Escolha Correta é a Certa
- Deployment é o padrão para cargas de trabalho sem estado porque suporta atualizações contínuas, rollbacks e escalonamento fácil. Ele abstrai o gerenciamento subjacente do ReplicaSet, tornando-se a opção de mais alto nível e mais rica em recursos para aplicações sem estado.
Por que as Escolhas Incorretas são Erradas
- ReplicaSet: Embora um ReplicaSet garanta que um número especificado de réplicas de Pod esteja em execução, ele não possui as capacidades de atualização e rollback de um Deployment. O uso direto de ReplicaSet não é recomendado; Deployments devem ser usados.
- DaemonSet: Isso garante que todos (ou alguns) Nodes executem uma cópia de um Pod. É projetado para daemons de sistema, como coletores de log ou agentes de monitoramento, não para aplicações escaláveis sem estado.
- Pod: Um Pod é a menor unidade implantável no Kubernetes. Executar um único Pod diretamente não fornece escalabilidade, autocura ou atualizações. Pods devem ser gerenciados por controladores de nível superior, como Deployments.