k8s部署一个带有mysql应用_k8s部署springboot容器连接mysql容器

前提准备:

安装好Docker和Kubernetes,初学者的话可以部署单节点集群,即Docker for Mac/Windows,上一篇文章我已经写过如何搭建单节点集群。如果是多节点集群调度,则可以参考这篇文章。

部署前提:

先编写一个springboot的一个demo,没接触过springboot的同学可以参考这篇文章。我这边对springboot的demo做了小小的改动,我是和springboot自身的springboot JPA进行搭建的,没用mybatis或者hibernate进行整合。

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

springboot JPA 简图

还有一个小小的改动是springboot中配置数据库时,是在application.properties文件中先配置成功。然后在进行连接,这一点我觉得扩展性不太好,就手动写个方法去替换文件中数据库配置的参数,以满足通过配置参数连接更多类型的数据库。

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

获取数据库连接信息

我的demo里,template部分采用angular1.0进行编写的,当时是为了学习angular然后嵌套进去的。

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

angular JS

开始部署:

先编写mysql的mysql-deploy.yaml脚本,然后执行kubectl apply -f mysql-deployment.yaml

即可启动mysql容器:

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

mysql-deploy.yaml

接下来编写mysql-service.yaml脚本,然后执行kubectl apply -f mysql-service.yaml

即可启动mysql的Service服务:

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

mysql-service.yaml

由于我才用的是NodePort方式,所以本地可视化工具也可以进行连接,端口使用的是对外暴露的nodePort,如果采用ClusterIP,则需要开启proxy,例如:kubectl proxy --port=8888

下图是采用NodePort方式启动的:

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

可视化工具连接mysql容器

接下来编写myweb-deploy.yaml,注意一点的是现在我们采用容器间相互通讯,所有的网络通讯是在docker所划分的整个网络中,故mysql数据库的地址也必须是docker网络子网中给mysql分配的一个有效IP地址,可以通过查看mysql这个pod的详情进行查看所属IP,命令如下:kubectl describe pod mysql-d7d8c74cc-f7rc4

即可看到IP为10.1.0.62,所以myweb-deploy.yaml脚本中,数据库的地址必须配置为刚才获取到的IP地址,而不是本地的IP或者采用localhost,很多新手在这里容易搞混。

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

mysql pod详情

myweb这个pod是容器网络中,总docker的子网中一个有效的IP地址,然后执行kubectl apply -f web-deployment.yaml

即可创建web服务的pod

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

myweb-deploy.yaml

接下来创建myweb-service.yaml,然后执行kubectl apply -f myweb-service.yaml

即可创建好myweb的Service服务

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

myweb-service.yaml

接下来查看myweb的日志

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

myweb日志

接下来我们查看本机的pod和svc

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

资源状态

发现pod和service都处于running状态,然后通过nodeIP:nodePort的方式调用服务的接口

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

web页面

由于我采用单节点方式部署,容器之外的nodeIP可以是localhost,也可以通过ipconfig查看本机所属网络的具体IP地址,

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

本机IP地址

通过本地所属网络IP,即也属于nodeIP:nodePort方式,访问url后,页面如下

d6835a121bae?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

web页面

这部分springboot的代码以托管到GitHub上,地址如下:k8s-docker-springboot

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Kubernetes(简称K8s)来部署Spring Boot项目和MySQL数据库。下面是一个大致的步骤: 1. 安装和配置Kubernetes集群:首先,你需要安装和配置一个Kubernetes集群。可以使用Minikube(用于本地开发和测试)或者其他云服务商提供的Kubernetes集群。 2. 创建MySQL服务:使用Kubernetes的资源描述文件(比如YAML文件),创建MySQL的Deployment和Service。Deployment定义了如何创建和管理MySQL Pod,而Service则提供了对MySQL Pod的访问。 3. 创建Spring Boot应用的Docker镜像:将你的Spring Boot项目打包成Docker镜像,并上传到一个容器镜像仓库中。你可以使用Dockerfile来定义镜像构建步骤,例如构建和运行Spring Boot应用所需的Java环境。 4. 创建Spring Boot应用的Deployment和Service:使用Kubernetes的资源描述文件,创建Spring Boot应用的Deployment和Service。Deployment定义了如何创建和管理Spring Boot应用的Pod,而Service提供了对Spring Boot应用的访问。 5. 配置Spring Boot应用连接MySQL:在Spring Boot应用的配置文件中,配置数据库连接信息,包括MySQL的主机、端口、用户名、密码等。 6. 部署应用:使用kubectl命令行工具,执行kubectl apply命令来部署MySQL服务和Spring Boot应用。 7. 验证部署:使用kubectl命令行工具,检查Pod和Service的状态,确保MySQL和Spring Boot应用已成功部署并正常运行。 这只是一个大致的步骤,具体实现细节可能因你的环境和需求而有所不同。建议你参考Kubernetes和Docker的官方文档,以及相关的教程和示例代码来进行实际部署

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值