kubectlを使用したアップグレード¶
YAMLを使用してKnativeをインストールした場合、このトピックのkubectl apply
コマンドを使用して、Knativeコンポーネントとプラグインをアップグレードできます。Operatorを使用してインストールした場合は、Knative Operatorを使用したアップグレードを参照してください。
開始する前に¶
アップグレードの前に、アップグレードプロセスを成功させるために必要な手順がいくつかあります。
破壊的な変更の特定¶
現在のKnativeバージョンと希望するバージョンの間に破壊的な変更がないか確認する必要があります。Knativeバージョン間の破壊的な変更は、Knativeリリースノートに記載されています。アップグレードする前に、対象バージョンのリリースノートを確認して、Knativeアプリケーションに必要な変更がないか確認してください。
リリースノートは、GitHubのそれぞれのリポジトリの「リリース」ページで、各バージョンごとに公開されています。
現在のPodステータスの表示¶
アップグレードする前に、アップグレードを予定している名前空間のPodのステータスを表示します。これにより、名前空間のアップグレード前とアップグレード後の状態を比較できます。たとえば、Knative ServingとEventingをアップグレードする場合は、次のコマンドを入力して、各名前空間の現在の状態を確認します。
kubectl get pods -n knative-serving
kubectl get pods -n knative-eventing
プラグインのアップグレード¶
プラグインをインストールしている場合は、Knativeコンポーネントをアップグレードするのと同時にアップグレードしてください。
アップグレード前にインストール前ツールを実行する¶
一部のアップグレードでは、実際のアップグレードの前に完了する必要がある手順があります。該当する場合、これらの手順はリリースノートに記載されています。
既存のリソースを最新の保存バージョンにアップグレードする¶
Knativeカスタムリソースは、特定のバージョンでKubernetes内に保存されます。新しいサポートバージョンを導入し、古いサポートバージョンを削除するにつれて、リソースを指定された保存バージョンに移行する必要があります。これにより、アップグレード時に古いバージョンの削除が確実に成功します。
さまざまなサブプロジェクトには、オペレーターがこの移行を実行するのに役立つK8sジョブがあります。各リリースのリリースノートには、移行が必要かどうかが明示的に記載されています。
アップグレードの実行¶
アップグレードするには、インストールされているすべてのKnativeコンポーネントと機能の後続のマイナーバージョンのYAMLファイルを適用します。一度にマイナーバージョンを1つずつアップグレードすることを忘れないでください。
アップグレードする前に、Knativeのバージョンを確認してください。
Knative ServingおよびKnative Eventingコンポーネントのバージョン1.1を実行しているクラスターの場合、次のコマンドでインストールをバージョン1.2にアップグレードします。
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.2.0/serving-core.yaml \
-f https://github.com/knative/eventing/releases/download/knative-v1.2.0/eventing.yaml \
必要に応じてインストール後のジョブを実行する¶
リリースノートでKnativeカスタムリソースが新しいバージョンに移行したことが示されている場合、たとえば
DomainMapping/v1alpha1は非推奨です - v1beta1 APIを使用してください
インストール後のジョブを実行する必要があります(詳細はこちらを参照してください)。
# Serving
kubectl create -f https://github.com/knative/serving/releases/download/knative-v1.16.0/serving-post-install-jobs.yaml
# Eventing
kubectl create -f https://github.com/knative/eventing/releases/download/knative-v1.16.0/eventing-post-install.yaml
続行する前に、ジョブが正常に完了したことを確認してください。
# Serving
kubectl get job -n knative-serving
# Eventing
kubectl get job -n knative-eventing
注意
カスタムリソースYAMLファイルを外部(たとえば、GitOps経由でgitなど)に保存している場合は、そのファイル内のバージョンも移行する必要があります。
アップグレードの検証¶
コンポーネントとプラグインが正常にアップグレードされたことを確認するには、関連する名前空間のPodのステータスを表示します。すべてのPodはアップグレード中に再起動し、経過時間がリセットされます。Knative ServingとEventingをアップグレードした場合は、次のコマンドを入力して、各名前空間のPodに関する情報を取得します。
kubectl get pods -n knative-serving
kubectl get pods -n knative-eventing
これらのコマンドは、次のようなものを返します。
NAME READY STATUS RESTARTS AGE
activator-79f674fb7b-dgvss 2/2 Running 0 43s
autoscaler-96dc49858-b24bm 2/2 Running 1 43s
autoscaler-hpa-d887d4895-njtrb 1/1 Running 0 43s
controller-6bcdd87fd6-zz9fx 1/1 Running 0 41s
net-istio-controller-7fcdf7-z2xmr 1/1 Running 0 40s
webhook-747b799559-4sj6q 1/1 Running 0 41s
NAME READY STATUS RESTARTS AGE
eventing-controller-69ffcc6f7d-5l7th 1/1 Running 0 83s
eventing-webhook-6c56fcd86c-42dr8 1/1 Running 0 81s
imc-controller-6bcf5957b5-6ccp2 1/1 Running 0 80s
imc-dispatcher-f59b7c57-q9xcl 1/1 Running 0 80s
sources-controller-8596684d7b-jxkmd 1/1 Running 0 83s
すべてのPodの経過時間がリセットされ、すべてのPodが起動して実行されていれば、アップグレードは正常に完了しています。古いPodがクリーンアップされると、Terminating
のステータスが表示される場合があります。
必要に応じて、目的のマイナーバージョン番号に達するまでアップグレードプロセスを繰り返します。