【问题标题】:Deploying spring boot micro services with K8's in production在生产环境中使用 K8 部署 Spring Boot 微服务
【发布时间】:2019-09-19 14:15:47
【问题描述】:

我是 k8 设置的新手,我想知道在生产中部署服务的最佳方式是什么。以下是我能想到的几种方法,你能指导我正确的方向吗?

1) Deploy each *.war file into a apache tomcat docker container, and using the service discovery mechanism of k8's.
2) Run each application normally using "java -jar *.war" into pods and expose their ports using port binding.

谢谢。

【问题讨论】:

  • 我建议使用基于 docker 的方法。我从未尝试将应用程序直接运行到 pod 中。
  • @YogeshPrajapati 我正在尝试基于 docker 的方法,但我很困惑是将我的服务部署到 Apache tomcat docker 容器还是像“java -jar *.war”一样正常运行我的 docker 容器直接暴露在生产环境中的端口?

标签: spring-boot tomcat kubernetes microservices


【解决方案1】:

将应用部署到 Kubernetes 的规范方式如下:

  1. 将每个应用程序组件打包到容器镜像中,并将其上传到容器注册表(例如 Docker Hub)
  2. 为集群中将容器作为 Pod(或 Pod 的一组副本)运行的每个容器创建一个 Deployment 资源
  3. 在每个 Deployment 中使用 Service 公开 Pod,以便其他 Pod 或用户可以访问它们

【讨论】:

  • 所以我不需要部署到 apache tomcat docker 容器然后公开它,而是直接在生产中公开 pod?
  • 首先创建容器,然后将容器作为带有 Deployment 的 Pod 部署到集群中,然后使用 Service 公开 Pod。
  • 目前,我们已经创建了服务和部署文件并运行相同并且工作正常,我的问题是在生产环境中我们是否遵循相同的方法或者我们应该为每个服务引入一个独立的 tomcat 服务器并在其中部署应用程序,这就是我感到困惑的地方?
  • 这是一个关于如何设计容器化应用程序的问题,即在容器中放置什么:多个服务在同一个容器中,还是每个服务在一个单独的容器中?这是一个你必须独立于 Kubernetes 来决定的问题,一旦你的容器化应用程序运行起来(例如,使用 Docker 在本地运行),你就可以将它部署到 Kubernetes。
【解决方案2】:

我建议在 Springboot .jar 文件中使用嵌入式 Tomcat 服务器来部署您的微服务。在@weibeld 的答案下方,我也使用它来部署我的 springboot 应用程序。

  1. 将每个应用组件打包到一个容器镜像中并上传 到容器注册表(例如 Docker Hub)

您可以使用Jib 轻松构建 distroless 映像。容器镜像可以使用maven plugin构建。

mvn compile jib:build -Djib.to.image=MY_REGISRY_IMAGE:MY_TAG -Djib.to.auth.username=USER -Djib.to.auth.password=PASSWORD
  1. 为每个容器创建一个部署资源,将容器作为集群中的一个 Pod(或一组 Pod 副本)运行

创建您的部署 .yml 文件结构并根据需要在文件中调整部署参数。

kubectl create deployment my-springboot-app --image MY_REGISRY_IMAGE:MY_TAG --dry-run -o yaml > my-springboot-app-deployment.yml

创建部署:

kubectl apply -f my-springboot-app-deployment.yml
  1. 使用 Service 公开每个 Deployment 中的 Pod,以便其他 Pod 或用户可以访问它们

    kubectl 暴露部署 my-springboot-app --port=8080 --target-port=8080 --dry-run -o yaml > my-springboot-app-service.yml

    kubectl apply -f my-springboot-app-service.yml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 2019-09-27
    • 2018-06-17
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多