Kubernetes Fundamentals Question #019e3a4f
Quais campos devem existir em qualquer arquivo de objeto Kubernetes (por exemplo, YAML)?
apiVersion, kind, metadata
kind, namespace, data
apiVersion, metadata, namespace
kind, metadata, data
Official Explanation / Community Explanations
Toda definição de objeto Kubernetes em YAML ou JSON deve incluir três campos obrigatórios: apiVersion, kind e metadata. O campo apiVersion especifica a versão da API usada para o objeto (por exemplo, v1, apps/v1). O campo kind identifica o tipo de objeto (por exemplo, Pod, Deployment, Service). O campo metadata contém dados que identificam exclusivamente o objeto, como name, namespace, labels e annotations. Sem esses três campos, o servidor da API Kubernetes não pode processar a definição do objeto.
Como Funciona
Quando você envia um manifesto de objeto Kubernetes para o servidor da API, o servidor valida o manifesto contra o esquema esperado. O apiVersion informa ao servidor qual grupo e versão da API usar para desserialização. O kind informa ao servidor qual tipo de recurso criar ou modificar. O metadata fornece a identidade e informações descritivas opcionais. Todos os outros campos, como spec ou data, são específicos do tipo de objeto e não são universalmente obrigatórios.
Por que a Resposta Correta está Correta
A combinação apiVersion, kind e metadata é o conjunto mínimo exigido pela API Kubernetes. Por exemplo, um manifesto simples de Pod deve incluir:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
Sem qualquer um deles, o servidor da API retorna um erro.
Por que as Respostas Incorretas estão Erradas
- A combinação
kind,namespace,dataestá incorreta porquenamespaceé opcional (padrão édefaultse omitido) edatanão é um campo obrigatório para todos os objetos (é específico para objetos como ConfigMaps e Secrets). - A combinação
apiVersion,metadata,namespaceestá incorreta porquekindestá faltando; o servidor da API não pode determinar o tipo de objeto sem ele. - A combinação
kind,metadata,dataestá incorreta porqueapiVersionestá faltando; o servidor da API não pode determinar qual versão da API usar para desserialização, edatanão é universalmente obrigatório.