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:
- APIs obsoletas na versão 1.16 (em inglês)
- Notas de lançamento 1.16 do Kubernetes (em inglês)