必要条件 K8S环境机器做部署用,推荐一主双从。 推荐安装文档

Docker Harbor私有仓库,准备完成后在需要使用仓库的机器docker login。

开发机器需要Docker环境,build及push使用

基础配置准备

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

创建测试代码,简单打印几行log

二、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"]

构建镜像并推送 构建镜像,执行如下命令

构建镜像日志如下

完成后 docker images可以查看打包的镜像

命令窗口执行 docker push REPOSITORY推送至docker harbor

docker harbor可以查看到推送的镜像

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

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

新开窗口分别查看3个pod的日志,然后访问 k8s master节点IP+service对外开放端口访问springboot应用,我这里使用 http://192.168.1.250:30090/test/test, 多刷新几次可以看到pod直接做了负载,如下图:

pods1:

pods2:

pods3:

运行 kubectl delete -f dockertest.yaml可以删除pods与service

修改dockertest.ymal 中replicas数量后,运行 kubectl apply -f dockertest.yaml可以扩容或收缩副本数量

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐