Kubernetesのバージョンアップについて
本ドキュメントではKubernetesのバージョンアップ時の注意事項や作業手順について説明します。
はじめに
IDCFクラウド コンテナでは定期的に新しいKubernetesバージョンを追加します。
また、新バージョンの追加と合わせて古いバージョンについては順次サポートを終了いたします。
サポート終了時はお客様へご連絡いたしますので、本マニュアルを参考に定期的なバージョンアップをお願いします。
Kubernetesのバージョンアップに伴う注意事項
Kubernetesクラスタ上で運用されているアプリケーションの可用性を維持したままバージョンアップする場合、次の要件を満たすクラスタ構成が必要です。
合わせて、Liveness Probe、Readiness Probe、PodDisruptionBudgetを適切に設定してください。
※要件を満たしていない場合、お客様クラスタ上のアプリケーションが一時的に停止する可能性があります。- 3つ以上のetcdノードから構成されている事。
- 2つ以上のcontrolplaneノードから構成されている事。
- 2つ以上のworkerノードから構成されている事。
Kubernetesのバージョンアップは必ず1バージョンずつ行ってください。
✕ 1.20.x => 1.22.x
○ 1.20.x => 1.21.x => 1.22.x作業前にetcdのスナップショットを必ず取得して下さい。
作業前にクラスターテンプレートを最新に変更してください。
クラスタが健全な状態を必ず確認した上で実施してください。
バージョンアップを実行すると、controlPlane ノード、etcd ノードのバージョンアップに続き、worker ノードもバージョンアップされます。
お手元の環境でkubectlをご利用の場合は合わせてバージョンアップして下さい。
バージョンのダウングレードは行えません。
このドキュメントの対象範囲
Kubernetesのバージョン変更に伴う仕様差異などについては本ドキュメントでは取り扱いしません。
その他詳細については公式のRelase HistoryやReleae Notes(Changelog)をご確認ください。
クラスターの健全性確認手順
① コンテナコンソールにログインし、左上のメニューからクラスター管理 => Exploreの順にクリックします。
② クラスターダッシュボードが表示されるので、問題のあるコンポーネントやワークロードが存在しないか確認してください。
問題が見受けられる場合はバージョンアップ前に対処してください。
※下記の場合、 5つのワークロード
と kube-scheduler
に問題が有ることを示しています。
クラスターテンプレートの変更手順
① コンテナコンソールにログインし、左上のメニューからクラスター管理をクリックします。
② バージョンアップ対象のクラスタのメニューから設定を編集をクリックします。
③ クラスターオプションのプルダウン表示がクラスターテンプレートリビジョンを選択の場合は最新テンプレートへの変更が必要です。
プルダウン内に表示されるデフォルトバージョンを選択し保存をクリックします。
※最初からデフォルトバージョンが表示されている場合は変更不要です。
Kubernetesのバージョンアップ手順
① コンテナコンソールにログインし、左上のメニューからクラスター管理をクリックします。
② バージョンアップ対象のクラスタのメニューから設定を編集をクリックします。
③ Kubernetesバージョンのプルダウンより現在のバージョンより1つ上のバージョンを選択します。
④ バージョンアップオプションを設定し保存をクリックします。
※本設定は安全なバージョンアップを目的とした一例となります。
下記「バックアップオプションについて」を参考に設定変更してください。
バージョンアップオプションについて
ノードをドレインする
当該オプションを有効にすると、バージョンアップ対象となるノード上の全てのPodを安全に削除できます。
また、冗長化されたクラスタの場合はバージョンアップしようとしているノード以外の同一roleのノードにPodを再配置します。 Drainによる安全な削除はPodコンテナをgraceful shutdownやPDB(後述)を考慮した削除をすることができます。 ※PodDisruptionBudgetを利用したワークロードが存在する場合、設定値に依存したドレイン待ちが発生します。空のディレクトリデータを削除
当該オプションを有効にすると、emptyDir(ノードが排出されたときに削除されるローカルデータ)を使用するポッドがあっても削除を続行します。強制削除する
当該オプションを有効にすると、ReplicationController、ReplicaSet、Job、DaemonSet、StatefulSetで管理されていないポッドがあっても削除を続行します。Pod が終了するまでの猶予期間
Podが正常に終了するための時間。ドレインタイムアウト
タイムアウトを待つ時間の長さ。
⑤ クラスタのステータスがupdatingになるので完了までそのまま待機します。
バージョンアップ実行から完了までの動作について
バージョンアップに必要な時間はお客様のご利用状況に依存します。
バージョンアップは、「controlplane => etcd => worker」順で1ノードずつ行われます。
※それぞれ異なるノードで構成されている場合。
⑥ クラスタのステータスがactiveに変わったらバージョンアップ作業は完了です。