本文整理了使用dapr使用过程中的一些问题以及解决方案。
1、dapr-sidecar-injector服务报错
现象:
service account 'xxxxx' not on the list of allowed controller accounts
2、服务调用报错
现象:
contains value with non-printable ASCII characters
原因:http2.0禁止header中包含非Ascii码字符
解决方案:去掉中文字符
3、服务调用报错
现象:
rpc error: code = Internal desc = fail to invoke, id: mysql-proxyv2.mysql-proxy, err: rpc error: code = ResourceExhausted desc = grpc: received message larger than max (4656723 vs. 4194304)
原因:传出超过默认4M
解决方案:
3.1、调整 internal grpc -> internal grpc 传输限制
dapr.io/http-max-request-size: "100"
3.2、调整 application->daprd 传输限制
因为我用的是dapr-go-sdk,修改 github.com/dapr/go-sdk/client/invoke.go
resp, err := c.protoClient.InvokeService(c.withAuthToken(ctx), req, grpc.MaxCallSendMsgSize(math.MaxInt), grpc.MaxCallRecvMsgSize(math.MaxInt))
4、部署ha mode导致dapr-placement pending
dapr 配置ha mode导致dapr-placement pending_Dinoland的博客-CSDN博客
5、httpPipeline和appHttpPipeline使用混淆
Dapr中的`appHttpPipeline`和`httpPipeline`都是管道(pipeline)的概念,但是它们的作用和使用场景不同。
`appHttpPipeline`是应用程序级别的管道,它用于处理应用程序接收到的HTTP请求。在Dapr中,每个应用程序都可以定义自己的`appHttpPipeline`,并且可以通过配置文件或代码来自定义管道中的各个中间件。应用程序可以使用`appHttpPipeline`来处理HTTP请求的身份验证、授权、请求转发等功能。
`httpPipeline`是Dapr运行时级别的管道,它用于处理Dapr组件之间的通信。在Dapr中,每个组件都可以定义自己的`httpPipeline`,并且可以通过配置文件或代码来自定义管道中的各个中间件。组件可以使用`httpPipeline`来处理组件之间的请求、响应、错误等信息。
因此,`appHttpPipeline`和`httpPipeline`的区别在于它们的作用范围不同:`appHttpPipeline`用于应用程序级别的HTTP请求处理,而`httpPipeline`用于Dapr组件之间的通信处理。
6、使用helm升级报错(dapr v1.11.1 -> v1.12.0)
现象:
# 更新指令
helm upgrade dapr ./charts/dapr -f dapr_charts.yaml --namespace dapr --wait
# 报错信息
Error: UPGRADE FAILED: error validating "": error validating data: [ValidationError(Configuration.spec.mtls): unknown field "controlPlaneTrustDomain" in io.dapr.v1alpha1.Configuration.spec.mtls, ValidationError(Configuration.spec.mtls): unknown field "sentryAddress" in io.dapr.v1alpha1.Configuration.spec.mtls]
原因:针对于dapr在k8s中的crd需要重新定义
解决方案:
kubectl replace -f charts/dapr/crds/configuration.yaml --force
7、上传文件超过16M创建临时文件权限问题
dapr报错:cannot read multipart/form-data body: open /tmp/multipart-xxxxx: read-only file system-CSDN博客