Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:(Descontinuado) Notas de versão do ACK para Kubernetes 1.28

Última atualização: Jun 27, 2026

O ACK possui certificação de conformidade com o Kubernetes. Este tópico resume os patches, recursos, APIs descontinuadas e alterações em feature gates do ACK nas versões 1,27 e 1,28 do Kubernetes.

Changelogs upstream: CHANGELOG-1.27, CHANGELOG-1.28.

Importante

Antes de atualizar para o Kubernetes 1.28, revise estas alterações disruptivas:

  • Remoção do plugin de volume in-tree CephFS: A versão 1.28 removeu o plug-in de volume CephFS in-tree. Clusters que usam esse driver deixarão de funcionar após a atualização. Migre para o driver CSI do CephFS antes de atualizar e avalie riscos de compatibilidade, estabilidade ou desempenho.

  • Migração CSI do Ceph RBD não é mais possível: O Kubernetes 1.28 não suporta mais a migração de volumes Ceph RBD (kubernetes.io/rbd) para o driver CSI out-of-tree. Esse recurso será totalmente removido em uma versão futura. Conclua a migração antes da remoção.

  • Remoção do feature gate IPv6DualStack: O Kubernetes 1,27 removeu o feature gate IPv6DualStack. Caso tenha definido essa configuração manualmente no cluster, remova-a antes de prosseguir com a atualização.

  • Flags de endpoint do kubelet movidas para arquivo de configuração: Não é mais possível passar as flags --container-runtime-endpoint e --image-service-endpoint como argumentos de linha de comando do kubelet. Transfira essas configurações para o arquivo de configuração do kubelet antes de atualizar.

Versões dos componentes

Versões dos componentes principais para clusters ACK no Kubernetes 1.28.

Componente principal

Versão

Kubernetes

1.28.15-aliyun.1, 1.28.9-aliyun.1 e 1.28.3-aliyun.1

etcd

v3.5.9

CoreDNS

v1.9.3.10-7dfca203-aliyun

CRI

containerd 1.6.20

CSI

Atualize para a versão mais recente suportada. Changelogs: csi-plugin, csi-provisioner.

CNI

Flannel v0.15.1.22-20a397e6-aliyun

CNI (Terway)

Terway e TerwayControlplane v1.5.0 e posteriores

NVIDIA Container Runtime

v3.13.0

Ingress Controller

v1.8.0-aliyun.1

Patches de segurança

Versão

CVEs corrigidas

1.28.15-aliyun.1

CVE-2024-10220

1.28.9-aliyun.1

CVE-2023-45288, CVE-2024-3177, CVE-2024-24786

Novidades

Kubernetes 1.28

Desligamento não gracioso de nó (GA)

Quando um nó é desligado inesperadamente — por exemplo, devido a uma falha de energia — o Kubernetes reagenda automaticamente pods de StatefulSet com o mesmo nome em outro nó, evitando interrupções no serviço. Recurso agora disponível como GA.

Atribuição retroativa de StorageClass padrão (GA)

Anteriormente, um PVC sem storageClassName permanecia indefinidamente com status Pending se não houvesse uma StorageClass padrão. Agora, o Kubernetes atribui uma StorageClass padrão criada posteriormente a PVCs não vinculados sem storageClassName. Recurso promovido a GA.

Desempenho do agendador

A lógica de nova tentativa do agendador reduz tentativas inválidas de agendamento e melhora o desempenho. Se o cluster utiliza um plugin de agendador personalizado, atualize-o para o novo framework de agendamento. Consulte Alterações no framework de agendamento.

Tratamento de falhas em Jobs

Dois novos feature gates em fase Alpha aprimoram o gerenciamento de Jobs com falha:

  • JobPodReplacementPolicy: Um pod substituto é criado somente quando o original atinge a fase Failed (status.phase: Failed), e não ao receber um deletionTimestamp. Isso evita que dois pods ocupem simultaneamente o mesmo índice e consumam recursos do nó.

  • JobBackoffLimitPerIndex: Defina .spec.backoffLimitPerIndex em um Job indexado para limitar o número de novas tentativas por índice, em vez de contabilizar todas as falhas em um único .spec.backoffLimit compartilhado. Um índice com falhas persistentes não causa mais a falha de todo o Job.

Alerta para Jobs indexados grandes

Se um Job tiver completion acima de 100.000 e parallelism acima de 10.000 com muitas falhas de pod, o Kubernetes exibe um alerta. Nessa escala, o rastreamento do status de encerramento pode não ser confiável.

Melhorias na validação de CRD

As regras de validação de CRD agora incluem os campos reason e fieldPath. Quando uma expressão CEL falha, o servidor de API retorna o código do motivo e o caminho do campo com erro. Consulte Linguagem de Expressão de Validação de CRD.

Correspondência de Webhook com expressões CEL

As matchConditions de Webhooks agora suportam expressões CEL (até 64 por webhook). Esse recurso oferece controle granular sobre quais solicitações acionam um webhook sem a necessidade de um admission controller completo. Consulte Correspondência de solicitações: matchConditions.

ValidatingAdmissionPolicy (Beta)

A ValidatingAdmissionPolicy oferece uma alternativa declarativa e interna ao cluster para webhooks de admissão de validação. Escreva expressões CEL diretamente no objeto de política; o servidor de API as avalia em cada solicitação correspondente, eliminando a necessidade de infraestrutura de webhook. Consulte ValidatingAdmissionPolicy.

Substituição do campo de status de redimensionamento de PVC

O campo .status.resizeStatus nos PVCs foi substituído por .status.allocatedResourceStatus, um mapa que rastreia independentemente o estado de redimensionamento de cada recurso. Atualize qualquer ferramenta que leia .status.resizeStatus. Consulte PersistentVolumeClaimStatus.

Rótulos de índice de Pod para Jobs indexados e StatefulSets

Pods provenientes de Jobs indexados e StatefulSets agora incluem seu índice ordinal como rótulo, simplificando a seleção de pods por posição.

Flags de concorrência do Kube Controller Manager

Duas novas flags controlam a concorrência dos controllers:

  • --concurrent-cron-job-syncs: Define o número de workers de reconciliação simultâneos para CronJobs.

  • --concurrent-job-syncs: Define o número de workers de reconciliação simultâneos para Jobs.

Consulte --concurrent-cron-job-syncs e --concurrent-job-syncs.

Otimizações no servidor de API

  • Redução de memória em GetList: Solicitações de lista atendidas via cache consomem menos memória. Consulte Dados de teste GetList.

  • Correção na limpeza de endpoints: Corrigido um bug em que o endpoint de um Serviço Kubernetes não era removido durante o desligamento gracioso caso restasse apenas uma réplica do servidor de API.

  • Agregação lazy do OpenAPI v2: O controller do OpenAPI v2 agora agrega informações de CRD apenas sob demanda, reduzindo a sobrecarga de CPU e memória quando nenhum cliente consulta o endpoint. Isso melhora o tempo de instalação para um grande número de CRDs, mas pode tornar a primeira solicitação mais lenta. Migre seus clientes para o OpenAPI v3.

  • ConsistentListFromCache (Alpha): O feature gate ConsistentListFromCache permite que o servidor de API atenda solicitações LIST a partir do cache de watch com garantias de consistência, reduzindo a carga no etcd.

  • Métricas adicionais de monitoramento: Mais métricas estão disponíveis no endpoint de métricas.

Kubernetes 1.27

Correção do status de encerramento de Pods

  • Pods excluídos enquanto estavam em Pending agora recebem o status Failed.

  • Pods excluídos durante a execução (Running) recebem status Succeeded ou Failed com base no código de saída do contêiner.

Essa alteração corrige um bug em que pods com política de falha podiam ficar presos em Pending. Se um pod possuir RestartPolicy=Always, ele poderá exibir status Succeeded após a exclusão. Revise seus controllers se isso for relevante para o seu cenário. Consulte Definição do status de encerramento para pods que não requerem reinicialização.

ReadWriteOncePod para PersistentVolumes (Beta)

O modo ReadWriteOncePod restringe um volume a um único pod, sendo mais restritivo que ReadWriteOnce, que permite múltiplos pods no mesmo nó. Consulte Modo de Acesso de Pod Único para PersistentVolumes promovido a Beta.

Restrições de distribuição de topologia de Pod (Beta)

Várias opções de restrição de distribuição de topologia atingiram o estágio Beta e estão habilitadas por padrão: minDomains (domínios elegíveis mínimos), nodeTaintsPolicy (contagem de nós com taints), nodeAffinityPolicy (contagem de nós excluídos por afinidade) e whenUnsatisfiable (comportamento quando as restrições não podem ser atendidas). Consulte Políticas de distribuição de topologia de pod mais granulares.

Validação de campos no lado do servidor (GA)

O servidor de API agora valida campos de recursos no lado do servidor. O kubectl utiliza automaticamente o modo Strict e ignora a validação no lado do cliente, retornando um erro caso o servidor rejeite um campo. Consulte Validação de Campos no Lado do Servidor e OpenAPI V3 promovidos a GA.

OpenAPI v3 (GA)

O OpenAPI v3, introduzido no Kubernetes 1.23, agora é GA. Consulte Validação de campos no lado do servidor e OpenAPI v3 promovidos a GA.

Tipo de métrica ContainerResource no HPA (Beta)

O HPA agora suporta o tipo de métrica ContainerResource, permitindo dimensionamento baseado no uso de recursos de contêineres individuais em vez da média do pod. Isso resolve um problema comum em que um sidecar com baixo uso reduz a média abaixo do limiar, impedindo o scale-out mesmo quando o contêiner da aplicação está com recursos limitados. Consulte Métricas de recursos de contêiner.

Aprimoramentos em StatefulSets (Beta)

Dois recursos de StatefulSet atingiram o estágio Beta:

  • StatefulSetStartOrdinal: Permite iniciar os ordinais dos pods em um número diferente de zero usando o campo ordinals.start.

  • StatefulSetAutoDeletePVC: Controla se os StatefulSets devem excluir PVCs criados a partir de volumeClaimTemplate quando os pods são removidos ou quando há redução de escala do StatefulSet.

Dimensionamento vertical de pod in-place (Alpha)

O recurso InPlacePodVerticalScaling (Alpha, desabilitado por padrão) permite alterar as requests e limits de CPU e memória de um contêiner em execução sem reiniciar o pod. Consulte Redimensionar recursos de CPU e memória atribuídos a contêineres.

Pulls paralelos de imagens

Defina serializeImagePulls: false na configuração do kubelet para baixar imagens em paralelo. Utilize maxParallelImagePulls (adicionado na versão 1,27) para limitar os downloads simultâneos e evitar saturação da largura de banda de rede ou E/S de disco. Consulte Downloads seriais e paralelos de imagens.

Snapshots em grupo de volumes (Alpha)

Uma API de snapshot em grupo de volumes permite criar snapshots consistentes com falhas de múltiplos PersistentVolumes simultaneamente. Consulte Introdução à API para snapshots em grupo de volumes.

Recursos e APIs descontinuados

Kubernetes 1.28

Recurso descontinuado

Impacto

Ação necessária

Plugin de volume in-tree CephFS

Código removido na versão 1.28. Cargas de trabalho que usam o driver in-tree deixarão de funcionar.

Migre para o driver CSI do CephFS antes de atualizar.

Migração CSI do Ceph RBD

A migração de volumes Ceph RBD para o driver CSI out-of-tree não é mais possível na versão 1.28 e será totalmente removida em uma versão futura.

Conclua a migração antes da remoção.

Plugin de volume RBD (kubernetes.io/rbd)

Descontinuado; será removido em uma versão futura.

Mude para o driver CSI do CephFS.

Key Management Service (KMS) v1

Descontinuado.

Use KMSv2. Para continuar usando KMSv1 temporariamente, defina --feature-gates=KMSv1=true. Consulte Marcação do KMS v1beta1 como descontinuado.

Flags do KCM --volume-host-cidr-denylist e --volume-host-allow-local-loopback

Descontinuadas; serão removidas em uma versão futura.

Remova essas flags da configuração do Kube Controller Manager.

Flag do kubelet --azure-container-registry-config

Descontinuada; será removida em uma versão futura.

Use image-credential-provider-config e --image-credential-provider-bin-dir em substituição.

Pools de nós Windows

A criação de pools de nós Windows não é mais suportada.

Utilize pools de nós com Alibaba Cloud Linux 3 ou ContainerOS 3.1. Consulte Criar e gerenciar um pool de nós.

Kubernetes 1.27

Recurso descontinuado

Impacto

Ação necessária

Plugin de armazenamento in-tree AWS EBS

Substituído pelo plugin CSI out-of-tree.

Consulte cloud-provider-aws.

Campo spec.externalID do Nó

Descontinuado; clientes que atualizam este campo recebem um aviso.

Pare de atualizar spec.externalID.

Anotações seccomp Alpha (seccomp.security.alpha.kubernetes.io/pod, container.seccomp.security.alpha.kubernetes.io)

Removidas na v1.27. Cargas de trabalho dependentes dessas anotações perdem silenciosamente as configurações seccomp.

Utilize o campo securityContext.seccompProfile em substituição.

Flags do KCM --pod-eviction-timeout e --enable-taint-manager

Removidas na versão 1,27.

Remova essas flags da configuração do Kube Controller Manager.

Flag do kubelet --container-runtime

Removida na versão 1,27 (descontinuada desde a 1.24).

Nenhuma ação necessária; o valor padrão remote é preservado.

Flags do kubelet --container-runtime-endpoint e --image-service-endpoint (como flags CLI)

Não podem mais ser definidas como flags de linha de comando.

Transfira-as para o arquivo de configuração do kubelet.

Admission controller SecurityContextDeny

Descontinuado; será removido em uma versão futura.

Migre para Pod Security Admission ou um webhook de validação.

APIs descontinuadas

A API CSIStorageCapacity storage.k8s.io/v1beta1 foi descontinuada na versão 1.24 e removida na 1,27. Utilize storage.k8s.io/v1 (disponível desde a versão 1.24). Consulte KEP de Restrições de Capacidade de Armazenamento para Agendamento de Pods.

Alterações em feature gates

Feature gates definem a maturidade de um recurso do Kubernetes:

  • Alpha: Desabilitado por padrão. Experimental e sujeito a alterações.

  • Beta: Habilitado por padrão. Estável o suficiente para a maioria dos clusters.

  • GA (Disponibilidade Geral): Sempre habilitado. O feature gate é removido.

Promovidos para GA

Estes feature gates atingiram o estágio GA e estão permanentemente habilitados. Os gates foram removidos.

No Kubernetes 1.28:

Feature gate

Funcionalidade

NodeOutOfServiceVolumeDetach

Quando node.kubernetes.io/out-of-service é adicionado a um nó, pods sem tolerância são excluídos forçadamente e seus volumes desanexados imediatamente, permitindo recuperação rápida em outros nós.

IPTablesOwnershipCleanup

O Kubernetes deixa de criar as cadeias iptables KUBE-MARK-DROP e KUBE-MARK-MASQ.

ProbeTerminationGracePeriod

Habilita terminationGracePeriodSeconds no nível de probe para sobrescrever o período de graça no nível de pod para probes de liveness e startup.

DelegateFSGroupToCSIDriver, DevicePlugins, KubeletCredentialProviders, MixedProtocolLBService, ServiceInternalTrafficPolicy, ServiceIPStaticSubrange, EndpointSliceTerminatingCondition

Diversos recursos estáveis agora sempre habilitados. Feature gates removidos.

No Kubernetes 1.27:

Feature gate

Funcionalidade

ExpandCSIVolumes, ExpandInUsePersistentVolumes, ExpandPersistentVolumes

Expansão de volume para volumes CSI, PVs em uso e PVs em geral. Todos os três estão agora sempre habilitados.

CSIInlineVolume

Volumes CSI inline em especificações de pod. GA desde a versão 1.25, removido na 1,27.

EphemeralContainers

Contêineres efêmeros de depuração. GA desde a versão 1.25, feature gate removido.

LocalStorageCapacityIsolation

Limites rígidos no uso de emptyDir por pod; o kubelet evicta pods que excedem o limite. GA desde a versão 1.25, removido na 1,27.

NetworkPolicyEndPort

Campo endPort em regras de NetworkPolicy para especificar intervalos de portas. GA desde a versão 1.25, removido na 1,27.

StatefulSetMinReadySeconds

Campo minReadySeconds em StatefulSets. GA desde a versão 1.25, removido na 1,27.

DaemonSetUpdateSurge

Campo maxSurge em atualizações contínuas de DaemonSet. GA desde a versão 1.25, removido.

IdentifyPodOS

Campo os em pods para especificar o sistema operacional. GA desde a versão 1.25, removido.

CSIMigration

Migração de in-tree para out-of-tree CSI atingiu GA na v1.25. O feature gate está sempre habilitado e foi removido.

Promovidos para Beta (habilitados por padrão)

No Kubernetes 1.28:

Feature gate

Funcionalidade

AdmissionWebhookMatchCondition

Expressões CEL em matchConditions de webhooks. Até 64 condições por webhook.

No Kubernetes 1.27:

Feature gate

Funcionalidade

StatefulSetStartOrdinal

Inicia ordinais de pods de StatefulSet a partir de um número diferente de zero.

StatefulSetAutoDeletePVC

Controla a exclusão automática de PVCs quando pods de StatefulSet são removidos.

ReadWriteOncePod

Modo de acesso ReadWriteOncePod para PersistentVolumes.

Novos em Alpha (desabilitados por padrão)

No Kubernetes 1.28:

Feature gate

Funcionalidade

UnknownVersionInteroperabilityProxy

Roteia solicitações para o servidor de API correto quando múltiplas versões do servidor de API coexistem no cluster. Consulte Proxy de versão mista.

ConsistentListFromCache

Permite que o servidor de API utilize o cache de watch para atender solicitações LIST com garantias de consistência.

No Kubernetes 1.27:

Feature gate

Funcionalidade

NodeLogQuery

Consulta logs de nós com kubectl após definir enableSystemLogHandler: true e enableSystemLogQuery: true na configuração do kubelet.

ServiceNodePortStaticSubrange

Divide o intervalo NodePort em duas faixas. A alocação dinâmica usa a faixa superior; a inferior é reservada para atribuições estáticas, reduzindo conflitos de porta. Consulte Evitando colisões na atribuição de portas para Serviços NodePort.

InPlacePodVerticalScaling

Redimensiona CPU e memória do contêiner sem reiniciar o pod.

Removidos (configuração não mais necessária)

No Kubernetes 1.27:

O feature gate IPv6DualStack foi removido após atingir GA na v1.23. Caso tenha definido essa configuração manualmente no cluster, remova-a antes de atualizar.