K8S部署SpringBoot应用_都超的博客-CSDN博客_k8s springboot
- -K8S环境机器做部署用,推荐一主双从. Docker Harbor私有仓库,准备完成后在需要使用仓库的机器docker login. 开发机器需要Docker环境,build及push使用. 一、构建基本Springboot工程,本例所用版本及结构如下图. 创建测试代码,简单打印几行log. .
创建测试代码,简单打印几行log
<properties>
<docker.image.prefix>pasq</docker.image.prefix>
<!-- docker harbor地址 -->
<docker.repostory>192.168.1.253:8081</docker.repostory>
</properties>
<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>
#基础镜像,如果本地仓库没有,会从远程仓库拉取
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 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 #容器对外开放端口
kubectl create -f dockertest.yaml
创建Deployment完成后执行 kubectl get pods
如下图,可以看到启动了三个pod
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应用完成。有心得交流的朋友可以私信或留言。