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. .

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

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

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

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

CentOS7 安装 K8S

- - 企业架构 - ITeye博客
前提:VirtualBox CentOS7. 物理机IP   192.168.18.8. 虚拟机1IP:192.168.18.100(VMaster master). 虚拟机2IP:192.168.18.101(VServer1 node1). 虚拟机3IP:192.168.18.102(VServer2 node2).

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

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

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

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

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

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

SpringBoot的事务管理

- - ImportNew
Springboot内部提供的事务管理器是根据autoconfigure来进行决定的. 比如当使用jpa的时候,也就是pom中加入了spring-boot-starter-data-jpa这个starter之后(之前我们分析过 springboot的自动化配置原理). Springboot会构造一个JpaTransactionManager这个事务管理器.

springboot aop日志记录

- - 编程语言 - ITeye博客
一、POM增加AOP JAR包. 三、SysAspect类. 注:@annotation(cn.com.hfai.controller.system.Logweb) 一定要指定Logweb类. 四、在Controller类的方法之上加上注解 @Logweb 即可. 注:这个只是打印在控制台上,若想放到数据库中,则需要增加操作数据库的业务代码.

k8s docker集群搭建 - CSDN博客

- -
一、Kubernetes系列之介绍篇.     - 一次构建,到处运行. 2.什么是kubernetes.   首先,他是一个全新的基于容器技术的分布式架构领先方案. Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg). 在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性.