gpt4 book ai didi

tomcat - Kubernetes 探测器在 Tomcat 上失败

转载 作者:行者123 更新时间:2023-11-28 22:48:16 24 4
gpt4 key购买 nike

我在 Kubernetes 集群上的 Docker 镜像中的 Tomcat 上运行 Java 网络应用程序。服务运行良好,我正在尝试设置活跃度和就绪度探测。

我还没有找到关于 Tomcat 和 Kubernetes 具体最佳实践的文档,但我考虑了在 documentation 之后的 HTTP GET 请求。像这样合适:

    livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 8080
scheme: HTTP
initialDelaySeconds: 20
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 3

当访问 Tomcat 基本 URL 时,它返回一个欢迎页面和代码 200 -- OK。然而,liveness probe 失败了,这是在 pod 描述中:

Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 3m default-scheduler Successfully assigned xxxxx-service-7f8f76988-lkxdf to kube-03
Normal SuccessfulMountVolume 3m kubelet, kube-03 MountVolume.SetUp succeeded for volume "default-token-b6tps"
Normal Created 1m (x3 over 3m) kubelet, kube-03 Created container
Normal Started 1m (x3 over 3m) kubelet, kube-03 Started container
Warning Unhealthy 42s (x7 over 3m) kubelet, kube-03 Liveness probe failed: Get http://10.233.96.19:8080/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Normal Pulling 40s (x4 over 3m) kubelet, kube-03 pulling image "xxxxx:4999/xxxxx/xxxxxservice:v1.3.0"
Normal Pulled 40s (x4 over 3m) kubelet, kube-03 Successfully pulled image "xxxxx:4999/xxxxx/xxxxxservice:v1.3.0"
Normal Killing 40s (x3 over 2m) kubelet, kube-03 Killing container with id docker://xxxxx-service:Container failed liveness probe.. Container will be killed and recreated.

以相同方式设置就绪探测器时也是如此。但是,当我停用探测器时,服务运行良好。我可以使用 / 访问 Tomcat 欢迎页面,也可以访问实际的 webapp。

因此,我的问题是:我应该如何为 Tomcat 网络应用程序正确设置 Kubernetes active /就绪探测?为什么简单的 HTTP GET 方法会失败?

相关问题似乎是由于启动时间长于 initialDelaySeconds 参数中设置的时间(例如 this ),正如错误消息所示。然而,在这种情况下,Tomcat 和 webapp 确实在几秒钟后就可以访问了,因此启动时间不是这里的问题。

以下是部署规范:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: xxxxx-service
namespace: xxxxx
spec:
replicas: 1
template:
metadata:
labels:
app: xxxxx-service
spec:
imagePullSecrets:
- name: regsecret
containers:
- image: xxxxxservice:v1.3.0
imagePullPolicy: Always
name: xxxxx-service
ports:
- containerPort: 8080
protocol: TCP
resources:
limits:
cpu: "0.2"
memory: 4Gi

最佳答案

我遇到了同样的问题。经过一段时间的调查,我发现我的应用程序中的 tomcat 服务器需要大约 35 秒才能启动。因此,我将 initialDelaySeconds 更改为大于 35 秒。我还将超时秒数增加到 10 秒,将 periods_second 增加到 10 秒。然后 Kubernetes 探测器完美运行。

关于tomcat - Kubernetes 探测器在 Tomcat 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49770036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com