升级ECI Platform Version

升级集群时,系统会自动校验ECI Platform Version和Kubernetes的兼容情况,对于ECI Platform Version和目标Kubernetes版本不兼容的ECI Pod,需要手动删除重建ECI Pod后,才能升级集群的Kubernetes版本。升级集群前,请确保ECI Platform Version与Kubernetes版本兼容。本文介绍ECI Platform Version的兼容矩阵以及如何升级ECI Platform Version。

ECI Platform Version介绍

ECI Platform Version表示ECI(Elastic Container Instance)基础设施的特定运行时环境的版本号,可以区分不同的ECI运行时环境。随着ECI运行时环境的迭代,例如添加新功能、修复Bug或更新补丁,将会发布新的ECI Platform Version修订版。

您在ACK集群创建的ECI Pod默认会带有一个Key为k8s.aliyun.com/eci-platform-version的Annotation,Value即为ECI Platform Version的版本号。Annotation示例如下:

---
apiVersion: v1
kind: Pod
metadata:
  annotations:
    k8s.aliyun.com/eci-platform-version: 1.0.0
  name: demo-76d8d9f9d8-l7pwm
  namespace: default
...

ECI Platform Version兼容的Kubernetes版本

如下所示,不同版本的ECI Platform Version兼容的Kubernetes版本有所不同。

重要

新创建ECI Pod的ECI Platform Version版本为1.1.0,存量ECI Pod的ECI Platform Version版本为1.0.0或者为空。

ECI Platform Version版本

兼容的Kubernetes版本

1.1.0

1.12、1.14、1.16、1.18、1.20、1.22、1.24、1.26 、1.28、1.30、1.31(灰度中)

1.0.0

1.12、1.14、1.16、1.18、1.20、1.22、1.24

k8s.aliyun.com/eci-platform-version的Annotation不存在)

1.12、1.14、1.16、1.18、1.20、1.22、1.24

升级ECI Platform Version

  1. 连接集群。具体操作,请参见已获取集群KubeConfig并通过kubectl工具连接集群

  2. 获取版本号为空或为1.0.0的ECI Pod的信息。

    获取的信息包括ECI Pod的命名空间、名称、ECI Platform Version和ECI实例ID,并将这些信息以英文半角逗号(,)分隔的格式展示。

    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"])"'

    返回示例如下:

    default,portal-server-57dfc4fdc8-2gl64,,eci-2zecdr8z5jy******
  3. 删除重建目标ECI Pod。

    命令示例如下:

    kubectl delete pod portal-server-57dfc4fdc8-2gl64 -n default

    返回示例如下:

    pod "portal-server-57dfc4fdc8-2gl64" deleted

    ECI Pod删除重建后,新建的ECI Pod的ECI Platform Version版本会自动升级为更新后的版本。您可以执行以下命令,查看ECI Platform Version版本。

    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"] // "")"'