存活探针执行失败求助:OCI runtime exec格式错误排查
解决Kubernetes存活探针exec格式错误问题
问题原因及对应解决方案
1. 脚本缺少Shebang头
脚本未指定解释器,kubelet执行时无法确定运行环境,导致格式错误。在livenessprobe.sh开头添加一行指定解释器:
#!/bin/bash
如果容器内只有sh环境,替换为#!/bin/sh。
2. 脚本无执行权限
构建镜像时需确保脚本拥有可执行权限,在Dockerfile中添加:
RUN chmod +x /path/to/livenessprobe.sh
若临时测试,可进入容器执行chmod +x ./livenessprobe.sh,但建议在镜像构建阶段固化配置。
3. 直接在探针中执行curl命令(绕过脚本)
无需依赖脚本,将curl命令直接写入探针配置,避免脚本相关问题:
livenessProbe: exec: command: - curl - --fail - -H - "Authorization: Basic <redacted>==" - -H - "Content-Type: application/json" - -H - "x-geeiq-origin: liveness-probe" - -i - -X - POST - -d - "@livenessprobe-request.json" - http://0.0.0.0:8080/ initialDelaySeconds: 180 periodSeconds: 180 timeoutSeconds: 120 failureThreshold: 2 successThreshold: 1
4. 检查脚本换行符格式
若脚本在Windows环境编辑,换行符为CRLF格式,而Linux容器仅识别LF格式,会导致执行报错。可使用dos2unix工具转换,或在编辑器中设置为LF换行模式。
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

