Kubernetes 启动时不尊重初始延迟秒数

标签 kubernetes

我已经配置了一个pod,如下所示:

  livenessProbe:
    initialDelaySeconds: 60
    periodSeconds: 10
    failureThreshold: 3
  readinessProbe:
    initialDelaySeconds: 60
    periodSeconds: 10
    failureThreshold: 3

Readiness 和 Liveness 探针基于 tcp-socker

          readinessProbe:
            tcpSocket:
              port: {{ .Values.port }}
            initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
            periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
            failureThreshold: {{ .Values.readinessProbe.failureThreshold }}

但是,当我部署时,pod 几乎立即被标记为失败,并进入Error --> CrashLoopBackOff。 Pod 检查 Redis 连接(确实需要一点时间才能准备好)。

当然,我在 pod 日志中看到了连接错误

  File "/usr/local/lib/python3.9/site-packages/redis/connection.py", line 563, in connect
    raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 111 connecting to redis-master:6379. Connection refused.

为什么 Pod 早在 initialDelaySeconds: 60 之前就被标记为 Error/CLBO?

这是 Pod 的关于探测器的 yaml 转储(我将两个探测器的 initialDelaySecond 增加到 100,但仍然相同...)

    livenessProbe:
      failureThreshold: 3
      initialDelaySeconds: 100
      periodSeconds: 10
      successThreshold: 1
      tcpSocket:
        port: 9898
      timeoutSeconds: 1
    name: mycontainer
    ports:
    - containerPort: 9898
      protocol: TCP
    readinessProbe:
      failureThreshold: 3
      initialDelaySeconds: 100
      periodSeconds: 10
      successThreshold: 1
      tcpSocket:
        port: 9898
      timeoutSeconds: 1

最佳答案

initialDelaySeconds :容器启动后启动事件或就绪探测之前的秒数。

现在 Pod 可能会因为 CrashLoopBackOff 而失败甚至在启动探测器之前。 这就是这里的概念。如果您设置容器restartPolicy,则可能会发生这种情况至Never .

可以查看 pod 日志或事件来获取 pod 失败的原因(可以使用 kubectl describe <pod> )

关于Kubernetes 启动时不尊重初始延迟秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66697020/

相关文章:

kubernetes - 运行一个shell脚本来初始化kubernetes中的Pod(初始化我的数据库集群)

kubernetes - 在kubernetes部署中配置Varnish后端

kubernetes - 如何在 kubernetes 上设置基本的 rabbitmq

spring-boot - 在 Kubernetes 部署 yaml 的环境变量中传递 json 字符串

docker - 是否可以在不在云端的情况下私​​下使用 Google 容器?

python - 无法多次运行ansible的k8s模块(非幂等)

git - git 服务器如何扩展?

Jenkins Deployment on Kubernetes 日志有问题

kubernetes:部署仪表板(ui)时出错

docker - Dockerfile 中的 VOLUME 是否在 kubernetes 中持久存在