IKS (IBM Kubernetes Service)  Ubuntu flavor Update (Deprecation Ubuntu18, update to 20)

#### はじめに

IBM Kubernetes Service の Ubuntu 18 が 2023年4月末で Deprecation (非推奨,サポート外)となるため、Ubuntu 20への置き換えを実施しました。

参照手順： [新しいUbuntuバージョンへのマイグレーション](https://cloud.ibm.com/docs/containers?topic=containers-ubuntu-migrate&locale=ja)


---
#### 環境

IBM Cloud Kubernetes Service:  1.24
  クラスター名: iks-testcluster
  使用しているワーカー・プール名:  iks-test1-org (Ubuntu 18)
  新しいワーカー・プール名: iks-test1 (Ubuntu20)
  ノード数: 1 (専用ハードウェア)


---


#### 使用可能 flavor の確認

ゾーンの tok02 の flavor を確認します。

```
$ ibmcloud ks flavors --zone tok02
OK
これらのフレーバーについて詳しくは、'https://ibm.biz/flavors' を参照してください

名前                      コア   メモリー   ネットワーク速度   OS             サーバー・タイプ   ストレージ   2 次ストレージ   フレーバー・クラス   プロバイダー

b3c.16x64                 16     64GB       1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
b3c.16x64.300gb           16     64GB       1000Mbps           UBUNTU_18_64   virtual            25GB         300GB            -                    classic
b3c.32x128                32     128GB      1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
b3c.4x16                  4      16GB       1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
b3c.56x242                56     242GB      1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
b3c.8x32                  8      32GB       1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
c3c.16x16                 16     16GB       1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
c3c.16x32                 16     32GB       1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
c3c.32x32                 32     32GB       1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
c3c.32x64                 32     64GB       1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
m3c.16x128                16     128GB      1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
m3c.30x240                30     240GB      1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
m3c.4x32                  4      32GB       1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
m3c.8x64                  8      64GB       1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
mb4c.20x192               20     192GB      10000Mbps          UBUNTU_18_64   physical           2TB          960GB            -                    classic
mb4c.20x384               20     384GB      10000Mbps          UBUNTU_18_64   physical           2TB          960GB            -                    classic
mb4c.20x64                20     64GB       10000Mbps          UBUNTU_18_64   physical           2TB          960GB            -                    classic
mb4c.20x64.2x1.9tb.ssd    20     64GB       10000Mbps          UBUNTU_18_64   physical           2TB          960GB            -                    classic
mb4c.32x384.3.8tb.ssd     32     384GB      10000Mbps          UBUNTU_18_64   physical           2TB          1.92TB           -                    classic
mb4c.32x384.6x3.8tb.ssd   32     384GB      10000Mbps          UBUNTU_18_64   physical           2TB          1.92TB           -                    classic
mb4c.32x768.3.8tb.ssd     32     768GB      10000Mbps          UBUNTU_18_64   physical           2TB          960GB            -                    classic
mb4c.48x1536              48     1536GB     10000Mbps          UBUNTU_18_64   physical           2TB          960GB            -                    classic
me4c.4x32                 4      32GB       10000Mbps          UBUNTU_18_64   physical           2TB          2TB              -                    classic
me4c.4x32.1.9tb.ssd       4      32GB       10000Mbps          UBUNTU_18_64   physical           2TB          960GB            -                    classic
mg4c.32x384.2xp100        32     384GB      10000Mbps          UBUNTU_18_64   physical           2TB          960GB            -                    classic
mg4c.48x384.2xv100        48     384GB      10000Mbps          UBUNTU_18_64   physical           2TB          960GB            -                    classic
u3c.2x4†                 2      4GB        1000Mbps           UBUNTU_18_64   virtual            25GB         100GB            -                    classic
† Kubernetes クラスターでのみサポートされます。 OpenShift クラスターではサポートされません。
$
```


この時は Ubuntu18 がデフォルトだったため、OSは Ubuntu18で表示されていました。
b3c.32x128  を使用します。



---
#### 手順

##### ① 事前情報確認

プールの確認

```
$ ibmcloud ks worker ls --cluster iks-testcluster --worker-pool iks-test1-org
OK
ID                                                 パブリック IP   プライベート IP   フレーバー             状態     状況    ゾーン   バージョン
kube-tok02-xxxx2xxxx9c90b5xxxxxxxxxxxx-w3   xxx.xx.xxx.xx   xxx.xx.xxx.xx    b3c.32x128.encrypted   normal   Ready   tok02    1.24.4_1537*
* 1.24.10_1553 バージョンに更新するには、「ibmcloud ks worker update」を実行します。 更新する前に、必要なバージョンの変更があれば検討および実行してください: 'https://ibm.biz/upworker'
$
```

ノード詳細確認

```
$ ibmcloud ks worker get --cluster iks-testcluster --worker kube-tok02-xxxx2xxxx9c90b5xxxxxxxxxxxx-w3

ワーカー kube-tok02-xxxx2xxxx9c90b5xxxxxxxxxxxx-w3 を取得中...

OK
ID:                  kube-tok02-xxxx2xxxx9c90b5xxxxxxxxxxxx-w3
状態:                normal
状況:                Ready
プライベート VLAN:   xxxxxxx
パブリック VLAN:     xxxxxxx
プライベート IP:     xxx.xx.xxx.xx
パブリック IP:       xxx.xx.xxx.xx
ハードウェア:        dedicated
プール名:            iks-test1-org
プール ID:           xxxx2xxxx9c90b5xxxxxxxxxxxx
ゾーン:              tok02
フレーバー:          b3c.32x128.encrypted
バージョン:          1.24.4_1537 (1.24.10_1553 latest)

1.24.10_1553 バージョンに更新するには、「ibmcloud ks worker update --cluster iks-testcluster --worker kube-tok02-xxxx2xxxx9c90b5xxxxxxxxxxxx-w3」を実行します。 更新する前に、必要なバージョンの変更があれば検討および実行してください: 'https://ibm.biz/upworker'
$
```

後で使用するためプライベートVLAN、パブリックVLAN を控えておきます。


---

##### ② Ubuntu 20 worker pool 作成

OS (--operating-system)は Ubuntu_20_64を指定します。
プール内のノード数は1(--size-per-zone 1) 、専用ノード(--hardware dedicated) で作成しています。


```
$ ibmcloud ks worker-pool create classic --name iks-test1 --cluster iks-testcluster --flavor b3c.32x128 --operating-system UBUNTU_20_64 --size-per-zone 1 --hardware dedicated
OK
$ 
```

確認

```
$ ibmcloud ks worker-pool ls --cluster iks-testcluster
OK
名前                 ID                                         フレーバー             OS             ワーカー
iks-test1   cxxxxxx2249cxxxxxx20a3f1-xxxxxxx  b3c.32x128.encrypted     UBUNTU_20_64   1
iks-test1-org       xxxxx342249c90bxxxxx-ae65xxxx  b3c.32x128.encrypted   -              1
$
```

---

##### ③ ワーカー・プールにゾーンを追加

参考：
https://cloud.ibm.com/docs/containers?topic=containers-add_workers#add_zone


```
$ ibmcloud ks zone add classic --zone tok02 --cluster iks-testcluster --worker-pool iks-test1 --private-vlan xxxxxx --public-vlan xxxxxx
OK
$ 
```

この時点で worker node が作成されます。
確認

```
$ ibmcloud ks worker ls --cluster iks-testcluster
OK
ID                                                 パブリック IP   プライベート IP   フレーバー             状態           状況    ゾーン   バージョン
kube-tok02-xxxx2xxxx9c90b5xxxxxxxxxxxx-w3   xxx.xx.xx.xxx   xx.xxx.xx.xxx    b3c.32x128.encrypted   normal         Ready   tok02    1.24.4_1537*
kube-tok02-xxxx22xxxxxxxxc90b5xxxxxxxxxxxx-w4   -               -                 b3c.32x128.encrypted     provisioning   -       tok02    1.24.10_1553

* 1.24.10_1553 バージョンに更新するには、「ibmcloud ks worker update」を実行します。 更新する前に、必要なバージョンの変更があれば検討および実行してください: 'https://ibm.biz/upworker'
$
```

---

##### ④ Ubuntu 18 のプールを削除


```
$ ibmcloud ks worker-pool rm --worker-pool iks-test1-org --cluster iks-testcluster
ワーカー・プール iks-test1-org を削除しますか? [y/N]> y
OK
$
```


ワーカー・プール確認


```
$ ibmcloud ks worker-pool ls --cluster iks-testcluster
OK
名前                 ID                                         フレーバー           OS             ワーカー
iks-test1   cxxxxxx2249cxxxxxx20a3f1-xxxxxxx  b3c.32x128.encrypted     UBUNTU_20_64   1
$
```

プール確認


```
$ ibmcloud ks worker ls --cluster iks-testcluster --worker-pool iks-test1
OK
ID                                                 パブリック IP   プライベート IP   フレーバー             状態     状況    ゾーン   バージョン
kube-tok02-xxxx22xxxxxxxxc90b5xxxxxxxxxxxx-w4   xxx.xx.xx.xxx    xxx.xx.xx.xxx     b3c.32x128.encrypted   normal   Ready   tok02    1.24.10_1553
$
```

ノード確認

```
$ ibmcloud ks worker get --cluster iks-testcluster --worker kube-tok02-xxxx22xxxxxxxxc90b5xxxxxxxxxxxx-w4
ワーカー kube-tok02-xxxx22xxxxxxxxc90b5xxxxxxxxxxxx-w4 を取得中...

OK
ID:                  kube-tok02-xxxx22xxxxxxxxc90b5xxxxxxxxxxxx-w4
状態:                normal
状況:                Ready
プライベート VLAN:   xxxxxxx
パブリック VLAN:     xxxxxxx
プライベート IP:     xxx.xx.xx.xxx
パブリック IP:       xxx.xx.xx.xxx
ハードウェア:        dedicated
プール名:            iks-test1
プール ID:           xxxx2xxxx9c90b5xxxxxxxxxxxx
ゾーン:              tok02
フレーバー:          b3c.32x128.encrypted
バージョン:          1.24.10_1553
$
```



無事に置き変わりました。


---

記載は省略しましたが途中アプリケーションPodの停止なども途中で実行しています。
終了後、Podを起動して稼働に問題ないことを確認しています。


以上です。