クラスターをアップグレードすると、システムは ECI プラットフォームバージョンと Kubernetes バージョン間の互換性を自動的にチェックします。ECI Pod の ECI プラットフォームバージョンがターゲットの Kubernetes バージョンと互換性がない場合、クラスターの Kubernetes バージョンをアップグレードする前に、Pod を手動で削除して再作成する必要があります。クラスターをアップグレードする前に、ECI プラットフォームバージョンが Kubernetes バージョンと互換性があることを確認してください。
ECI プラットフォームバージョンの概要
ECI プラットフォームバージョンは、Elastic Container Instance (ECI) インフラストラクチャの特定のランタイム環境のバージョン番号であり、異なる ECI ランタイム環境を区別するのに役立ちます。ECI ランタイム環境の進化に伴い、機能の追加、バグの修正、またはパッチの適用を行うために、新しい ECI プラットフォームバージョンがリリースされます。
デフォルトでは、または ACK クラスターで作成する ECI Pod には、キーが k8s.aliyun.com/eci-platform-version のアノテーションが含まれます。このアノテーションの値は ECI プラットフォームのバージョン番号です。以下に例を示します。
apiVersion: v1
kind: Pod
metadata:
annotations:
k8s.aliyun.com/eci-platform-version: 1.0.0
name: demo-76d8d9f9d8-l7pwm
namespace: default
...ECI プラットフォームバージョンと互換性のある Kubernetes バージョン
各 ECI プラットフォームバージョンと互換性のある Kubernetes バージョンを次の表に示します。
新しく作成された ECI Pod の ECI プラットフォームバージョンは 1.1.0 です。既存の ECI Pod の場合、プラットフォームバージョンは 1.0.0 または空です。
ECI プラットフォームバージョン | 互換性のある Kubernetes バージョン |
1.1.0 | 1.12 以降 |
1.0.0 | 1.12, 1.14, 1.16, 1.18, 1.20, 1.22, および 1.24 |
空 ( | 1.12, 1.14, 1.16, 1.18, 1.20, 1.22, および 1.24 |
ECI プラットフォームバージョンのアップグレード
クラスターに接続します。詳細については、「クラスターの KubeConfig を取得し、kubectl を使用してクラスターに接続する」をご参照ください。
プラットフォームバージョンが 1.0.0 または空である ECI Pod に関する情報を取得します。
この情報には、Pod の名前空間、名前、ECI プラットフォームバージョン、および 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******ターゲットの ECI Pod を削除して再作成します。
コマンドの例:
kubectl delete pod portal-server-57dfc4fdc8-2gl64 -n default出力例:
pod "portal-server-57dfc4fdc8-2gl64" deletedECI Pod が削除されて再作成されると、その ECI プラットフォームバージョンは自動的に最新バージョンにアップグレードされます。次のコマンドを実行して、ECI プラットフォームバージョンを確認できます。
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"] // "")"'