Ao atualizar um cluster, o sistema verifica automaticamente a compatibilidade entre a ECI Platform Version e a versão do Kubernetes. Se a ECI Platform Version de pods baseados em ECI for incompatível com a versão de destino do Kubernetes, exclua e recrie manualmente esses pods antes de atualizar o cluster. Antes de iniciar a atualização, confirme se a ECI Platform Version é compatível com a versão de destino do Kubernetes.
O que é a versão da plataforma ECI
A versão da plataforma ECI identifica o ambiente de execução dos pods baseados em ECI. Novas versões trazem recursos, correções de bugs e patches.
Os pods em clusters ACK Serverless incluem, por padrão, a anotação k8s.aliyun.com/eci-platform-version, que indica a versão da plataforma ECI:
apiVersion: v1
kind: Pod
metadata:
annotations:
k8s.aliyun.com/eci-platform-version: 1.0.0
name: demo-76d8d9f9d8-l7pwm
namespace: default
...
Novos pods ECI usam a versão de plataforma 1.1.0. Pods existentes usam a versão 1.0.0 ou não possuem a anotação (indisponível).
Matriz de compatibilidade
|
Versão da plataforma ECI |
Versões compatíveis do Kubernetes |
|
1.1.0 |
1.12 e posteriores |
|
1.0.0 |
1.12, 1.14, 1.16, 1,18, 1,20, 1,22 e 1,24 |
|
Indisponível (anotação |
1.12, 1.14, 1.16, 1,18, 1,20, 1,22 e 1,24 |
No Kubernetes 1.26 ou posterior, pods com versão 1.0.0 ou sem anotação são incompatíveis e exigem atualização prévia.
Atualizar a versão da plataforma ECI
Pré-requisitos
Antes de começar, verifique se você possui:
kubectl instalado e configurado. Consulte Connect to the cluster with kubectl.
Identificar pods que precisam de atualização
Liste todos os pods baseados em ECI com versão 1.0.0 ou sem anotação. A saída exibe namespace, nome do pod, versão da plataforma ECI e ID da instância ECI, separados por vírgula.
kubectl get pods -A -o json | jq -r '.items[] | select(.metadata.annotations["k8s.aliyun.com/eci-platform-version"] == "1.0.0" or .metadata.annotations["k8s.aliyun.com/eci-platform-version"] == null or .metadata.annotations["k8s.aliyun.com/eci-platform-version"] == "") | select(.spec.nodeName | startswith("virtual-kubelet")) | "\(.metadata.namespace),\(.metadata.name),\(.metadata.annotations["k8s.aliyun.com/eci-platform-version"] // ""),\(.metadata.annotations["k8s.aliyun.com/eci-instance-id"])"'
Exemplo de saída:
default,portal-server-57dfc4fdc8-2gl64,,eci-2zecdr8z5jy******
Excluir e recriar pods afetados
Exclua cada pod listado na etapa anterior. O Kubernetes recria automaticamente o pod com a versão mais recente da plataforma ECI (1.1.0).
kubectl delete pod portal-server-57dfc4fdc8-2gl64 -n default
Saída esperada:
pod "portal-server-57dfc4fdc8-2gl64" deleted
Verificar a atualização
Confirme se todos os pods baseados em ECI estão na versão 1.1.0:
kubectl get pods -A -o json | jq -r '.items[] | select(.spec.nodeName | startswith("virtual-kubelet")) | "\(.metadata.namespace),\(.metadata.name),\(.metadata.annotations["k8s.aliyun.com/eci-platform-version"] // ""),\(.metadata.annotations["k8s.aliyun.com/eci-instance-id"] // "")"'
Todas as entradas devem exibir 1.1.0 no terceiro campo. Após a confirmação, prossiga com a atualização do cluster.