标签: livenessprobe

活动和就绪探针连接被拒绝

当我尝试为 awx_web 容器设置活性和就绪性问题时,我不断收到此错误

Liveness probe failed: Get http://POD_IP:8052/: dial tcp POD_IP:8052: connect: connection refused
Run Code Online (Sandbox Code Playgroud)

我的容器 awx_web 部署中的“Liveness & Readiness”部分

          ports:
          - name: http
            containerPort: 8052 # the port of the container awx_web
            protocol: TCP
          livenessProbe:
            httpGet:
              path: /
              port: 8052
            initialDelaySeconds: 5
            periodSeconds: 5
          readinessProbe:
            httpGet:
              path: /
              port: 8052
            initialDelaySeconds: 5
            periodSeconds: 5
Run Code Online (Sandbox Code Playgroud)

如果我测试端口 8052 是否从与包含容器 awx_web 的 pod 位于同一命名空间的另一个 pod 中打开,或者如果我使用部署在与容器 awx_web 相同的 pod 中的容器进行测试,我会得到此消息(端口已打开)

/ # nc -vz POD_IP 8052
POD_IP  (POD_IP :8052) open
Run Code Online (Sandbox Code Playgroud)

如果我从部署了包含容器 awx_web 的 …

http ansible-awx kubernetes readinessprobe livenessprobe

9
推荐指数
3
解决办法
7万
查看次数

Kubernetes 健康检查:timeoutSeconds 超过 periodSeconds

在 Kubernetes 中Kubernetes Health Check Probes,如果timeoutSeconds超过会发生什么periodSeconds?例如:

initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 10
successThreshold: 1
failureThreshold: 3
Run Code Online (Sandbox Code Playgroud)

Pod 什么时候会“失败”?

  • initialDelaySeconds+ ( periodSeconds* failureThreshold); 或者
  • initialDelaySeconds+ ( MAX( periodSeconds, timeoutSeconds) * failureThreshold);

当 Pod 成功时,同样的问题也适用。

kubernetes kubernetes-health-check readinessprobe livenessprobe

8
推荐指数
1
解决办法
3836
查看次数

即使端点正在工作,k8s 就绪性和活性探测也会失败

我有一个 Next.js 应用程序,它有 2 个简单端点readinessliveness具有以下实现:

return res.status(200).send('OK');
Run Code Online (Sandbox Code Playgroud)

我已经根据api 路由文档创建了端点。/stats另外,我根据此处的文档有一个basePath 。因此,探测端点位于/stats/api/readiness/stats/api/liveness

当我在本地 Docker 容器中构建并运行应用程序时,探测端点可访问并返回 200 OK。

但是,当我将应用程序部署到 k8s 集群时,探测失败。时间还很充裕initialDelaySeconds,所以这不是原因。

我通过连接到servicepod port-forward,当 pod 刚刚启动时,在失败之前,我可以到达端点并返回 200 OK。过了一会儿,它开始像往常一样失败。

我还尝试通过健康的 pod 访问失败的 pod:

k exec -t [healthy pod name] -- curl -l 10.133.2.35:8080/stats/api/readiness
Run Code Online (Sandbox Code Playgroud)

同样的情况 - 一开始,虽然 pod 尚未失败,但我在curl 命令上得到 200 OK。过了一会儿,它开始失败。

我得到的探针错误是:

Readiness probe failed: Get http://10.133.2.35:8080/stats/api/readiness: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Run Code Online (Sandbox Code Playgroud)

有趣的实验 - …

kubernetes google-kubernetes-engine readinessprobe livenessprobe

7
推荐指数
1
解决办法
4700
查看次数

Pod 中多个容器的活性和就绪性探测

我想知道是否有可能对 Pod 中的多个容器或仅对 Pod 中的一个容器应用活性和就绪性探测检查。我确实尝试检查多个容器,但容器 A 的探测检查失败,而容器 B 中的探测检查通过。

kubernetes kubernetes-health-check readinessprobe livenessprobe

6
推荐指数
2
解决办法
7436
查看次数

如何为worker pod定义k8s liveness探针和readness探针

我有一个 k8s 集群。我们的服务是基于队列的。我们的 Pod 订阅事件队列、获取事件并执行任务。那么对于这种服务,如何定义k8s的liveness探针和readiness探针呢?

kubernetes readinessprobe livenessprobe

5
推荐指数
1
解决办法
2674
查看次数

当 pod 包含多个容器时,K8s 的活性探测行为?

场景:一个 K8S Pod 具有多个容器,并且为每个容器配置活性/就绪探针。现在,如果活性探测在某些容器上成功,但在少数容器上失败,k8s 会做什么。

  1. 它会仅重新启动失败的容器
    还是
  2. 它会重新启动整个 Pod 吗?

kubernetes kubernetes-pod readinessprobe livenessprobe

5
推荐指数
2
解决办法
8643
查看次数

Kubernetes 活跃度探测失败是自愿中断还是非自愿中断?

我有一个部署到 Kubernetes 的应用程序,该应用程序依赖于外部应用程序。有时,这两者之间的连接会进入无效状态,只能通过重新启动我的应用程序来修复。

为了自动重新启动,我配置了一个活动探针来验证连接。

这一直工作得很好,但是,我担心如果外部应用程序出现故障(这样连接错误不仅仅是由于无效的 Pod 状态),我的所有 Pod 将立即重新启动,并且我的应用程序将变成完全不可用。我希望它保持运行,以便不依赖于不良服务的功能可以继续。

我想知道 Pod 中断预算是否会阻止这种情况,因为它限制了由于“自愿”中断而减少的 Pod 数量。然而,K8s 文档没有说明活性探测失败是否是自愿中断。他们是吗?

kubernetes livenessprobe

5
推荐指数
1
解决办法
1180
查看次数

Kubernetes 中是否有一个活性探针可以捕获 python 容器何时冻结?

我有一个运行无限循环的 python 程序,但是,每隔一段时间代码就会冻结。没有出现任何错误或任何其他消息来提醒我出现问题。我想知道 Kubernetes 是否有任何活性探针可以帮助捕获代码何时冻结,以便它可以杀死并重新启动该容器。

我有一个想法,让 python 代码在每次完成循环时生成一个定期日志。这样我就可以让活性探针每 30 秒左右检查一次日志文件,以查看文件是否已更新。如果在指定的时间后文件尚未更新,则假定程序冻结并且容器被终止并重新启动。

我目前正在使用以下 python 代码进行测试:

#Libraries
import logging
import random as r
from time import sleep

#Global Veriables
FREEZE_TIME = 60


'''Starts an infinate loop that has a 10% chance of 
freezing...........................................'''
def main():
    #Create .log file to hold logged info.
    logging.basicConfig(filename="freeze.log", level=logging.INFO)

    #Start infinate loop
    while True:
        freeze = r.randint(1, 10) #10% chance of freezing.
        sleep(2)
        logging.info('Running infinate loop...')
        print("Running infinate loop...")

        #Simulate a freeze.
        if freeze == 1:
            print(f"Simulating freeze …
Run Code Online (Sandbox Code Playgroud)

python logging code-freeze kubernetes livenessprobe

5
推荐指数
1
解决办法
4087
查看次数

就绪探针给出停止服务错误

我已将 Spring Boot 更新为2.5.22.1.8.RELEASE. 在此之前,活性和就绪性探测都很好。现在,在更新 Spring Boot 后,我​​更新了我的应用程序属性文件:

management.endpoints.web.exposure.include=*
management.endpoints.jmx.exposure.include=health,info
management.endpoint.metrics.enabled=true
management.endpoint.prometheus.enabled=true
management.metrics.enable.*=true
management.metrics.enable.all=true
management.metrics.export.prometheus.enabled=true
management.metrics.use-global-registry=true




management.endpoint.health.probes.enabled=true
management.health.livenessstate.enabled=true
management.health.readinessstate.enabled=true
management.endpoint.health.show-details=always
Run Code Online (Sandbox Code Playgroud)

我已分别向某些文档添加了最后 4 行。

在本地启动项目并从浏览器检查后:

http://localhost:8090/actuator/health/liveness给出{"status":"UP"}

http://localhost:8090/actuator/health/readiness给出{"status":"OUT_OF_SERVICE"}的是 503 状态。

{
    "status": "OUT_OF_SERVICE",
    "components": {
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 499963174912,
                "free": 326313852928,
                "threshold": 10485760,
                "exists": true
            }
        },
        "livenessState": {
            "status": "UP"
        },
        "ping": {
            "status": "UP"
        },
        "readinessState": {
            "status": "OUT_OF_SERVICE"
        }
    },
    "groups": [
        "liveness",
        "readiness"
    ] …
Run Code Online (Sandbox Code Playgroud)

maven spring-boot kubernetes readinessprobe livenessprobe

5
推荐指数
0
解决办法
3455
查看次数

if 语句中的 kubernetes livenessprobe exec 命令环境变量不起作用

我在获取 kubernetes livenessProbe exec 命令来处理环境变量时遇到困难。\n我的目标是让 liveness 探针监视 pod 上的内存使用情况并执行 httpGet 运行状况检查。

\n

“如果容器内存使用量超过资源限制的 90% 或 http 响应代码/health失败,则探测应该失败。”

\n

活性探针配置如下:

\n
\nlivenessProbe:\n  exec:\n    command:\n    - sh\n    - -c\n    - |-\n      "used=$(awk '{ print int($1/1.049e+6) }' /sys/fs/cgroup/memory/memory.usage_in_bytes);\n      thresh=$(awk '{ print int( $1 / 1.049e+6 * 0.9 ) }' /sys/fs/cgroup/memory/memory.limit_in_bytes);\n      health=$(curl -s -o /dev/null --write-out "%{http_code}" http://localhost:8080/health);\n      if [[ ${used} -gt ${thresh} || ${health} -ne 200 ]]; then exit 1; fi"\n  initialDelaySeconds: 240\n  periodSeconds: 60\n  failureThreshold: 3\n  timeoutSeconds: 10\n\n
Run Code Online (Sandbox Code Playgroud)\n

如果我执行到(ubuntu)pod并运行这些命令,它们都可以正常工作并完成工作。 …

kubernetes livenessprobe

5
推荐指数
2
解决办法
1万
查看次数