Kubernetes - API

A API Kubernetes serve como base para o esquema de configuração declarativa do sistema. KubectlA ferramenta de linha de comando pode ser usada para criar, atualizar, excluir e obter o objeto API. A API Kubernetes atua como um comunicador entre os diferentes componentes do Kubernetes.

Adicionar API ao Kubernetes

Adicionar uma nova API ao Kubernetes adicionará novos recursos ao Kubernetes, o que aumentará a funcionalidade do Kubernetes. No entanto, ao lado disso, também aumentará o custo e a capacidade de manutenção do sistema. A fim de criar um equilíbrio entre o custo e a complexidade, existem alguns conjuntos definidos para ele.

A API que está sendo adicionada deve ser útil para mais de 50% dos usuários. Não há outra maneira de implementar a funcionalidade no Kubernetes. Circunstâncias excepcionais são discutidas na reunião da comunidade do Kubernetes e, em seguida, a API é adicionada.

Mudanças API

Para aumentar a capacidade do Kubernetes, mudanças são continuamente introduzidas no sistema. Isso é feito pela equipe do Kubernetes para adicionar a funcionalidade ao Kubernetes sem remover ou impactar a funcionalidade existente do sistema.

Para demonstrar o processo geral, aqui está um exemplo (hipotético) -

  • Um usuário faz um POST de um objeto Pod para /api/v7beta1/...

  • O JSON é desempacotado em um v7beta1.Pod estrutura

  • Os valores padrão são aplicados ao v7beta1.Pod

  • o v7beta1.Pod é convertido em um api.Pod estrutura

  • o api.Pod é validado e quaisquer erros são devolvidos ao usuário

  • o api.Pod é convertido para um v6.Pod (porque v6 é a versão estável mais recente)

  • o v6.Pod é empacotado em JSON e escrito para etcd

Agora que temos o objeto Pod armazenado, um usuário pode OBTER esse objeto em qualquer versão de API compatível. Por exemplo -

  • Um usuário obtém o pod de /api/v5/...

  • O JSON é lido de etcd e unmarshalled dentro de v6.Pod estrutura

  • Os valores padrão são aplicados ao v6.Pod

  • o v6.Pod é convertido em uma estrutura api.Pod

  • o api.Pod é convertido em um v5.Pod estrutura

  • o v5.Pod é empacotado em JSON e enviado ao usuário

A implicação desse processo é que as alterações da API devem ser feitas com cuidado e com compatibilidade retroativa.

Controle de versão de API

Para facilitar o suporte a várias estruturas, o Kubernetes oferece suporte a várias versões de API, cada uma em um caminho de API diferente, como /api/v1 ou /apsi/extensions/v1beta1

Os padrões de controle de versão no Kubernetes são definidos em vários padrões.

Nível Alfa

  • Esta versão contém alfa (por exemplo, v1alpha1)

  • Esta versão pode apresentar erros; a versão habilitada pode ter bugs

  • O suporte para bugs pode ser eliminado a qualquer momento.

  • Recomendado para ser usado apenas em testes de curto prazo, pois o suporte pode não estar presente o tempo todo.

Nível Beta

  • O nome da versão contém beta (por exemplo, v2beta3)

  • O código foi totalmente testado e a versão habilitada deve ser estável.

  • O suporte do recurso não será descartado; pode haver algumas pequenas mudanças.

  • Recomendado apenas para usos não críticos para os negócios devido ao potencial de alterações incompatíveis em releases subsequentes.

Nível Estável

  • O nome da versão é vX Onde X é um número inteiro.

  • Versões estáveis ​​de recursos aparecerão no software lançado para muitas versões subsequentes.