はじめに
下記のドキュメントにも記載されているように、Kubernetesプロジェクトは、年間3回、マイナー・バージョンを定期的にリリースしています。
そして、Kubernetesエンジンは、新しいクラスタに対して3つのマイナー・バージョンのKubernetesをサポートしています。
従って、定期的にアップグレードをしておかないと、サポートされないバージョンになってしまいます。
なお、バージョンがサポートされないバージョンになっても急に停止したりするわけではありませんが、新しいノードプールを作れないなどの制限も出てきますので、安定運用にはアップグレードが推奨されます。
アップグレード対象
以下の2つになります
- コントロール・プレーン・ノード
- ワーカー・ノード
コントロール・プレーン・ノードのアップグレード
OCIコンソールの「Kubernetesクラスタ(OKE)」の「クラスタ詳細」の画面に「Kubernetesバージョン」の項目がありますが、アップグレード可能な場合は以下のように「アップグレード」ボタンが表示されます。
「アップグレード」をクリックすると、アップグレードするバージョンを選択できます。
最新バージョンまで差がある場合も一気にアップグレードではなく、1バージョンずつアップグレードしていきます。
現在のバージョンが「v1.33.1」で、アップグレード対象に「v1.33」が出てきている理由は、1.33の中のより新しいパッチバージョンが存在しているためです。
下記のkubernetesの公式ページに「最新のパッチバージョンであることを確認してからアップグレードが推奨」とあるため、まず「v.1.33」を選択してアップグレードしてみます。
アップグレードはバージョンを選択して「アップグレード」をクリックするだけです。
しばらくすると無事に最新のパッチバージョンである「v.1.33.10」に更新されました。
先ほどと同様に「アップグレード」をクリックし、今度は「v.1.34」を選択してアップグレードします。
今回は選択肢に「v.1.34」だけ表示されました。
パッチバージョンは最新バージョンになりますが、もし特定のパッチバージョンにしたい場合は選択することも可能です。ただし、特に理由がなければ選択せずに最新バージョンにするのが推奨されます。
執筆時の最新はv1.36であるため、同様の手順で1.36までアップグレードをおこないます。
v.1.36で最新バージョンになったため、「アップグレード」は表示されなくなりました。
なお、下記に記載されていますが、Kubernetesエンジンは複数のOracle管理コントロール・プレーン・ノードにコントロール・プレーンを分散するため、コントロール・プレーン・ノードで実行されているKubernetesバージョンを停止時間なしでアップグレードできます。
ワーカー・ノードのアップグレード
OCIコンソールの「Kubernetesクラスタ(OKE)」の「ノードプール」の画面に「Kubernetesバージョン」、「kubernetesステータス」の項目があり、アップグレード可能な場合は以下のように「推奨されるアップグレード」と表示されます。
ノードプールの編集
まず、画面右上の「ノード・プールの編集」をクリックし、ノード・プールの編集画面を開きます。
そこでKubernetesバージョンを選択します。
特に理由がなければコントロール・プレーンと同じバージョンにするのが良いと思います。
続いて、「イメージの変更」をクリックし、「イメージ・ソース」に「OKEワーカー・ノードのイメージ」を選択し、Kubernetesバージョンが「v1.36.1」であるイメージを選択し、「更新」をクリックします。
これで、ノード・プールに設定されているバージョンがv1.36.1に変更されました。
ノードの更新
既存のノードのバージョンは古いままなので、ノードプールで設定したバージョンへ変更していきます。
ノードの右の「・・・」から、「サイクル・ノード」をクリックします。
「サイクル・オプション」を選択します。
3種類ありますが、クラスタ・タイプが「基本」の場合は、「ノードの交換」のみ利用可能です。
(それ以外の2つを選択した場合、「拡張クラスタの機能を選択している」といったエラーが発生します)
今回は「ノードの交換」をおこないます。
cordonとdrainは対象ノードを安全に交換するために、対象ノードを誰も利用していない状態にするための猶予時間です。
「サイクル・ノード」をクリックすると、処理が実行されます。
「ノードの交換」の場合は、まずv1.36.1のノードが作成されます。
そして、交換対象のノードが削除されます。
ノードの追加
ノードを追加した場合も、もちろんv1.36.1で作成されます。
2から3に変更してみました。

なお、ノードの実態はComputeインスタンスですので、Computeインスタンスの画面からも増えていることが確認できます。

また、ロードバランサーのバックエンドも自動的に追加されます。
ノードの更新とkubectl get nodesでの確認
アップグレードしている様子は、Cloud Shell等から「kubectl get nodes」コマンドでも確認できます。




























