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

K3s部署无法识别LivenessProbe与ReadinessProbe问题求助

问题原因及解决办法

这个报错和探针语法变更完全无关,核心问题是你YAML里的探针字段放错位置了——livenessProbe和readinessProbe是容器专属配置,必须嵌套在spec.template.spec.containers数组里的具体容器定义下,不能直接丢在spec.template.spec层级。

给你看个正确的写法示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
      - name: demo-container
        image: nginx:alpine
        # 探针必须写在容器定义内部
        livenessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 3

你现在的YAML应该是把探针直接放在了容器配置外面,比如这种错误写法:

# 错误示例,会触发你看到的报错
spec:
  template:
    spec:
      livenessProbe: # 位置错了,要移到containers里的容器下面
        ...
      readinessProbe: # 位置错了
        ...
      containers:
      - name: demo-container
        image: nginx:alpine

至于为什么几个月前能跑,大概率是当时的K3s版本对字段校验没那么严格(比如旧版本允许忽略未知字段),或者你之前的YAML其实是正确的,这次部署时不小心改了字段位置。但从Kubernetes的API规范来说,这两个探针的位置要求从始至终都没变过,根本没有什么重大语法变更。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:55:30