O Container Service for Kubernetes (ACK) está em conformidade com o Certified Kubernetes Conformance Program. Este tópico lista as alterações que o ACK implementou para oferecer suporte ao Kubernetes 1.20, incluindo 6 ações obrigatórias antes da atualização, 5 descontinuações e vários novos recursos e melhorias específicas do ACK.
Versões dos componentes
|
Componente principal |
Versão |
Observações |
|
Kubernetes |
1.20.11 |
Consulte as ações obrigatórias abaixo antes de atualizar. |
|
docker Runtime |
19.03.5 |
Descontinuado nesta versão; os clusters existentes continuam funcionando. |
|
Containerd Runtime |
1.4.4 |
Nenhuma |
|
etcd |
3.4.3 |
Nenhuma |
|
CSI (Container Storage Interface) |
1,26 |
Nenhuma |
|
CoreDNS |
1.7.0 |
Nomes de métricas atualizados; plug-in |
|
NVIDIA Container Runtime |
3.4.1 |
Nenhuma |
Ações obrigatórias antes da atualização
Revise cada item abaixo antes de atualizar um cluster ACK para o Kubernetes 1.20. Alguns itens exigem alterações nas cargas de trabalho ou na configuração do cluster antes da atualização.
Verifique os SANs nos certificados de admission webhook
Os certificados de servidor autoassinados para admission webhooks devem incluir os subject alternative names (SANs) obrigatórios. Verifique se os certificados do seu admission webhook incluem os SANs necessários antes de atualizar. Para ver um exemplo de configuração de certificado compatível, consulte o exemplo de Helm chart.
Substitua o uso do selfLink
O que mudou: O campo selfLink foi descontinuado no Kubernetes 1.20 e retorna valores vazios.
Quem é afetado: Aplicações que leem o campo selfLink das respostas da API e clusters que usam o nfs-client-provisioner open source.
O que fazer:
Atualize qualquer aplicação que leia
selfLinkdas respostas da API.Caso utilize o
nfs-client-provisioner, atualize-o para uma versão que não dependa doselfLink.
Para obter detalhes, consulte Stop setting SelfLink in kube-apiserver.
Atualize o alicloud-nas-controller antes da atualização (apenas clusters FlexVolume)
Quem é afetado: Clusters com FlexVolume e alicloud-nas-controller implantados simultaneamente.
O que fazer: Atualize a imagem do alicloud-nas-controller para 1.14.8.17-7b898e5-aliyun ou posterior antes de atualizar para o Kubernetes 1.20.
O FlexVolume foi descontinuado. Para migrar para a Container Storage Interface (CSI), consulte Upgrade from FlexVolume to CSI.
Atualize os nomes das métricas do CoreDNS
O CoreDNS 1.7.0 renomeou as métricas existentes. Se o sistema de monitoramento coleta métricas do CoreDNS, atualize os nomes das métricas antes de prosseguir com a atualização. Para obter a lista completa de alterações, consulte Metric changes.
O plug-in upstream não é mais suportado. Se o upstream estiver especificado no Corefile, ele será removido automaticamente durante a atualização do CoreDNS.
Corrija os tempos limite de exec probe
O que mudou: O Kubernetes 1.20 corrigiu um bug antigo em que o kubelet ignorava a configuração timeoutSeconds para exec probes. Antes dessa correção, as exec probes eram executadas indefinidamente em vez de expirarem. Após a correção, o tempo limite padrão passou a ser de 1 segundo.
Quem é afetado: Qualquer pod com uma exec probe que leve mais de 1 segundo e não tenha o timeoutSeconds definido explicitamente. Essas probes agora falharão após 1 segundo.
O que fazer: Antes de atualizar, audite as definições dos pods em busca de exec probes sem um timeoutSeconds explícito. Defina o timeoutSeconds com um valor apropriado.
Atualize a versão da API de Ingress
As versões de API extensions/v1beta1 e networking.k8s.io/v1beta1 para Ingresses e IngressClasses serão descontinuadas em versões do Kubernetes posteriores à 1.22. Migre para networking.k8s.io/v1 antes de atualizar para a versão 1.22.
Os clusters ACK incluem o controlador NGINX Ingress por padrão, que atualmente suporta networking.k8s.io/v1beta1. Planeje a migração para networking.k8s.io/v1 antes de atualizar para o Kubernetes 1.22.
Descontinuações
|
Item descontinuado |
Substituto |
Removido em |
|
docker Runtime |
Containerd Runtime |
Uma versão futura do Kubernetes |
|
Rótulo |
|
Versões do Kubernetes posteriores à 1.20 |
|
|
|
Versões do Kubernetes posteriores à 1.22 |
|
Campo |
N/A (removido da API) |
Versões do Kubernetes posteriores à 1.20 |
|
FlexVolume |
CSI (Container Storage Interface) |
Uma versão futura |
Sobre a descontinuação do docker Runtime: No Kubernetes 1.20, o docker foi marcado como descontinuado, mas não removido. Os clusters existentes continuam funcionando sem alterações. As imagens de container criadas com docker não são afetadas; essa mudança aplica-se apenas ao runtime do container, e não ao formato da imagem. Como usuário do ACK em um service gerenciado, você não precisa tomar medidas imediatas. Será necessário migrar os nós de trabalho para um runtime de container suportado antes que o suporte ao docker termine em uma versão futura. Para obter detalhes, consulte Dockershim Deprecation FAQ.
Sobre o rótulo de nó master: Os clusters dedicados do ACK agora adicionam o rótulo node-role.kubernetes.io/control-plane aos nós master por padrão. O rótulo node-role.kubernetes.io/master foi descontinuado em versões do Kubernetes posteriores à 1.20.
Novidades
API Priority and Fairness
A API Priority and Fairness (APF) está disponível em preview público e ativada por padrão. A APF permite limitar e priorizar solicitações de API para o kube-apiserver. Consulte API Priority and Fairness para obter detalhes.
EndpointSlice ativado por padrão
O EndpointSlice agora é ativado por padrão pelo kube-proxy no Kubernetes 1.19 e versões posteriores. Esse recurso melhora a escalabilidade em clusters grandes. Consulte EndpointSlices para obter detalhes.
ConfigMaps e Secrets imutáveis (preview público)
Marque um ConfigMap ou Secret como imutável para evitar modificações acidentais. Recursos imutáveis também reduzem a carga no kube-apiserver. Consulte Immutable ConfigMaps para obter detalhes.
Melhorias em containers Windows
O EndpointSlice está ativado por padrão para containers Windows.
Plug-ins de dispositivo agora são suportados. Consulte Device plug-ins para obter detalhes.
Melhorias específicas do ACK
Melhorias no plano de controle
Observabilidade: Agora são coletadas métricas tanto para operações de solicitação quanto para operações watch, proporcionando maior visibilidade sobre o comportamento dos componentes do plano de controle.
Estabilidade: O kube-apiserver protege o etcd contra solicitações excessivas durante a inicialização do cluster, aumentando a resiliência em cenários de cold-start.
Desempenho: Novos índices aceleraram o processamento de solicitações de lista, reduzindo o uso de CPU do kube-apiserver sob cargas intensas de leitura.
Compatibilidade do kube-proxy com Alibaba Cloud Linux 2
No Kubernetes 1.20.11, o kube-proxy é compatível com o Alibaba Cloud Linux 2 com kernel versão 4.19.91-23 ou posterior. Quando o modo IPVS está ativado, o conn_reuse_mode não é definido como 0. Para mais contexto, consulte IPVS.
Agendamento de nó virtual (aplica-se após atualização para Kubernetes 1.22 ou posterior)
Após a atualização para o Kubernetes 1.22 ou posterior, o agendamento de nó virtual é ativado por padrão. Os pods agendados em nós virtuais estão sujeitos a:
Taints em nós virtuais
Afinidade de nó
Regras de afinidade/anti-afinidade de pod
Restrições de distribuição de topologia
Para manter o comportamento de agendamento anterior à atualização, desmarque a opção Enable virtual node scheduling nas configurações do kube-scheduler. Para etapas de configuração, consulte Custom parameters of kube-scheduler.