当前位置: 首页 > 知识库问答 >
问题:

Kubernetes探测器在Tomcat上失败

涂溪叠
2023-03-14

我在Kubernetes集群的Docker映像中运行Tomcat上的Java webapp。服务运行良好,我正试图设置活跃度和准备度探测器。

我没有找到关于最佳实践wrt、Tomcat和Kubernetes的具体文档,但我认为文档后面的HTTP GET请求是合适的,如下所示:

    livenessProbe:
      failureThreshold: 3
      httpGet:
        path: /
        port: 8080
        scheme: HTTP
      initialDelaySeconds: 20
      periodSeconds: 20
      successThreshold: 1
      timeoutSeconds: 3
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.

相关问题似乎是由于启动时间长于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

共有1个答案

呼延衡
2023-03-14

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

 类似资料:
  • 在上使用helm upgrade命令运行容器时,出现了以下错误: “准备探测失败:获取http://172.17.0.6:3003/:拨号tcp 172.17.0.6:3003:GetSockopt:连接拒绝”。

  • 我正在尝试设置我的第一个Kubernetes集群,它似乎已经设置好,直到nginx-ingress控制器。以下是我的集群信息:节点:三个RHEL7和一个RHEL8节点,主服务器运行在RHEL7Kubernetes服务器版本:1.19.1网络使用:Frannel coredns运行良好。在所有节点上禁用selinux和防火墙 然后,我按照以下页面中的说明安装了nginx入口控制器:https://d

  • 我使用的是标准的skydns RC/SVC YAMLS。 吊舱描述: (etcd) 我还将放入kube2sky容器中,ca.crt与服务器上的ca.crt匹配。

  • 有没有一种方法可以让fluentd船LivenessProbes输出像它对普通容器在吊舱中的输出一样?

  • 正在读取此文档https://docs.spring.io/spring-cloud-dataflow/docs/2.0.2.release/reference/htmlsingle/#_application_and_server_properties deployer.appname.kubernetes.probecredentialssecret=myprobesecret 但是,如果只使

  • 我试图在Azure中新部署的aks Kuberbetes(1.9.6)集群中部署zalenium helm chart。但我不让它起作用。豆荚给出了下面的日志: 描述pod给出:警告不健康4M(x12超过6M)kubelet,aks-agentpool-93668098-0就绪探测失败:HTTP探测失败,状态代码:502 Zalenium图像版本:Dosel/Zalenium:3 如果使用Kube