java - Spring Boot 应用程序在 Kubernetes 扩展时崩溃

标签 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

最佳答案

The curl command hangs. It appears the entire minikube server hangs, dashboard quits responding

所以在这种情况下,我猜测虚拟机支持 minikube尺寸太小,无法容纳部署在其中的所有元素。我还没有使用过 minikube 来了解它从 libmachine 基础中继承了多少内容,但在 docker-machine 的情况下,可提供--virtualbox-memory=4096 (或设置环境变量 env VIRTUALBOX_MEMORY_SIZE=4096 docker-machine ... )。当然,应该使用与 minikube 使用的驱动程序相对应的内存设置(例如 HyperKit、xhyve、HyperV 等)。

关于java - Spring Boot 应用程序在 Kubernetes 扩展时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49471132/

相关文章:

java - 在对 Spring Boot REST API 的多次调用中使用相同的 JDBC 连接

java - 是否有乐观锁的替代方案

java - 什么语言(Java 或 Python)+ 中型 Web 项目的框架?

Java机器人类在笔记本电脑上工作但在电脑上不工作

docker - 以下 yaml 文件中的 docker compose 出错?

docker - 可以使用 Onlyoffice 进行身份验证吗?

docker - Docker群和Cloudflare DNS

java - 如何在 Java 中按字母顺序对枚举成员进行排序?

Javascript AJAX 调用 SpringBoot Controller 并获取 JSON 响应

spring-boot - Elasticsearch - must(QueryBuilders.rangeQuery) 和 mustNot(QueryBuilders.existsQuery) 不能同时工作