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,测试环境下很好用。生产上的用法是方法一,基于域名来的。

posted @ 2022-09-16 00:08  凌康  阅读(192)  评论(0编辑  收藏  举报