ノードのOS入れ替え方法について
本ドキュメントでは稼働中ノードのOS入れ替え方法について説明します。
はじめに
すでに稼働しているノードのOS変更を行うことはできません。 そのため、ノードの入れ替えによる対応が必要となります。
OSはクラスタ作成・編集時のノードテンプレートから選択する事が可能です。 詳しくはノードのOS入れ替え手順にて説明します。
基本的な入れ替え手順の方針は以下のとおりです。
スナップショットを取得する。
新しいOSのノードテンプレートを指定したノードプールを新たに追加し、入れ替え対象の古いノードプールと同じ数のノードを追加する。
追加したノードプールのノードが完全に追加完了したことを確認する。
古いノードテンプレートを利用しているノードプールのノードを減らしていく。
上記手順を全ノードが新しいOSのノードテンプレートになるまで繰り返す。
ノードのOS入れ替え手順
etcdに関する注意事項
- etcdが動作するノードを減らす場合は、一度にノードプールを削除せずに必ず1台ずつ減らし、都度バックアップを取得してください。
- etcdノードが1台構成の場合、ノードの入れ替えによるOS変更はサポートされません。新しいクラスターを指定のテンプレートで作成し、ワークロードを乗せ換えてください。
- 本手順はetcdが3台、5台構成の場合を想定しています。
- 入れ替え後に、3台構成のまま運用することは可能ですが、1台構成に戻すことは出来ません。
Workerを含むノードの入れ替え時の注意事項
- Workerノード入れ替え時に古いテンプレートのノードを削除することで、起動していたワークロードは新しいノードプールから起動された新しいノードテンプレートのノードで自動的に開始されます。この場合、ノード削除とともにワークロードが停止してしまいますのでご注意ください。
- 【Workerノードのみ必要に応じて実施】の手順を実行することで、ワークロードを新しいノードへ移してから削除することも可能です。
① コンテナコンソールにアクセスします。
② etcd のスナップショットについて を参考に、スナップショットを取得する。
③ 左上のメニューからクラスター管理をクリックします。
④ OS入れ替え対象クラスタのメニューを選択(または右クリック)し、設定を編集をクリックします。
⑤ ノードプールを追加をクリックします。
⑥ 追加されたノードプールに以下の設定を入力し、保存します。
- ノード名プリフィックス:任意
- 個:入れ替え対象の古いノードテンプレートのノードプールと同じ台数
- テンプレート:最新バージョンのテンプレート
- コンポーネント:入れ替え対象の古いノードテンプレートのノードプールと同じコンポーネント

テンプレートについて
- ノードのOSはテンプレートのバージョンによって異なります。
- 末尾のバージョン番号が一番大きいものを選択してください。
- テンプレートの例:
IDCF Cloud/jp-east-3/ampere/ampere-network1-default/highcpu.L8 v3
- 末尾の「v数字」がテンプレートのバージョン番号を表しており、数字の大きい物が新しいテンプレートとなります。
- テンプレートの例:

etcdを含むノードの場合
- etcdを含むノードの場合、「etcdに関する注意事項」をご確認ください。
- etcdに「× 1,3 または 5」、メッセージに「etcd ノードを {etcdの台数} 台設定しても、奇数台になるまでクォーラムが増えないので、ハードウェアが無駄になります。」と表示されますが、一時的ですので問題ありません。
⑦ クラスタ管理から対象クラスタのステータスがUpdating → Active、ノードのステータスがRegistering → Activeとなり、ノードが完全に追加されたことを確認します。
※ノードプール毎に纏まって表示されない場合は、一度ブラウザーをリロードしてください。
⑧ 【Workerノードのみ必要に応じて実施】以下の手順に従って、入れ替え前の古いOSのノード上で稼働中のPodを新しいノードテンプレートで作成したノードに移動させます。
移動元ノードでDrainを実行します。その際、他のOS入れ替え前のノードをCordonしておくことで新しいOSのノードのみにPodが移動するようにします。
※この例ではノード「c-kswgt-np-vqskv-worker-1
」からノード「c-kswgt-np-dl7kv-worker-new-os-1
」へのPodの移動方法になります。
- クラスタ管理から対象クラスタのExploreをクリックします。
- クラスターのNodeをクリックします。
- Pod移動元のノード以外のPodを移動させたくないノードを選択し、Cordonを実行します。
- ノードのステータスがActive → Cordonedになったことを確認します (テイントが付与されます)。
- Pod移動元のノードを選択し、Drainからお客様の環境に合わせて実行します。
- ノードのステータスがActive → Draining → Drainedになり、Podが移動したことを確認します (テイントも同時に付与されます)。
- 上記の作業をOS入れ替え前のノード上にPodがなくなるまで繰り返します。
⑨ クラスタ管理から、対象クラスタの設定を編集をクリックします。
⑩ 古いOSのノードテンプレートのノードを削除していきます。
etcdを含むノードの場合
- etcdを含む場合は、etcdを含むノードの入れ替え時の注意事項を確認し、一度に削除せず必ず1台ずつ減らしてください。
- 複数のetcdノードを一度に減らすとetcdが壊れてしまう可能性があります。
- etcdノードを1台まで減らすことはできません。2台から1台への変更はetcdが壊れてしまいますので絶対に実行しないでください。
etcdを含まないノードの場合 (Worker / Control Plane)
- etcdを含まないノードの場合、古いノードテンプレートを利用しているノードプールを削除して保存することで、そのノードプールに属するノードも削除されます。
- etcdを含むノードのように1台ずつ削除する作業は必要ありません (手順ではetcdノードの場合を記載しています)。
- ノードプールの台数を減らし、保存します。
- クラスター構成変更が実行され、クラスターの状態がUpdating → Activeになったことを確認します。
- この操作をノードプールの台数が1台になるまで繰り返します。
- ノードプールを削除し、保存します。(最後の古いノードも一緒に削除されます。)
⑪ クラスタ管理から、対象のクラスタで変更前のテンプレートを利用しているノードプールの削除が完了し、新しいテンプレートのノードプールに入れ替わったことを確認します。
以上でノードのOS入れ替え手順は終了です。