如何调用Dapr Placement API获取Placement表及健康端口问题
解决Dapr Placement API获取Placement表的配置问题
问题根源
默认dapr init部署的Placement服务未启用元数据功能,导致/placement/state端点返回404,必须手动开启DAPR_PLACEMENT_METADATA_ENABLED环境变量才能激活该API。
两种可行解决方案
方法1:手动重启Placement容器(快速临时方案)
- 先停止并删除现有Placement容器:
docker stop dapr_placement docker rm dapr_placement
- 手动启动带环境变量的容器,保持和默认部署一致的端口映射:
docker run -d --name dapr_placement --network dapr_network -p 50005:50005 -p 58080:8080 -p 59090:9090 -e DAPR_PLACEMENT_METADATA_ENABLED=true daprio/placement:1.14.4
端口说明和默认部署匹配:
- 50005:Placement的gRPC通信端口
- 58080:主机映射到容器内的healthz端口(8080)
- 59090:监控指标端口
环境变量DAPR_PLACEMENT_METADATA_ENABLED=true是开启元数据功能的核心配置。
方法2:用自定义配置文件初始化(持久化方案)
- 创建
config.yaml配置文件,写入Placement启用规则:
apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: daprConfig spec: placement: metadataEnabled: true
- 用该配置文件执行初始化:
dapr init --config ./config.yaml
这样部署的Placement服务会自动启用元数据功能,无需后续手动修改。
验证配置生效
重启服务后,发送GET请求到正确端点:
curl http://localhost:58080/placement/state
此时应该能返回包含所有Dapr actors地址和端口的Placement表数据,不会再出现404错误。
内容的提问来源于stack exchange,提问作者Kelvin Nguyen
相关产品推荐
相关产品推荐

