在 Kubernetes 集群上升级 Dapr
按照以下步骤在 Kubernetes 上升级 Dapr 并确保平滑升级。
您可以使用 Dapr CLI 或 Helm 在 Kubernetes 集群上升级 Dapr 控制平面。
注意
请参阅 Dapr 版本策略 以获取有关 Dapr 升级路径的指导。使用 Dapr CLI 升级
您可以使用 Dapr CLI 来升级 Dapr。
前置条件
升级现有集群至 1.18.0
dapr upgrade -k --runtime-version=1.18.0
您可以使用 Dapr CLI 提供所有可用的 Helm chart 配置。
通过 CLI 进行升级的故障排查
在可能曾经安装过早于 1.0.0-rc.2 版本的集群上运行升级时,存在一个已知问题。
虽然这种情况很少见,但一些升级路径的边缘情况可能会在集群上留下不兼容的 CustomResourceDefinition。如果您遇到这种情况,您可能会看到类似如下的错误消息:
❌ Failed to upgrade Dapr: Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
The CustomResourceDefinition "configurations.dapr.io" is invalid: spec.preserveUnknownFields: Invalid value: true: must be false in order to use defaults in the schema
解决方案
运行以下命令将
CustomResourceDefinition升级到兼容版本:kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/release-1.18/charts/dapr/crds/configuration.yaml继续执行
dapr upgrade --runtime-version 1.18.0 -k命令。
使用 Helm 升级
您可以使用 Helm v3 chart 升级 Dapr。
❗重要提示: 最新的 Dapr Helm chart 不再支持 Helm v2。从 Helm v2 迁移到 Helm v3。
前置条件
升级现有集群至 1.18.0
从 1.0.0 版本开始,使用 Helm 升级 Dapr 时,现有的证书值将自动被复用。
注意 Helm 不处理资源的升级,因此您需要手动执行该操作。资源具有向后兼容性,应仅向前安装。
将 Dapr 升级到版本 1.18.0:
kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/v1.18.0/charts/dapr/crds/components.yaml kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/v1.18.0/charts/dapr/crds/configuration.yaml kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/v1.18.0/charts/dapr/crds/subscription.yaml kubectl apply -f https://raw.githubusercontent.com/dapr/dapr/v1.18.0/charts/dapr/crds/resiliency.yaml kubectl apply -f https://raw.githubusercontent.com/dapr/dapr/v1.18.0/charts/dapr/crds/httpendpoints.yamlhelm repo updatehelm upgrade dapr dapr/dapr --version 1.18.0 --namespace dapr-system --wait如果您正在使用 values 文件,请记得在运行升级命令时添加
--values选项。确保所有 pod 都在运行:
kubectl get pods -n dapr-system -w NAME READY STATUS RESTARTS AGE dapr-dashboard-69f5c5c867-mqhg4 1/1 Running 0 42s dapr-operator-5cdd6b7f9c-9sl7g 1/1 Running 0 41s dapr-placement-server-0 1/1 Running 0 41s dapr-sentry-84565c747b-7bh8h 1/1 Running 0 35s dapr-sidecar-injector-68f868668f-6xnbt 1/1 Running 0 41s重启您的应用程序部署以更新 Dapr 运行时:
kubectl rollout restart deploy/<DEPLOYMENT-NAME>