Kubernetes服务的外部连接IP地址是多少?

Kubernetes服务的外部连接IP地址是多少?,kubernetes,minikube,Kubernetes,Minikube,我尝试使用minikube仪表板制作简单的Kubernetes吊舱和服务。首先,我使用以下yaml生成Kubernetes mysql服务 apiVersion: v1 kind: Pod metadata: name: blog-db labels: app: blog-mysql spec: containers: - name: blog-mysql image: mysql:latest env: - name: MYSQL_ROOT_

我尝试使用minikube仪表板制作简单的Kubernetes吊舱和服务。首先,我使用以下yaml生成Kubernetes mysql服务

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服务已成功生成。但是我的前端应用程序docker映像是用Spring Boot构建的,所以我必须将正确的mysql连接url分配到application.properties文件中,如下所示

# ==============================================================
# = 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
我在spring boot application.properties文件中键入服务资源的外部ip的ip地址10.96.10.10。但这种联系并不成功。我用kubectl cli命令检查了mysql服务属性

> 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
>kubectl获得svc
名称类型CLUSTER-IP外部IP端口年龄
博客db svc ClusterIP 10.104.29.31 10.96.10.10 3306/TCP 30m
kubernetes ClusterIP 10.96.0.1 443/TCP 2d

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

如果mysql和spring boot应用都在kubernetes集群内运行,那么您不使用外部ip从spring boot应用连接到mysql。外部ip用于从外部访问kubernetes内部运行的内容库伯内特斯。您可以使用
servicename:port
blog db svc:3306
从spring boot应用程序引用mysql,如果它们都在同一命名空间中运行。 如果mysql和spring boot app位于不同的命名空间中,那么您可以在spring boot app命名空间中创建一个本地服务,以引用位于不同命名空间中的mysql服务

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 boot的示例。

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

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 boot的文章。

kubectl的输出是什么?请描述svc博客db svc并验证mysql pod是否已启动并运行感谢回复。博客mysql包含mysql服务器并返回预期值。pod已确认成功运行。服务上的descripe命令是否显示端点?spring boot应用程序是在kubernetes内运行还是在kubernetes外运行?该命令显示端点。我在名称空间内部和外部进行测试。但是两者都失败了。kubectl的输出是什么描述svc blog db svc并验证mysql pod是否已启动并运行感谢回复。博客mysql包含mysql服务器并返回预期值。pod已确认成功运行。服务上的descripe命令是否显示端点?spring boot应用程序是在kubernetes内运行还是在kubernetes外运行?该命令显示端点。我在名称空间内部和外部进行测试。但两者都失败了。