Alibaba Cloud Container Service for Kubernetes のアップグレードをしてみたよ❗️

# はじめに

**本記事は[個人ブログ](https://blog.matsuda-yoshihiro.com/2020/05/alibaba-cloud-container-service-for.html)からの複製記事です。**

---

Kubernetes を使うときに必ず訪れるクラスターのアップグレード・・・
Alibaba Cloud の Kubernetes サービスでも 1.16 へのアップグレードが来ていたので実施したときのメモを残します。

とはいえ、マネージドサービスなので比較的簡単に実行できるのはありがたいですね。

## Alibaba Cloud Container Service for Kubernetes のアップグレード

Alibaba Cloud Container Service for Kubernetes(ACK) のアップグレードは管理コンソールの画面から実行が可能です。
アップグレードイメージが利用可能になると `クラスターのアップグレード` の項目に 🔴が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/d153ba00-1781-f077-4c05-8a7714ff757b.png)

`クラスターのアップグレード`を選択すると対象のクラスターのアップグレード実行画面に遷移します。
ここで`アップグレード`を選択するとアップグレード作業が開始されます。
※次に確認画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/3a1b94f2-57dc-d28e-bdc2-2ad3320c7a1a.png)


```
注意事項：
1. Kubernetes 1.16 へのアップグレード中、Corefile 設定は新しい CoreDNS バージョンに一致する内容に自動的に移行されます。
2. クラスターにデプロイされたアプリケーションは、アップグレード中も中断されません。 ただし、API サーバーに強くに依存 するアプリケーションは一時的に中断する場合があります。
3. アップグレード中は、クラスター内のノード数を変更しないでください。 ノードを追加または削除する必要がある場合、アップグレードをキャンセルしてから行います。
4. アップグレード中にエラーが発生しない限り、名前空間 kube-upgrade のリソースを変更しないでください
5. カスタムオペレーティングシステムイメージを指定した場合、アップグレードに失敗する可能性があります (カスタムイメージは Container Service による厳格な検証が行われていないため)。
詳細については、「クラスターのアップグレード」をご参照ください。
```

アップグレード実行の確認画面が表示されます。
`確認`を選択すると開始されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/88f510a2-e673-57b6-3097-0538c81cae6d.png)

以下のような、プロセス自動で実行されてアップグレードが実行されます。
なお、「事前チェック」でエラーが出る場合は、そこでプロセスが停止します。
エラーを修正してから再度、アップグレードを開始する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/64345283-2249-c111-f011-7f69540f9560.png)

アップグレード自体は問題が発生しなければ自動的に実行されて数分で終わります。
この時は３ノードで5分以内に完了しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/43ebc8c8-5a41-2c31-0996-721aea1451ed.png)

これで Alibaba Cloud Container Service for Kubernetes(ACK) のアップグレードは終了です。
簡単ですね！


## 事前チェックエラー

このままだと、ちょっと物足りないので「事前チェックエラー」の時どうなるかも簡単にご紹介します。

事前チェックに失敗するとアップグレードのプロセスは一旦停止します。
`詳細情報`からエラーの内容を確認して解決する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/d1d57128-cbbd-db58-5e2c-f116f4e5bca6.png)

Container Service Operation Center という画面が表示されます。
ここで Alibaba Cloud Container Service for Kubernetes(ACK) のクラスターの状態などをチェックすることが可能です。
※実はこの画面はこの作業しているときに初めて見ましたw
 たぶん、最近追加された画面だと思われます😅

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/b937b819-d24a-2bb7-2e10-01af0a92ff0e.png)

`Error` となっている項目を選択するとエラーの内容が確認できます。
Flannel の Daemon Set image をアップグレードしろと書いてあるようですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/f8b99d65-5ea8-8ab2-3c92-99ffb4ffb78c.png)

```
Reason : Daemon Set image version too low
Affect : May cause cluster function abnormality
Advise : Check the Daemon Set image version, upgrade this system component on ContainerService console.
```

解決方法の通りに Flannel のアップグレードをしてみたいと思います。
Alibaba Cloud Container Service for Kubernetes(ACK) ではこういったコンポーネントのアップグレードなども管理コンソールから行うことが可能です。
対象のクラスターの`アドオン管理`から対象（kube-flannel-ds）のアップグレードを行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/32dcc5c2-bf9a-e1d0-1052-4315e4e8c55f.png)

アップグレードしますか？
と聞かれるので`確認`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/24ef6926-abaf-3e25-4e6b-ea385bda3d21.png)

アップグレードが開始されると「実行中」になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/c66c8662-c488-df56-0078-fe2aac1448de.png)

しばらくすると「成功」で「最新」の状態になります。これで完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/e551a877-5967-5c6a-e754-253c890a754b.png)

事前チェックでのエラーの対処が完了したので、再度アップグレード処理を行いたいと思います。
`プレチェック中にエラーが発生しました、再度確認してください。`という緑のボタンを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/01e15048-a262-669f-87f5-be199f60b61f.png)

すると、アップグレードプロセスが再実行されます。
事前チェックで引っ掛かっていた部分を直したので無事にアップグレードが始まりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/baf3ca3f-5ccd-dd1b-19f5-15355ba4b5b2.png)


# おわりに

Alibaba Cloud の Kubernetes サービスのアップグレード方法をご紹介させて頂きました。
アップグレード作業自体も簡単ですし、依存関係のチェックも判りやすいのではないでしょうか？
マネージド型、サーバーレス型の Kubernetes が使えるようになっていますし、色々な機能もありますのでご興味ある方は使ってみてください。