Spring Boot App在Kubernetes缩放时崩溃

时间:2018-03-24 23:48:04

标签: java docker spring-boot kubernetes

我有一个启动了Spring Actuator的Spring Boot应用程序。我使用Spring Actuator健康终点作为准备和活力检查。单个副本一切正常。当我扩展到2个副本时,两个pod都崩溃了。它们都无法进行准备检查,最终导致无休止的破坏/重新创建循环。如果我将它们缩放回1个副本,则群集将恢复并且Spring Boot应用程序可用。可能导致此问题的任何想法?

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

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

1 个答案:

答案 0 :(得分:1)

  

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

因此,在这种情况下,我猜测VM后备minikube的大小太小,无法处理其中部署的所有项目。我没有使用minikube来了解它的libmachine基础有多少,但在docker-machine的情况下,可以提供--virtualbox-memory=4096(或设置一个环境变量{{ 1}})。当然,应该使用与minikube使用的驱动程序相对应的内存设置(因此,HyperKit,xhyve,HyperV等)。