コントロールプレーンをアップグレードした後、各エッジノードでアップグレードコマンドを手動で実行します。
前提条件
開始する前に:
-
ACK エッジクラスターのコントロールプレーンがアップグレードされていること。「ACK エッジクラスターのアップグレード」をご参照ください。
-
エッジノードの相互接続モードが特定されていること:
basic(パブリックネットワーク) またはprivate(Express Connect 回線)。
制限事項
| 制約 | 詳細 |
|---|---|
| サポートされるバージョン範囲 | バージョン 1.18 ~ 1.24: 本手順を使用します。バージョン 1.26 ~ 1.30: Container Service チームに連絡するには、チケットを送信してください。その他のバージョン: サポートされていません。 |
| マイナーバージョンの順次アップグレード | 各アップグレードでは、マイナーバージョンが 1 つだけ進みます。1.18 から 1.22 に移行するには、2 段階でアップグレードします:1.18 → 1.20、次に 1.20 → 1.22。 |
| コントロールプレーンとエッジノード間のバージョンスキュー | コントロールプレーンとエッジノードのバージョン差は、最大 2 マイナーバージョンです。たとえば、コントロールプレーンが 1.22 を実行している場合、エッジノードは少なくとも 1.20 を実行している必要があります。可能な限りバージョンを同期してください。 |
| バッチサイズ | 影響を抑えるため、1 バッチあたり最大 20 ノードまでアップグレードしてください。 |
| クラウドノード | 「クラウドノードプールのアップグレード」をご参照ください。 |
エッジノードのアップグレード
コンテナランタイムに応じて手順を実行してください。
ランタイムが Docker の場合 (1.24 へのアップグレード)
Kubernetes 1.24 では Docker ランタイムのサポートが廃止されました。1.24 にアップグレードする前に、Docker から containerd に移行してください。
オプション 1 (推奨): 新しいノードプールへのローリング移行
-
containerd のノードプールを作成してください。「エッジノードプールの管理」をご参照ください。
-
ワークロードを新しいノードプールに移行してください:
-
古いノードプールをスケジューリング不可に設定してください。「ノードのドレインとスケジューリングステータス」をご参照ください。
-
ワークロードのノードセレクターを更新し、新しいノードプールのラベルを使用するようにしてください。
-
-
すべてのワークロードが移行されたら、古いノードプールをオフラインにしてください。
オプション 2: インプレース更新
ノード上のすべてのコンテナが再起動されます。
-
コンテナランタイムを Docker から containerd に変更してください。
-
アップグレード前にノードのドレインを実行してください。「ノードのドレインとスケジューリングステータス」をご参照ください。
-
各ノードを 1 つずつアップグレードしてください:
パラメーター 説明 例 TARGET_CLUSTER_VERSIONコントロールプレーンのアップグレード後の Kubernetes バージョン 1.24.6-aliyunedge.1— 「サポートされる Kubernetes バージョンのリリースノート」をご参照ください。REGIONクラスターのリージョン ID cn-hangzhou— 「対応リージョン」をご参照ください。INTERCONNECT_MODEネットワークタイプ: パブリックネットワークは basic、Express Connect 回線はprivatebasicexport REGION="" INTERCONNECT_MODE="" TARGET_CLUSTER_VERSION=""; export ARCH=$(uname -m | awk '{print ($1 == "x86_64") ? "amd64" : (($1 == "aarch64") ? "arm64" : "amd64")}') INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/run/attach/${TARGET_CLUSTER_VERSION}/${ARCH}/edgeadm -O edgeadm; chmod u+x edgeadm;./edgeadm upgrade --interconnect-mode=${INTERCONNECT_MODE} --region=${REGION}コマンドを実行する前に、これらのパラメーターを設定してください:
-
アップグレードが成功したことを確認してください。出力には次が表示されます:
This node has been upgraded successfully
ランタイムが Docker ではない場合
各ノードを 1 つずつアップグレードしてください:
export REGION="" INTERCONNECT_MODE="" TARGET_CLUSTER_VERSION=""; export ARCH=$(uname -m | awk '{print ($1 == "x86_64") ? "amd64" : (($1 == "aarch64") ? "arm64" : "amd64")}') INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/run/attach/${TARGET_CLUSTER_VERSION}/${ARCH}/edgeadm -O edgeadm; chmod u+x edgeadm;./edgeadm upgrade --interconnect-mode=${INTERCONNECT_MODE} --region=${REGION}
コマンドを実行する前に、これらのパラメーターを設定してください:
| パラメーター | 説明 | 例 |
|---|---|---|
TARGET_CLUSTER_VERSION |
コントロールプレーンのアップグレード後の Kubernetes バージョン | 1.24.6-aliyunedge.1 — 「サポートされる Kubernetes バージョンのリリースノート」をご参照ください。 |
REGION |
クラスターのリージョン ID | cn-hangzhou — 「対応リージョン」をご参照ください。 |
INTERCONNECT_MODE |
ネットワークタイプ: パブリックネットワークは basic、Express Connect 回線は private |
basic |
アップグレードが成功したことを確認してください。出力には次が表示されます:
This node has been upgraded successfully
よくある質問
エッジノードのアップグレードに失敗した場合はどうすればよいですか?
出力に This node has been upgraded successfully が含まれない場合は、「ACK エッジクラスターをアップグレードする際にエッジノードのアップグレードに失敗した場合はどうすればよいですか?」をご参照ください。
次のステップ
-
不要になった場合は、エッジノードを削除してください。
-
クラウドとエッジの切断中もサービス継続性を維持するために、エッジノードの自律性を設定してください。