kubernetes不同pod之间调用(四)
kubernetes不同pod之间调用(四)
k8s系列
源自我工作上的实际场景,记录于此。
kubernetes不同服务间的调用、kubernetes不同容器间的调用、kubernetes不同…
今天在群里看到有人问A容器怎么调用B容器的数据库,其实也是很简单的。
方式一:基于域名
假设你的Apod是一个springboot应用,Bpod是一个mysql,内部端口3306。k8s帮我们搞好域名了,直接使用Bpod就会解析到对应ip。
所以Apod中的数据连接应该写成这样
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://Bpod:3306/db?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
注意,上面的情况需要在同一命名空间下namespace
方式二:基于网卡ip
假设你在master上部署,master的网卡分配ip是192.168.1.1
那么你先部署Bpod,使用kubectl get svc
获取Bpod的对外端口30001(假设)
那么此时你Apod的数据库连接可以写成这样:
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://192.168.1.1:30001/db?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
获取不同命名空间时使用 kubectl get svc -n namespaceName,不用-n时默认的命名空间是default
然后部署Apod
这种情况可以覆盖不同命名空间下的pod,测试环境下很好用。生产上的用法是方法一,基于域名来的。