Kubernetes Administration Question #019e3a4f
Como você pode estender a API do Kubernetes?
Adicionando um CustomResourceDefinition ou implementando uma camada de agregação.
Adicionando uma nova versão de um recurso, por exemplo v4beta3.
Com o comando kubectl extend api, logado como administrador.
Adicionando o objeto de API desejado como um parâmetro do kubelet
Official Explanation / Community Explanations
Resumo
Estender a API do Kubernetes é feito adicionando um CustomResourceDefinition (CRD) ou implementando a camada de agregação. Esses são os métodos oficiais e suportados para introduzir recursos personalizados ou estender a superfície da API.
Como Funciona
- CustomResourceDefinition (CRD): Permite definir um novo tipo de recurso personalizado sem escrever um servidor de API completo. CRDs são construídos sobre a infraestrutura existente da API do Kubernetes e geram automaticamente endpoints RESTful para o recurso personalizado. É a maneira mais simples de estender a API.
- Camada de Agregação: Permite estender a API do Kubernetes escrevendo seu próprio servidor de API que é agregado ao servidor de API principal. Isso é mais complexo, mas fornece controle total sobre o comportamento da API, incluindo validação personalizada, armazenamento e lógica de negócios.
Por que a Resposta Correta está Correta
Adicionar um CustomResourceDefinition ou implementar uma camada de agregação são os únicos dois métodos oficialmente documentados pelo Kubernetes para estender a API. CRDs são declarativos e não requerem programação, enquanto a camada de agregação é para casos de uso avançados que exigem um servidor de API personalizado.
Por que as Respostas Incorretas estão Erradas
- Adicionar uma nova versão de um recurso (ex.: v4beta3): Não é um método para estender a API; é uma estratégia de versionamento para recursos existentes. Novas versões são adicionadas a recursos internos, não para estender a API com novas funcionalidades.
- Usar o comando
kubectl extend api: Este comando não existe.kubectlnão possui um subcomandoextend api. Estender a API é feito via manifestos YAML (CRDs) ou implantando um servidor de API separado (camada de agregação). - Adicionar o objeto de API desejado como um parâmetro do kubelet: O kubelet é um agente de nó que gerencia pods e contêineres. Ele não lida com extensões de API. Extensões de API são conceitos do lado do servidor gerenciados pelo servidor de API, não por parâmetros do kubelet.
Conclusão Principal
Para estender a API do Kubernetes, use CustomResourceDefinitions para simplicidade ou a camada de agregação para controle total. Evite comandos inexistentes ou configurações irrelevantes no nível do nó.