在 Kubernetes 集群上升级 Dapr

按照以下步骤在 Kubernetes 上升级 Dapr 并确保平滑升级。

您可以使用 Dapr CLI 或 Helm 在 Kubernetes 集群上升级 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

解决方案

  1. 运行以下命令将 CustomResourceDefinition 升级到兼容版本:

    kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/release-1.18/charts/dapr/crds/configuration.yaml
    
  2. 继续执行 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 不处理资源的升级,因此您需要手动执行该操作。资源具有向后兼容性,应仅向前安装。

  1. 将 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.yaml
    
    helm repo update
    
    helm upgrade dapr dapr/dapr --version 1.18.0 --namespace dapr-system --wait
    

    如果您正在使用 values 文件,请记得在运行升级命令时添加 --values 选项。

  2. 确保所有 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
    
  3. 重启您的应用程序部署以更新 Dapr 运行时:

    kubectl rollout restart deploy/<DEPLOYMENT-NAME>
    

升级现有 Dapr 部署以启用高可用模式

通过一些额外步骤在现有 Dapr 部署中启用高可用模式。

相关链接