Kubernetes:就绪性探测失败

问题描述 投票:0回答:2

我正在使用带有 helm 的 kubernetes。我的 github 管道包含:

  - name: Verify deployment
    run: kubectl rollout status deployment/name-api --namespace my-prod --timeout=60s

有时这部分会失败:

就绪探测失败:获取“https://...:80/”:拨打 tcp ...:80:连接:连接被拒绝

当我重新运行该操作时,它通常会通过。
我该怎么办呢?

我已经尝试根据

https://stackoverflow.com/a/51932875
的答案,在
deployment.yaml
文件夹中的 templates 中添加最后一行。但这并没有帮助。

spec:
  template:
    spec:
      containers:
        - name: {{ .Chart.Name }}
          …
          readinessProbe:
            initialDelaySeconds: 5
kubernetes kubernetes-helm pipeline
2个回答
0
投票

也许您需要一个启动探针

有时,您必须处理旧应用程序,这些应用程序在首次初始化时可能需要额外的启动时间。在这种情况下,在不影响对引发此类探测的死锁的快速响应的情况下设置活性探测参数可能会很棘手。诀窍是使用相同的命令、HTTP 或 TCP 检查来设置启动探测,并使用足够长的 failureThreshold * periodSeconds 来覆盖最坏情况下的启动时间。

示例:

ports:
- name: liveness-port
  containerPort: 8080
  hostPort: 8080

livenessProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 1
  periodSeconds: 10

startupProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 30
  periodSeconds: 10

借助启动探针,应用程序最多将有 5 分钟(30 * 10 = 300 秒)来完成启动。一旦启动探针成功一次,活性探针就会接管以提供对容器死锁的快速响应。如果启动探测从未成功,容器将在 300 秒后被终止,并受 pod 的 restartPolicy 约束

来源: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes


0
投票

当就绪探测未通过时,会出现“Readiness Probe Failed”错误。这意味着 Pod 内的应用程序尚未准备好接受流量。这可能是由于以下几个原因造成的:

  • 应用程序仍在启动。请在当地检查您的申请需要多长时间才能完成。
  • 申请繁忙, 无法处理更多流量。您可以检查您正在使用的端口是否可用并已打开。
  • 存在网络问题,无法进行 应用程序连接到其他服务。
© www.soinside.com 2019 - 2024. All rights reserved.