Os clusters ACK com Kubernetes 1.33 usam o containerd 2.1 por padrão, trazendo melhorias de segurança, desempenho e estabilidade para imagens de container.
Recursos
Lista apenas os principais recursos. Consulte as containerd release notes .
Node Resource Interface (NRI) tem suporte e está ativada por padrão.
Container Device Interface (CDI) tem suporte e está ativada por padrão.
Sandbox API tem suporte.
Recursos e APIs descontinuados
Lista apenas as principais descontinuações. Consulte as containerd release notes .
registry.auths, registry.configs e registry.mirrors foram descontinuados. Consulte Customize the containerd parameters of a node pool.
Imagens Docker Schema 1 não têm mais suporte. Imagens com manifestos
application/vnd.docker.distribution.manifest.v1+jsonouapplication/vnd.docker.distribution.manifest.v1+prettyjwsnão podem ser extraídas via pull. Para identificá-las, consulte Identify Docker Schema 1 images.A syscall
io_uring_*foi removida do perfil seccomp padrão. Por padrão, os containers não podem mais fazer chamadasio_uring_*.A API CRI v1alpha2 foi removida. Descontinuada desde o Kubernetes 1.26, ela foi completamente eliminada no containerd 2.1.
O snapshotter AUFS foi removido.
O parâmetro
[plugins."io.containerd.internal.v1".tracing]foi removido.
Notas de atualização
A API CRI v1alpha2 não tem mais suporte no containerd 2.1. Se você usa essa API, migre para CRI v1.
Antes de atualizar, identifique as APIs descontinuadas. Identifique as APIs descontinuadas antes de prosseguir. Para executar uma verificação prévia pelo console, na página de detalhes do cluster, escolha Operations > Upgrade Cluster e execute Precheck.
A atualização verifica automaticamente se há APIs descontinuadas e é suspensa caso alguma seja detectada.
Identificar APIs descontinuadas
Usar kubectl
Verifique se diretórios relacionados ao containerd estão montados nos pods do cluster:
É necessário ter kubectl e jq instalados. Instale o jq com yum install jq .
kubectl get pods --all-namespaces -o json |
jq -r '.items[] |
select(.spec.volumes[]?.hostPath.path as $p |
["/", "/var", "/var/","/var/run", "/var/run/",
"/var/run/containerd", "/var/run/containerd/",
"/var/run/containerd/containerd.sock",
"/run", "/run/", "/run/containerd", "/run/containerd/",
"/run/containerd/containerd.sock"] | index($p)) |
.metadata.namespace + "/" + .metadata.name'
Usar ctr
Liste as APIs descontinuadas com ctr deprecations list:
ctr deprecations list
Identificar imagens Docker Schema 1
ctr --namespace k8s.io images list 'labels."io.containerd.image/converted-docker-schema1"'
Métodos de atualização
Primeiro, manually upgrade the ACK cluster o plano de controle para o Kubernetes 1.33 ou superior. Em seguida, update a node pool para atualizar o containerd.
FAQ
A atualização afeta meu negócio?
Update a node pool para atualizar o containerd. As atualizações de node pool realizam atualizações in-place por padrão, sem reiniciar os containers.
Após atualizar o containerd de V1.6 para V2.1, é possível reverter a atualização?
Não. O containerd V2.1 introduz a API shim-v3, incompatível com o shim-v2 da V1.6.
Ocorre perda de dados ao atualizar o containerd de V1.6 para V2.1?
Ao usar update a node pool para atualizar o containerd, a atualização in-place é executada por padrão, mantendo os diretórios de dados originais. Nenhuma perda de dados ocorre.