首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes服务的外部连接IP地址是什么?

问Kubernetes服务的外部连接IP地址是什么?
EN

Stack Overflow用户
提问于 2020-03-08 07:21:48
回答 1查看 854关注 0票数 0

我尝试制作简单的Kubernetes Pods和服务的使用迷你库贝仪表板。首先,我使用以下yaml生成Kubernetes mysql服务。

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: blog-db
  labels:
    app: blog-mysql
spec:
  containers:
  - name: blog-mysql
    image: mysql:latest
    env:
      - name: MYSQL_ROOT_PASSWORD
        value: password
      - name: MYSQL_PASSWORD
        value: password
      - name: MYSQL_DATABASE
        value: test
    ports:
      - containerPort: 3306

---
apiVersion: v1
kind: Service
metadata:
  name: blog-db-svc
spec:
  selector:
    app: blog-mysql
  ports:
  - name: mysql
    port: 3306
    protocol: TCP
    targetPort: 3306
  externalIPs:
  - 10.96.10.10

mysql服务是成功生成的。但是我的前端应用程序停靠程序映像是用Spring构建的,所以我必须将正确的mysql连接url分配到application.properties文件中,如下所示,

代码语言:javascript
复制
# ==============================================================
# = MySQL DataSource properties
# ==============================================================
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://10.96.10.10:3306/test?characterEncoding=utf8&serverTimezone=Asia/Seoul
spring.datasource.username = root
spring.datasource.password = password

我将ip地址10.96.10.10的外部ip服务资源输入到spring引导application.properties文件中。但这种连接并不成功。我使用kubectl cli命令检查了mysql服务属性,

代码语言:javascript
复制
> kubectl get svc
NAME          TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
blog-db-svc   ClusterIP   10.104.29.31   10.96.10.10   3306/TCP   30m
kubernetes    ClusterIP   10.96.0.1      <none>        443/TCP    2d

我将每个ip地址插入到我的码头容器的application.properties中。但是mysql连接的每一个努力都失败了。如何为mysql连接在kubernetes服务资源上设置正确的外部ip?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-08 07:56:09

如果在kubernetes集群中运行的mysql和spring引导应用程序都运行在kubernetes集群中,那么就不需要使用外部IP从spring引导应用程序连接到mysql。外部IP用于从kubernetes外部访问运行在kubernetes内部的东西。如果它们都运行在同一个命名空间中,可以使用servicename:port i.e blog-db-svc:3306来引用spring应用程序中的mysql。如果mysql和spring引导应用程序位于不同的名称空间中,那么您可以在spring名称空间中创建一个本地服务,以引用位于不同名称空间中的mysql服务。

代码语言:javascript
复制
kind: Service
apiVersion: v1
metadata:
  name: service-y
  namespace: namespace-a
spec:
  type: ExternalName
  externalName: service-x.namespace-b.svc.cluster.local
  ports:
  - port: 3306

下面是一个关于如何在minikube中使用mysql与spring引导的指南。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60585342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档