Questão de Sistemas Operacionais — Geral — INSTITUTO AOCP 2024
- Código
- qa632959
- Banca
- INSTITUTO AOCP
- Órgão
- MGI
- Ano
- 2024
- Cargo
- Esp ( )
- AKubectl.
- BHelm.
- CKubernetes Engine.
- DDeployments.
- EStatefulSets.
GabaritoD — Deployments.
Gabarito: letra D. O recurso do Kubernetes que automatiza a implantação, o dimensionamento e as operações de gestão de aplicações conteinerizadas é o Deployments — um objeto declarativo que define o estado desejado da aplicação e delega ao controlador a tarefa de alcançá-lo e mantê-lo. Essa é a definição central do Kubernetes, que é, ele próprio, um sistema de orquestração de contêineres.
O Kubernetes (K8s) é um sistema de orquestração de contêineres open-source que automatiza a implantação, o dimensionamento e a gestão de aplicações em contêineres. Ele foi originalmente projetado pelo Google e agora é mantido pela Cloud Native Computing Foundation. A ideia central é que o usuário define o estado desejado do cluster, e o serviço de orquestração trabalha para atingir e manter esse estado, dentro das limitações impostas. O Kubernetes pode ser dividido em dois planos: o plano de controle, que realiza a orquestração global do sistema, e o plano de dados, onde residem os contêineres.
Dentro do plano de dados, existem vários objetos que representam as aplicações e seus recursos. O Deployment é o objeto que descreve o estado desejado de uma aplicação — qual imagem de contêiner usar, quantas réplicas rodar, como atualizar — e o controlador do Deployment garante que o estado real do cluster corresponda a esse estado desejado. É ele que permite a automação da implantação (rollout), do dimensionamento (scale) e das operações de gestão (rollback, atualizações).
Para entender a diferença, é útil comparar os principais objetos e ferramentas do ecossistema Kubernetes:
Recurso | Função principal |
|---|---|
Deployment | Gerencia aplicações stateless (sem estado), automatizando rollout, scale e rollback. |
StatefulSet | Gerencia aplicações stateful (com estado), garantindo identidade e armazenamento persistente para cada pod. |
Kubectl | Ferramenta de linha de comando para interagir com o cluster Kubernetes. |
Helm | Gerenciador de pacotes para Kubernetes, que empacota e implanta aplicações. |
Kubernetes Engine | Serviço gerenciado de Kubernetes oferecido pelo Google Cloud (GKE). |
A pegadinha da questão está em confundir o objeto que automatiza a gestão (Deployment) com as ferramentas que auxiliam nessa gestão (Kubectl, Helm) ou com o serviço que oferece o Kubernetes (Kubernetes Engine). O Deployment é a peça central que define e mantém o estado desejado da aplicação, enquanto as outras opções são meios de interagir com o cluster ou de empacotar aplicações.
Guarde essa distinção: o Deployment é o objeto declarativo que descreve o estado desejado; o Kubectl é a ferramenta para enviar comandos; o Helm é o empacotador; e o Kubernetes Engine é o serviço gerenciado. É exatamente essa fronteira que separa as alternativas.
O Kubectl é a ferramenta de linha de comando (CLI) usada para interagir com o cluster Kubernetes, permitindo executar comandos como kubectl get pods, kubectl apply e kubectl scale. Ele é o meio de comunicação com o API server, mas não é o recurso que automatiza a implantação e o dimensionamento — ele apenas envia as instruções. O erro está em confundir a ferramenta de interação com o objeto que executa a automação.
O Helm é o gerenciador de pacotes do Kubernetes, que permite empacotar, configurar e implantar aplicações de forma repetível, usando "charts". Ele facilita a instalação e o gerenciamento de aplicações complexas, mas não é o recurso que automatiza a implantação e o dimensionamento em si — ele é uma ferramenta auxiliar que usa Deployments e outros objetos por baixo dos panos. A confusão aqui é entre o empacotador e o objeto de automação.
O Kubernetes Engine (ou Google Kubernetes Engine, GKE) é um serviço gerenciado de Kubernetes oferecido pelo Google Cloud Platform. Ele fornece a infraestrutura e o gerenciamento do plano de controle, mas não é o recurso que automatiza a implantação de aplicações — é o próprio Kubernetes que faz isso, e o GKE é apenas uma forma de obtê-lo como serviço. A pegadinha está em confundir o serviço de nuvem com o objeto de orquestração.
O Deployment é o objeto do Kubernetes que descreve o estado desejado de uma aplicação, incluindo a imagem do contêiner, o número de réplicas e a estratégia de atualização. O controlador do Deployment garante que o estado real do cluster corresponda ao estado desejado, automatizando a implantação (rollout), o dimensionamento (scale) e as operações de gestão (rollback). É exatamente o que o enunciado descreve: "automação da implantação, dimensionamento e operações de gestão de aplicações conteinerizadas".
O StatefulSet é um objeto do Kubernetes usado para gerenciar aplicações com estado (stateful), como bancos de dados, que precisam de identidade estável e armazenamento persistente para cada pod. Ele também automatiza a implantação e o dimensionamento, mas é específico para aplicações stateful, enquanto o Deployment é o recurso genérico para aplicações stateless. A questão não especifica o tipo de aplicação, então o Deployment é a resposta mais abrangente e correta.
A banca troca o objeto que automatiza a gestão (Deployment) pelas ferramentas que auxiliam nessa gestão (Kubectl, Helm) e pelo serviço que oferece o Kubernetes (Kubernetes Engine). O candidato que decora os nomes sem entender a função de cada um cai na armadilha. Lembre-se: o Deployment é o objeto declarativo que define o estado desejado; as outras opções são meios de interagir, empacotar ou obter o Kubernetes.
Para questões sobre Kubernetes, foque em distinguir os objetos (Deployment, StatefulSet, Service, Pod) das ferramentas (Kubectl, Helm) e dos serviços (GKE, EKS, AKS). O Deployment é o objeto mais cobrado, pois é o coração da automação de aplicações stateless. Memorize a função de cada um e a pegadinha perde o efeito.
Gabarito: letra D
Link permanente: /questoes/qa632959