Dapr Operator 控制平面服务概述

Dapr Operator 服务概述

Kubernetes 模式下运行 Dapr 时,一个运行 Dapr Operator 服务的 pod 负责管理 Dapr 组件的更新,并为 Dapr 提供 Kubernetes 服务端点。

运行 Operator 服务

Operator 服务是 dapr init -k 部署过程的一部分,或者可以通过 Dapr Helm charts 部署。有关在 Kubernetes 上运行 Dapr 的更多信息,请访问 Kubernetes 托管页面

其他配置选项

Operator 服务提供了一些额外的配置选项。

注入器监控功能

Operator 服务包含一个 注入器监控功能,它会定期检查 Kubernetes 集群中所有运行的 pod,确保那些标记了 dapr.io/enabled=true 的 pod 中正确注入了 Dapr sidecar。这个功能主要用于解决 注入器服务未能成功将 sidecar(daprd 容器)注入 pod 的问题。

注入器监控功能在以下情况下可能会很有帮助:

  • 从完全停止的 Kubernetes 集群中恢复。当集群完全停止后再启动时(包括在集群完全故障的情况下),pod 会以随机顺序重启。如果您的应用程序在 Dapr 控制平面(特别是注入器服务)准备好之前重启,Dapr sidecar 可能不会注入到您的应用程序的 pod 中,导致应用程序行为异常。

  • 解决 sidecar 注入器可能出现的随机故障,例如注入器服务中的瞬时故障。

如果监控功能发现某个 pod 缺少 sidecar,而它本应该有一个,它会删除该 pod。然后 Kubernetes 会重新创建该 pod,并再次调用 Dapr sidecar 注入器。

注入器监控功能默认是禁用的

您可以通过向 operator 命令传递 --watch-interval 标志来启用它,该标志可以取以下值之一:

  • --watch-interval=0:禁用注入器监控功能(如果省略该标志,则为默认值)。
  • --watch-interval=<interval>:启用注入器监控功能,并在给定的间隔检查所有 pod;间隔的值是一个包含单位的字符串。例如:--watch-interval=10s(每 10 秒)或 --watch-interval=2m(每 2 分钟)。
  • --watch-interval=once:注入器监控功能仅在 Operator 服务启动时运行一次。

如果您使用 Helm,可以使用 dapr_operator.watchInterval 选项配置注入器监控功能,该选项的值与命令行标志相同。

当 Operator 服务以 HA(高可用性)模式运行且有多个副本时,注入器监控功能是安全的。在这种情况下,Kubernetes 会自动选举一个“领导”实例,该实例是唯一运行注入器监控服务的实例。

然而,在 HA 模式下,如果您将注入器监控功能配置为“once”运行,则每次 Operator 服务的一个实例被选为领导时,监控功能都会启动。这意味着,如果 Operator 服务的领导崩溃并选出新的领导,这将再次触发注入器监控功能。

观看此视频以了解注入器监控功能的概述: