使用K8s部署 java 程序初试
之前学习了spring cloud结合docker ,docker compose来部署项目,但使用docker compose也有很大的局限性:对分布式的支持很有限,需结合swarm等联合使用,所以后边转而学习Kubenates.
关于Kubenates是什么,如何如何强大,这里就啰嗦了,现在分享一下使用K8s部署spring boot程序的一个示例。
1. spring boot项目配置文件主要配置及说明:
1.1 application.yml文件:
项目中用到了mysql以及redis,mysql 和redis 也是使用k8s,由于k8s中的服务会自动根据服务名称生成一些个环境变量,所以这里的MYSQL-SERVICE_SERVICE_HOST,MYSQL-SERVICE_SERVICE_PORT分别对应mysql服务的clusterIp和端口。
1.2 Dockerfile文件:
1.3 项目中使用的maven的docker插件,如图:
1.4 如果项目没什么问题,通过命令打成jar包:
mvn clean package -DskipTests=true docker:build
查看生成的image:图中第一就是我们生成的镜像。
2. k8s ReplicationController 和Service配置:
2.1 ReplicationController配置:
通过命令创建rc:
2.2 Service配置:
同样通过命令创建svc
2.3 通过命令 kubectl get pods查看程序对应pods的启动情况:
我们可以看到,status状态是Running,我们也可以进入pod查看程序的启动情况(这里项目已经成功启动,就不截图了,日志查看命令:kubectl logs -f {podName})
3. 本项目提供了一个index.html页面供测试使用,我们可以通过Service暴露的nodePort端口访问:
通过测试,各项功能正常,部署成功。