APIs obsoletas do Kubernetes 1.16

A versão 1.16 do Kubernetes não exibe mais versões obsoletas de APIs específicas. As versões atuais da API estão disponíveis desde a v1.10 em todas as versões compatíveis do Google Kubernetes Engine (GKE).

O que mudou na versão 1.16

A maioria das APIs obsoletas são APIs Beta que passaram de Beta para Estável. As APIs Estáveis fornecem garantias de compatibilidade de longo prazo e são usadas no lugar das APIs Beta obsoletas.

Padrões alterados

Na tabela a seguir, mostramos as alterações nos valores padrão dos parâmetros que você não define se estiver migrando de apps/v1beta1.

Objeto Alteração Novo comportamento
DaemonSet spec.updateStrategy.type: OnDelete alterado para RollingUpdate Com o RollingUpdate, a alteração das definições do DaemonSet recria os pods automaticamente.
Deployment spec.progressDeadlineSeconds: 2147483647 reduzido para 600 Reduz o tempo que o status dos Deployments permanece como "em andamento" antes de uma falha ser declarada.
spec.revisionHistoryLimit: 2147483647 reduzido para 10 Limita o número de objetos ReplicaSet que são deixados antes de serem excluídos pelo controlador Deployment.
spec.strategy.rollingUpdate.maxSurge: aumentado para 25% Define o número máximo de pods que uma atualização gradual pode criar em relação ao número desejado de pods especificados em specs.replicas.
spec.strategy.rollingUpdate.maxUnavailable: aumentado para 25% A atualização gradual só acontece quando o número de pods indisponíveis está abaixo desse número. Se for uma porcentagem, ela será especificada em spec.replicas.
StatefulSet spec.updateStrategy.type: OnDelete alterado para RollingUpdate Com o RollingUpdate, alterar as definições de StatefulSet faz com os pods seja recriados automaticamente.

Como preparar o upgrade para a versão 1.16

Não é necessário excluir nem recriar qualquer um dos objetos da API. Todos os objetos permanentes atuais da API já podem ser lidos e atualizados usando as novas versões da API.

No entanto, recomendamos que você migre seus clientes e manifestos antes de fazer o upgrade para o Kubernetes 1.16. Todas as versões do GKE têm as novas versões de APIs disponíveis.

Solução de problemas

Como localizar clientes de API que estejam gravando em APIs obsoletas

Clusters com o pacote de operações do Google Cloud ativado podem usar a consulta a seguir para identificar clientes que gravam em APIs obsoletas:

resource.type="k8s_cluster"
resource.labels.cluster_name="$CLUSTER_NAME"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.request.apiVersion=("extensions/v1beta1" OR "apps/v1beta1" OR "apps/v1beta2")
protoPayload.request.kind!="Ingress"
NOT ("kube-system")

As versões obsoletas aparecem depois da execução de kubectl get ... -o yaml

O kubectl get ... prefere a versão extensões/v1beta1 quando ela está disponível no cluster que está sendo usado. Por exemplo, o comando a seguir recebe implantações da versão extensões/v1beta1 em um cluster 1.15:

kubectl get deployments -o yaml

Depois de fazer upgrade dos clusters para o Kubernetes 1.16, o mesmo comando usará a nova API automaticamente.

É possível especificar explicitamente um grupo ou uma versão de API. Por exemplo, para buscar implantações de apps/v1, execute:

kubectl get deployments.v1.apps -o yaml

Recursos

Há mais informações disponíveis na documentação do OSS Kubernetes: