使用 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 版本。
对于运行 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),您还需要在自定义资源 YAML 文件中转换版本。
验证升级¶
要确认您的组件和插件已成功升级,请查看相关命名空间中 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
,因为它们正在清理。
如有必要,请重复升级过程,直到达到所需的次要版本号。