K8S部署SpringBoot应用_都超的博客-CSDN博客_k8s springboot

标签: | 发表时间:2020-07-17 15:59 | 作者:
出处:https://blog.csdn.net

必要条件

  1. K8S环境机器做部署用,推荐一主双从。 推荐安装文档
  2. Docker Harbor私有仓库,准备完成后在需要使用仓库的机器docker login。
  3. 开发机器需要Docker环境,build及push使用

基础配置准备

一、构建基本Springboot工程,本例所用版本及结构如下图

版本及结构
创建测试代码,简单打印几行log
测试代码

二、maven配置

1. properties配置
      <properties>
     <docker.image.prefix>pasq</docker.image.prefix>
     <!-- docker harbor地址 -->
     <docker.repostory>192.168.1.253:8081</docker.repostory>
 </properties>
2. plugins配置
      <plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    <!-- 使用Maven插件直接将应用打包为一个Docker镜像 -->
    <plugin>
        <groupId>com.spotify</groupId>
        <!-- 这里使用新版dockerfile-maven-plugin插件 -->
        <artifactId>dockerfile-maven-plugin</artifactId>
        <version>1.4.10</version>
        <configuration>
            <!-- Dockerfile目录指定 -->
            <dockerfile>src/main/docker/Dockerfile</dockerfile>
            <repository>${docker.repostory}/${docker.image.prefix}/${project.artifactId}</repository>
            <!-- 生成镜像标签 如不指定 默认为latest -->
            <tag>${project.version}</tag>
            <buildArgs>
                <!-- 理论上这里定义的参数可以传递到Dockerfile文件中,目前未实现 -->
                <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
            </buildArgs>
        </configuration>
    </plugin>
</plugins>

三、Dockerfile文件

      #基础镜像,如果本地仓库没有,会从远程仓库拉取
FROM openjdk:8-jdk-alpine
#容器中创建目录
RUN mkdir -p /usr/local/pasq
#编译后的jar包copy到容器中创建到目录内
COPY target/dockertest-0.0.1.jar /usr/local/pasq/app.jar
#指定容器启动时要执行的命令
ENTRYPOINT ["java","-jar","/usr/local/pasq/app.jar"]

构建镜像并推送

  1. 构建镜像,执行如下命令
    插件编译
    构建镜像日志如下
    编译日志
  2. 完成后 docker images可以查看打包的镜像
    在这里插入图片描述
  3. 命令窗口执行 docker push REPOSITORY推送至docker harbor
    推送
    docker harbor可以查看到推送的镜像
    dockerharbor

K8S部署

1. 创建dockertest.yaml文件如下

      apiVersion: v1
kind: Service
metadata:
  name: dockertest
  namespace: default
  labels:
    app: dockertest
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 30090 #service对外开放端口
  selector:
    app: dockertest
---
apiVersion: apps/v1
kind: Deployment #对象类型
metadata:
  name: dockertest #名称
  labels:
    app: dockertest #标注 
spec:
  replicas: 3 #运行容器的副本数,修改这里可以快速修改分布式节点数量
  selector:
    matchLabels:
      app: dockertest
  template:
    metadata:
      labels:
        app: dockertest
    spec:
      containers: #docker容器的配置
      - name: dockertest
        image: 192.168.1.253:8081/pasq/dockertest:0.0.1 # pull镜像的地址 ip:prot/dir/images:tag
        imagePullPolicy: IfNotPresent #pull镜像时机,
        ports:
        - containerPort: 8080 #容器对外开放端口

2. 运行 kubectl create -f dockertest.yaml创建Deployment

完成后执行 kubectl get pods如下图,可以看到启动了三个pod
getpods

3. 运行 kubectl logs -f podsname查看日志

新开窗口分别查看3个pod的日志,然后访问 k8s master节点IP+service对外开放端口访问springboot应用,我这里使用 http://192.168.1.250:30090/test/test, 多刷新几次可以看到pod直接做了负载,如下图:
pods1:
pods1
pods2:
pods2
pods3:
pods3
运行 kubectl delete -f dockertest.yaml可以删除pods与service
修改dockertest.ymal 中replicas数量后,运行 kubectl apply -f dockertest.yaml可以扩容或收缩副本数量

到此,k8s部署springboot应用完成。有心得交流的朋友可以私信或留言。

相关 [k8s springboot 应用] 推荐:

K8S部署SpringBoot应用_都超的博客-CSDN博客_k8s springboot

- -
K8S环境机器做部署用,推荐一主双从. Docker Harbor私有仓库,准备完成后在需要使用仓库的机器docker login. 开发机器需要Docker环境,build及push使用. 一、构建基本Springboot工程,本例所用版本及结构如下图. 创建测试代码,简单打印几行log. .

从零开始把 SpringBoot 搬到 K8s 上运行,我用了这几步!

- - 掘金 后端
咱们的 K8s 入门和实践,在经历了三篇理论知识的后,相信各位都已经期待许久(可能的吧),就差私信我,你整着理论整半天有啥用,本大人写的程序怎么能放到 K8s 上运行. 别急,今天这篇文章就带你从写第一行代码开始,一步步教你把程序放到 K8s 跑起来. 这次咱们先用 Spring Boot开发的程序做个例子,后面再写一篇怎么把 Spring Boot 应用放到 K8s 上运行.

(转)正确、安全地停止SpringBoot应用

- - jackyrong
Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行、产品级别的基于Spring框架的应用,大部分Spring Boot应用只需要非常少的配置就可以快速运行起来,是一个与微服务(MicroServices)相当契合的微框架.

k8s外网如何访问业务应用之Service 池化pod

- - IT瘾-geek
一、废话:先讲述一个k8s重要概念,我觉得这个概念是整个k8s集群实现微服务的最核心的概念. Service定义了Pod的逻辑集合和访问该集合的策略,是真实服务的抽象. Service提供了一个统一的服务访问入口以及服务代理和发现机制,用户不需要了解后台Pod是如何运行. 只需要将一组跑同一服务的pod池化成一个service,k8s集群会自动给这个service分配整个集群唯一ip和端口号(这个端口号自己在yaml文件中定义),一个service定义了访问pod的方式,就像单个固定的IP地址和与其相对应的DNS名之间的关系.

将应用从 SpringCloud 迁移到 k8s - Rason's Blog

- -
最近花了几天时间看了一下 k8s 和 istio 的文档,对容器化运维以及服务网格有了基础的了解. 俗话说读万卷书不如行万里路,于是先尝试用 minikube 练一下手,将现有了一个 Spring Cloud 项目迁移到 k8s 上来. 粗略地整理了一个整个流程,主要有以下几个改动点:. 安装 kubectl 和 minikube.

k8s 部署 skywalking 并将 pod 应用接入链路追踪

- - SegmentFault 最新的文章
前面写了两篇文章介绍使用 docker 部署 spring boot 和 tomcat 项目,并将其接入skywalking,这篇文章主要介绍使用 k8s 部署 skywalking 并将 pod 应用接入链路追踪. 二、使用 helm 部署 skywalking. 在 k8s 中使用 helm 的前提是需要先安装 helm 客户端,关于 helm 的安装可以查看官方文档.

使用Jenkins一键打包部署SpringBoot应用,就是这么6! - 掘金

- -
SpringBoot实战电商项目mall(25k+star)地址:. 任何简单操作的背后,都有一套相当复杂的机制. 本文将以SpringBoot应用的在Docker环境下的打包部署为例,详细讲解如何使用Jenkins一键打包部署SpringBoot应用. Jenkins是开源CI&CD软件领导者,提供超过1000个插件来支持构建、部署、自动化,满足任何项目的需要.

SpringBoot-Metrics监控

- -
Metrics基本上是成熟公司里面必须做的一件事情,简单点来说就是对应用的监控,之前在一些技术不成熟的公司其实是不了解这种概念,因为业务跟技术是相关的. 当业务庞大起来,技术也会相对复杂起来,对这些复杂的系统进行监控就存在必要性了,特别是在soa化的系统中,完整一个软件的功能分布在各个系统中,针对这些功能进行监控就更必要了.

3 种发布策略,解决 K8s 中快速交付应用的难题

- - DockOne.io
作者 | 郝树伟(流生)阿里云高级研发工程师. 软件技术更新换代很快,但我们追求的目标是一直不变的,那就是在安全稳定的前提下,增加应用的部署频率,缩短产品功能的迭代周期,这样的好处就是企业可以在更短的时间内获得产品的价值、更快地获得客户反馈和响应客户需求,从而进一步提升产品的竞争力;除此之外,企业还可以释放更多的资源投入到创新业务的研发上,创造更多的价值,这是一个良性循环的过程.

更新应用时,如何实现 K8s 零中断滚动更新?

- - DockOne.io
作者 | 子白(阿里云开发工程师)、溪恒(阿里云技术专家). <关注阿里巴巴云原生公众号,回复 排查 即可下载电子书>. 《深入浅出 Kubernetes》一书共汇集 12 篇技术文章,帮助你一次搞懂 6 个核心原理,吃透基础理论,一次学会 6 个典型问题的华丽操作. Kubernetes 集群中,业务通常采用 Deployment + LoadBalancer 类型 Service 的方式对外提供服务,其典型部署架构如图 1 所示.