Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当Kubernetes缩放时,Spring Boot应用程序崩溃_Java_Docker_Spring Boot_Kubernetes - Fatal编程技术网

Java 当Kubernetes缩放时,Spring Boot应用程序崩溃

Java 当Kubernetes缩放时,Spring Boot应用程序崩溃,java,docker,spring-boot,kubernetes,Java,Docker,Spring Boot,Kubernetes,我有一个Spring Boot应用程序,运行时启用了Spring执行器。我使用Spring执行器健康端点作为准备就绪和活动性检查。使用一个副本,所有这些都可以正常工作。当我扩展到2个副本时,两个吊舱都崩溃了。它们都未通过就绪性检查,并最终进入无休止的销毁/重新创建循环。如果我将它们缩回1个副本,集群将恢复,Spring Boot应用程序将可用。你知道是什么导致了这个问题吗 以下是部署配置(Spring Boot应用程序的上下文根为/dept): curl命令挂起。整个minikube服务器似乎挂

我有一个Spring Boot应用程序,运行时启用了Spring执行器。我使用Spring执行器健康端点作为准备就绪和活动性检查。使用一个副本,所有这些都可以正常工作。当我扩展到2个副本时,两个吊舱都崩溃了。它们都未通过就绪性检查,并最终进入无休止的销毁/重新创建循环。如果我将它们缩回1个副本,集群将恢复,Spring Boot应用程序将可用。你知道是什么导致了这个问题吗

以下是部署配置(Spring Boot应用程序的上下文根为/dept):


curl命令挂起。整个minikube服务器似乎挂起,仪表板停止响应


因此,在这种情况下,我猜虚拟机backing
minikube
的大小太小,无法处理它内部部署的所有项目。我没有玩minikube是为了知道它从libmachine基础中继承了多少,但是在
docker machine
的情况下,可以提供
--virtualbox memory=4096
(或者设置一个环境变量
env virtualbox\u memory\u SIZE=4096 docker machine…
)。当然,我们应该使用与minikube使用的驱动程序相对应的内存设置(例如,HyperKit、xhyve、HyperV等等)。

这是在minikube中运行的,以防出现问题。当您
curl
时,
/dept/exactor/health
端点(您应该能够通过
kubectl exec
,因为他们至少能活50秒),非200响应伴随的错误文本是什么?curl命令挂起。整个minikube服务器似乎挂起,仪表板退出响应。我确实在仪表板上看到了这一点:就绪探测失败:Get:拨号tcp 172.17.0.2:8080:getsockopt:连接被拒绝其他Spring引导吊舱开始失败其基于执行器的健康检查k也是。仪表板上的消息稍有不同:就绪探测失败:Get 172.17.0.10:8080/list/actuator/health:net/http:request Cancelled(等待标头时超过Client.Timeout)我想知道是否需要增加运行状况检查超时时间…这很奇怪,仪表板会锁定,直到我将此部署从2扩展到1。一旦我发出:kubectl scale deployment gl dept dept deployment--replicas=1,仪表板会立即开始响应。同时扩展我的web服务器(Apache)似乎没有这种效果,它只是Spring Boot应用程序。另外,这个问题就是为什么在PodSpec的
容器中包含
资源:限制:内存:
是一个非常好的主意——不仅对于minikube,对于集群也是如此,因为kubernetes无法在不知情的情况下做出智能调度决策ng每个运动部件有多大?这是分配给minikube HyperV虚拟机的内存。分配6gb而不是2gb给虚拟机似乎已经解决了问题。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: gl-dept-deployment
  labels:
    app: gl-dept
spec:
  replicas: 1
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  selector:
    matchLabels:
      app: gl-dept
  template:
    metadata:
      labels:
        app: gl-dept
    spec:
      containers:
      - name: gl-dept
        image: zmad5306/gl-dept:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
        livenessProbe:
          httpGet:
            path: /dept/actuator/health
            port: 8080
          initialDelaySeconds: 15
          periodSeconds: 10
          timeoutSeconds: 10
          successThreshold: 1
          failureThreshold: 5
        readinessProbe:
          httpGet:
            path: /dept/actuator/health
            port: 8080
          initialDelaySeconds: 15
          periodSeconds: 10
          timeoutSeconds: 10
          successThreshold: 1
          failureThreshold: 5