You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Kuberhealthy CosmosDB检查报错:等待检查Pod报告超时

解决Kuberhealthy自定义检查超时问题(CosmosDB校验场景)

针对你遇到的Check execution error: default/cosmoscheck: timed out waiting for checker pod to report in错误——尽管Pod日志显示CosmosDB响应正常,但Kuberhealthy无法识别检查结果,以下是排查和解决方向:

1. 确认自定义检查容器的输出格式符合Kuberhealthy规范

Kuberhealthy要求自定义检查容器必须向**标准输出(stdout)**输出特定结构的JSON结果,否则会判定为未上报结果,触发超时:

  • 成功场景的正确输出示例:
    {"ok": true, "error": "", "message": "CosmosDB HTTP response check passed"}
    
  • 失败场景的正确输出示例:
    {"ok": false, "error": "CosmosDB connection timed out", "message": "Failed to validate CosmosDB response"}
    

检查你的cosmoscheck:1镜像脚本,确保最终输出的是符合上述结构的JSON,而非普通的响应内容。

2. 调整只读根文件系统的配置

你的检查容器启用了readOnlyRootFilesystem: true,部分Kuberhealthy检查逻辑需要临时目录(如/tmp)处理上报数据,只读文件系统会导致写入失败。可以添加emptyDir挂载:
修改podSpec中的容器配置:

containers:
  - name: cosmoscheck
    image: cosmoscheck:1
    imagePullPolicy: IfNotPresent
    env:
      - name: COSMOSDB_URL
        value: "........................"
      - name: COSMOSDB_AUTH_TOKEN
        value: "......................."
    securityContext:
      runAsNonRoot: true
      allowPrivilegeEscalation: false
      readOnlyRootFilesystem: true
    volumeMounts:
      - name: tmp-dir
        mountPath: /tmp
volumes:
  - name: tmp-dir
    emptyDir: {}

3. 优化检查的时间配置

当前runInterval和timeout都设置为10分钟,可能导致Kuberhealthy在检查容器还未完成上报时就触发超时。建议将timeout设置为略短于runInterval的值:

spec:
  runInterval: 10m
  timeout: 9m

4. 检查容器的退出码

Kuberhealthy会通过容器退出码辅助判断检查状态:

  • 退出码0:表示检查成功
  • 非0退出码:表示检查失败
    确保你的检查脚本在CosmosDB响应正常时返回0,异常时返回非0值,避免Kuberhealthy误判。

内容的提问来源于stack exchange,提问作者Gem12346

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:37:22