Orquestração de Contêineres
medium

Orquestração de Contêineres Question #019e3a4f

Question Statement
Orquestração de Contêineres
#kubernetes
#yaml
#api-version
#metadata
#kind
#spec
Medium

Qual das seguintes opções inclui apenas campos obrigatórios para criar um objeto Kubernetes usando um arquivo YAML?

A

apiVersion, template, kind, status

B

apiVersion, metadata, status, spec

C

apiVersion, template, kind, spec

D

apiVersion, metadata, kind, spec

Correct

Official Explanation / Community Explanations

No Kubernetes, toda definição de objeto em um arquivo YAML deve incluir quatro campos obrigatórios: apiVersion, kind, metadata e spec. O apiVersion especifica a versão da API usada para criar o objeto (por exemplo, v1, apps/v1). kind define o tipo de objeto (por exemplo, Pod, Deployment). metadata contém informações de identificação como name e namespace. spec descreve o estado desejado do objeto (por exemplo, containers, réplicas). Campos como template estão aninhados dentro de spec para certos objetos (por exemplo, Deployments), mas não são campos obrigatórios de nível superior. status é um campo somente leitura preenchido pelo Kubernetes após a criação e não faz parte do YAML fornecido pelo usuário. Portanto, o conjunto correto de campos obrigatórios é apiVersion, metadata, kind e spec.

Como Funciona

Quando você cria um objeto Kubernetes via kubectl apply -f file.yaml, o servidor da API valida o YAML contra o esquema para o apiVersion e kind fornecidos. O campo metadata deve incluir pelo menos um name (e opcionalmente namespace). O campo spec contém a configuração desejada; seu conteúdo varia por tipo de objeto. Sem esses quatro campos, o servidor da API rejeitará a solicitação.

Por que o Valor Correto está Certo

A combinação apiVersion, metadata, kind e spec inclui todos os campos obrigatórios de nível superior. Por exemplo, um YAML mínimo de Pod:

apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:

  • name: nginx
    image: nginx

Este YAML é válido e pode ser submetido.

Por que os Valores Incorretos estão Errados

  • apiVersion, template, kind, status: template não é um campo de nível superior; está aninhado dentro de spec para controladores como Deployments. status é somente leitura e não fornecido pelo usuário.
  • apiVersion, metadata, status, spec: status não é um campo de entrada obrigatório; é gerado automaticamente pelo Kubernetes.
  • apiVersion, template, kind, spec: template não é um campo obrigatório de nível superior; pertence dentro de spec para certos objetos. Além disso, metadata está faltando, que é necessário para todos os objetos.