K8S部署SpringBoot应用

必要条件

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

基础配置准备

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

K8S部署SpringBoot应用_第1张图片
创建测试代码,简单打印几行log
K8S部署SpringBoot应用_第2张图片

二、maven配置

1. properties配置
 
     pasq
     
     192.168.1.253:8081
 
2. plugins配置

    
        org.springframework.boot
        spring-boot-maven-plugin
    
    
    
        com.spotify
        
        dockerfile-maven-plugin
        1.4.10
        
            
            src/main/docker/Dockerfile
            ${docker.repostory}/${docker.image.prefix}/${project.artifactId}
            
            ${project.version}
            
                
                target/${project.build.finalName}.jar
            
        
    

三、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. 构建镜像,执行如下命令
    K8S部署SpringBoot应用_第3张图片
    构建镜像日志如下
    K8S部署SpringBoot应用_第4张图片
  2. 完成后docker images可以查看打包的镜像
    在这里插入图片描述
  3. 命令窗口执行docker push REPOSITORY推送至docker harbor
    K8S部署SpringBoot应用_第5张图片
    docker harbor可以查看到推送的镜像
    K8S部署SpringBoot应用_第6张图片

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
K8S部署SpringBoot应用_第7张图片

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

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

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

你可能感兴趣的:(K8S部署Springboot,Dockerfile打包镜像,dockerfile,springboot+k8s,k8s集成springboot,解决方案,环境构建,系统整合)