IBM Cloud Kunbetnetes Service のアップデート実行ログ

IBM Cloud Kuberentes Service(IKS) のアップデート( 1.15 から 1.16 )を行った記録です。 
一例としてご参考ください。

---
・環境
IBM Cloud Kubernetes Service (version 1.15)

---

##### 準備

次のマニュアルで対象バージョンへアップデートでの変更点を確認します。

一例ですが、マニフェスト・ファイルのAPIバージョンが廃止となっている場合、アップデート後に対象APIを使用している場合は稼働できなくなるので、事前に書き換えて準備しておくなどが必要になります。

マニュアルは英語版の方が更新が早い場合が多いので、英語版の確認もおすすめです。

・(参考) [Kubernetes バージョン情報および更新操作：更新の準備](https://cloud.ibm.com/docs/containers?topic=containers-cs_versions&locale=ja#prep-up)
>Kubernetes バージョン 1.16 では、いくつかの一般的な非推奨 API が廃止されています。
>Kubernetes リソースへの影響を抑えるために、このブログの [更新のヒント](https://www.ibm.com/cloud/blog/announcements/kubernetes-version-1-16-removes-deprecated-apis) に沿って以下の手順を実行してください。



上記のようにヒントも提供されていますのでリンク先をよく読みます。



また、ibmcloud cli で IKS に接続する際に、deprecated 情報が出力されることもありますので、こちらの内容やリンクを読むこともおすすめです。
[CLI の出力例]

```
$ ibmcloud ks cluster config --cluster xxxxxxxx

Kubernetes removed deprecated APIs, which impacts clusters that run Kubernetes version 1.16, OpenShift version 4.4, or later. For more information, see <http://ibm.biz/k8s-1-16-apis>

If you have IBM Cloud Kubernetes Service clusters that run version 1.14 or 1.15, update them now to continue receiving important security updates and support. Version 1.15 is deprecated and will be unsupported 12 September 2020. Versions 1.14 and earlier are already unsupported. For more information and update actions, see <https://ibm.biz/iks-versions>

The Kubernetes Ingress controller image is now supported for Ingress ALBs as a beta release. During the beta, you can convert existing ALBs or create ALBs to run the Kubernetes Ingress image. On 30 September 2020, all new ALBs run the Kubernetes Ingress image by default. More info: <http://ibm.biz/kube-ingress>

As of 24 August 2020, a default IBM Cloud Certificate Manager instance is created for each cluster to store and manage the cluster's default Ingress TLS certificate. Ensure that the API key for your cluster has the correct IAM permissions for Certificate Manager. More info: <http://ibm.biz/ingress-secret>

~ 省略 ~ 

```


---
##### 操作

次のマニュアルで操作内容を確認します。

[Kubernetes バージョン情報および更新操作]
(https://cloud.ibm.com/docs/containers?topic=containers-cs_versions&locale=ja)
> 最初にマスター・ノードを更新し、その後にワーカー・ノードを更新します。 ワーカー・ノードは、マスターよりも大きい Kubernetes メジャー・バージョンまたはマイナー・バージョンを実行できません。 

・(参考)マスター・ノードの更新を確認
　[Kubernetes マスターの更新](https://cloud.ibm.com/docs/containers?topic=containers-update#master)

・(参考)ワーカー・ノードの更新を確認　
　[クラシック・ワーカー・ノードの更新](https://cloud.ibm.com/docs/containers?topic=containers-update#worker_node)



今回はGUIからマスター・ノード -> ワーカー・ノードのアップデートのみ実施しています。

---

##### 実行ログ

1) 対象クラスターのマスター・ノードのアップデートを実施

画面右上の"Action"で Update versionを選択します。
![IKS1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/ccce3770-92dd-0d29-b699-a64128bd638e.png)


<font color="Red"> (* 1 ) </font> 画面表示では、version は 1.15となっています。
<font color="Red">(* 2 )</font> 中央上付近に、サポート期限が近い警告が出ています。

---
2) 画面が遷移し、アップデートするバージョンを選択します。

![IKS2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/0b028cb0-9bf0-1cfa-63cb-7372d499e648.png)

---
3) マスター・ノードのアップデート完了を確認

![IKS3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/c2221a5e-66b1-48f7-31d9-e2f29f62bb5a.png)

マスターのアップデートはこの環境では 15~20分くらいでした。
時折、時間がかかりすぎる場合があるので、その場合はチケット起票します...

(参考) クラスターの状態の説明が以下にあります。
[クラスターおよびマスター : クラスターのデバッグ]
(https://cloud.ibm.com/docs/containers?topic=containers-cs_troubleshoot#debug_clusters)

---
4) ワーカー・ノードのアップデート 

ワーカー・ノードの画面で、対象ノードにチェックをつけ(左側赤丸)、右上で Update を押します。
ワーカーの実行前バージョンは、1.15です。この環境ワーカーは 2 ノードです。

![IKS4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/4854af1d-c89d-4abc-c798-71af503168c8.png)

---
5) 画面遷移後、内容を確認し Update を実行
 
![IKS5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/b8769759-2f62-b72f-b0b0-b9d1a2cf41fe.png)

---
6) 状態遷移の確認

![IKS6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/08a22955-4aac-3e27-0b3c-7796c8ad45f3.png)

バージョン状態が変わっています。


4) で 2ノード同時にアップデートを選択実施しましたが、状態遷移の表示を見ていると、片方ずつアップデートが実施されていました。

---
7) アップデート完了確認

画面表示で 1.16 に変更されました。

![IKS7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/d4d056c4-6962-eedc-796d-68357d499512.png)

以下のようなリロードが完了したメールも届きます。

![IKS8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/9f27c79c-2f5f-31fe-9b4f-922470bd0c4e.png)


この環境でのワーカー2 ノードの実施は、およそ15-20分くらいでした。
* 環境差異があると思います。

---

8) 稼働確認

・稼働対象を停止していた場合は起動し、アプリケーション・ポッドが稼働しているかなどをポッドの状態や、アプリケーションの実行などで確認します。

・クラスター構成定義が設定している内容であるかどうかを確認します。

・マニュアルに記載のアップデート後の対応を実施します。
(参考) [マスターの更新後に行う操作](https://cloud.ibm.com/docs/containers?topic=containers-cs_versions&locale=ja#116_after)

・ibmcloud ks プラグインや kubectl コマンドがアップデート後のバージョンに対応していない場合は CLI のアップデートを実施します。




---
##### 終わりに

・台数が多い場合はGUIで実行する方が手間がかかるので、今後 CLI で実施を検討したいと思います。
　(サポート・サイクルが早いので効率よくアップデートしたいです...)

・GUIでマスター、ワーカーの更新を実施しましたが、ワーカー・ノードの片寄せなど、ポッドを止めないアップデート方法もいつか試してみたいと思います。



以上です。