【问题标题】:How to trigger kubernetes pod failure with java?java - 如何使用java触发kubernetes pod失败?
【发布时间】:2019-02-25 18:53:51
【问题描述】:

我尝试使用这段代码剪断它,但没有成功:

@ResponseBody
@GetMapping(FAIL)
public Response triggerError(){
    i = i+1;
    if(i==3){
        i=0;
        return Response.serverError().entity("Triggered 500").build();
    }
    return Response.ok().entity("I am fine").build();
}

如何触发 Kubernetes pod 的不健康状态?

【问题讨论】:

  • 请问我为什么投了反对票?当然,这不是“为什么是 1+1!=1?”意义上的具体代码问题。但对我来说,这是一个非常明确的问题。除此之外,我找不到任何东西可以通过代码触发 kubernetes 中的恢复策略。
  • does not work out 真的没什么意思。你应该阅读stackoverflow.com/help/how-to-ask

标签: java kubernetes health-monitoring


【解决方案1】:

根据documentation,如果Pod 不健康,Pod 中的容器将根据restart policy 重新启动(或不重新启动)。

默认情况下,如果 Pod 中的某个容器以错误状态退出,则认为 Pod 不健康。

如果 Pod 不断重启,其状态显示为CrashLoopBackOff
如果 Pod 中的容器以 0 退出,它的状态为 Completed,并且不会再发生重启。

您可以使用liveliness 探测语法自定义 Pod 健康检查:

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5

解释:

在 Container 生命的前 30 秒,有一个 /tmp/healthy 文件。因此,在前 30 秒内,命令 cat /tmp/healthy 返回一个成功代码。 30 秒后,cat /tmp/healthy 返回失败代码。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2016-08-09
    • 1970-01-01
    • 2016-05-25
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多