Liveness 和 Readiness 探测器告诉 Kubernetes 一个 pod 是否正在运行并准备好做一些工作。企业应用程序可以通过 HTTP 探测应用程序的状态。如果没有公开 HTTP 端点,Kubernetes 也可以通过执行命令进行探测。
WildFly 附带有用的 jboss-cli.sh
。此 CLI 检索有关服务器和部署状态的信息,如下所示:
$> ./jboss-cli.sh --connect --commands="ls" [...] process-type=Server product-name=WildFly Full product-version=11.0.0.Final [...] server-state=running suspend-state=RUNNING uuid=c52658a9-ca39-4548-9879-162cd6e14d93
我们可以结合一个 shell 命令来检查正在运行的服务器:./jboss-cli.sh --connect --commands=ls | grep "server-state=running"
类似的命令为我们提供了已部署的应用程序:
$> ./jboss-cli.sh --connect --commands="ls deployment" hello.war
我们再次编写一个 shell 命令来检查我们的应用程序是否已成功部署:./jboss-cli.sh --connect --commands="ls deployment" | grep "hello.war"
现在让我们将这些命令插入到 YAML 描述符中:
... containers: - name: hello-joker image: docker.example.com/hello:1 imagePullPolicy: IfNotPresent livenessProbe: exec: command: - /bin/sh - -c - /opt/jboss/wildfly/bin/jboss-cli.sh --connect --commands=ls | grep 'server-state=running' readinessProbe: exec: command: - /bin/sh - -c - /opt/jboss/wildfly/bin/jboss-cli.sh --connect --commands='ls deployment' | grep 'hello.war' ...
如果您的应用程序发出状态或“ping”资源,更简单的方法是通过 HTTP 探测 pod,如这篇文章中所示。
快乐的应用程序探索!
觉得帖子有用?订阅我的时事通讯以获取更多有关 IT 和 Java 的免费内容、提示和技巧:
成功!现在检查您的电子邮件以确认您的订阅。
标签2: Java教程地址:https://www.cundage.com/article/jcg-wildfly-kubernetes-exec-probes.html