使用 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 檔案,請記住每次只能升級一個次要版本。
在升級之前,檢查您的 Knative 版本。
對於執行 1.1 版 Knative Serving 和 Knative Eventing 元件的叢集,下列命令會將安裝升級至 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
,因為它們正在清除。
如有必要,請重複升級程序,直到達到您想要的次要版本號碼為止。