mutlipart/form-data Kubernetes 上的解析错误
mutlipart/form-data parsing error on Kubernetes
我在我的 go 服务器中的标准 net/http
Request
结构上调用函数 FormFile
,如下所示:
multiFile, header, err := req.FormFile("file")
if err != nil {
log.Printf("reader error: %s", err)
// response error handling
return
}
当 运行 在本地使用 Docker Compose 时,这个 运行s 成功了,但是当我 运行 它在我的 Kubernetes 集群上时,我从我的 pod 日志:
reader error: multipart: NextPart: read tcp [host]:[port]->[differentHost]:[differentPort]: i/o timeout
我已经在我的 pod 上安装了一个卷来处理任何写入磁盘的溢出缓冲区。这是相关的 k8s 部署配置:
spec:
containers:
volumeMounts:
- mountPath: /tmp
name: file-volume
securityContext:
fsGroup: 1000
runAsGroup: 1000
runAsUser: 1000
volumes:
- emptyDir: {}
name: file-volume
有谁知道导致此问题的原因以及如何解决?
读取超时表明这不是您的 Pod 内部结构的问题,例如卷安装,但服务发现问题。客户端似乎无法读取您的 Pod。可能与您的 K8s Service 或 Ingress 配置有关。
或者,您的 Pod 可能 运行 不正确。在这种情况下,您将不得不调查 Pod 日志和 K8s 事件日志。
您可以设置较长的服务器超时 当我们上传更大的 files/slower 网络连接时会发生这种情况
s := &http.Server{
ReadTimeout: 150 * time.Second,
WriteTimeout: 150 * time.Second,
}
我在我的 go 服务器中的标准 net/http
Request
结构上调用函数 FormFile
,如下所示:
multiFile, header, err := req.FormFile("file")
if err != nil {
log.Printf("reader error: %s", err)
// response error handling
return
}
当 运行 在本地使用 Docker Compose 时,这个 运行s 成功了,但是当我 运行 它在我的 Kubernetes 集群上时,我从我的 pod 日志:
reader error: multipart: NextPart: read tcp [host]:[port]->[differentHost]:[differentPort]: i/o timeout
我已经在我的 pod 上安装了一个卷来处理任何写入磁盘的溢出缓冲区。这是相关的 k8s 部署配置:
spec:
containers:
volumeMounts:
- mountPath: /tmp
name: file-volume
securityContext:
fsGroup: 1000
runAsGroup: 1000
runAsUser: 1000
volumes:
- emptyDir: {}
name: file-volume
有谁知道导致此问题的原因以及如何解决?
读取超时表明这不是您的 Pod 内部结构的问题,例如卷安装,但服务发现问题。客户端似乎无法读取您的 Pod。可能与您的 K8s Service 或 Ingress 配置有关。
或者,您的 Pod 可能 运行 不正确。在这种情况下,您将不得不调查 Pod 日志和 K8s 事件日志。
您可以设置较长的服务器超时 当我们上传更大的 files/slower 网络连接时会发生这种情况
s := &http.Server{
ReadTimeout: 150 * time.Second,
WriteTimeout: 150 * time.Second,
}