This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Estendendo a API do Kubernetes

Recursos personalizados são extensões da API do Kubernetes. O Kubernetes fornece duas formas de adicionar recursos personalizados ao seu cluster:

  • O mecanismo CustomResourceDefinition (CRD) permite que você defina uma nova API personalizada de forma declarativa com os campos apiGroup, kind e o formato que você especificar. A camada de gerenciamento do Kubernetes irá servir e controlar o armazenamento do seu recurso personalizado. CRDs permitem que você crie novos tipos de recurso para o seu cluster sem precisar escrever e executar um servidor da API personalizado.
  • A camada de agregação roda por trás do servidor da API primário, que age como um proxy. Este arranjo é chamado de Agregação de API (API aggregation, ou AA), e permite que você forneça implementações especializadas dos seus recursos personalizados através da escrita e instalação de um servidor de API próprio. A API principal delega as requisições para o seu servidor de API para as APIs personalizadas que você especificar, fazendo com que fiquem disponíveis para todos os seus clientes.

1 - Extendendo a API do Kubernetes com a camada de agregação

A camada de agregação permite ao Kubernetes ser estendido com APIs adicionais, para além do que é oferecido pelas APIs centrais do Kubernetes. As APIs adicionais podem ser soluções prontas tal como o catálogo de serviços, ou APIs que você mesmo desenvolva.

A camada de agregação é diferente dos Recursos Personalizados, que são uma forma de fazer o kube-apiserver reconhecer novas espécies de objetos.

Camada de agregação

A camada de agregação executa em processo com o kube-apiserver. Até que um recurso de extensão seja registado, a camada de agregação não fará nada. Para registar uma API, terá de adicionar um objeto APIService que irá "reclamar" o caminho URL na API do Kubernetes. Nesta altura, a camada de agregação procurará qualquer coisa enviada para esse caminho da API (e.g. /apis/myextension.mycompany.io/v1/…) para o APIService registado.

A maneira mais comum de implementar o APIService é executar uma extensão do servidor API em Pods que executam no seu cluster. Se estiver a usar o servidor de extensão da API para gerir recursos no seu cluster, o servidor de extensão da API (também escrito como "extension-apiserver") é tipicamente emparelhado com um ou mais controladores. A biblioteca apiserver-builder providencia um esqueleto para ambos os servidores de extensão da API e controladores associados.

Latência da resposta

Servidores de extensão de APIs devem ter baixa latência de rede de e para o kube-apiserver. Pedidos de descoberta são necessários que façam a ida e volta do kube-apiserver em 5 segundos ou menos.

Se o seu servidor de extensão da API não puder cumprir com o requisito de latência, considere fazer alterações que permitam atingi-lo. Pode também definir portal de funcionalidade EnableAggregatedDiscoveryTimeout=false no kube-apiserver para desativar a restrição de intervalo. Esta portal de funcionalidade deprecado será removido num lançamento futuro.

Próximos passos