Spring Kubernetes 中的数据源 MySQL

Spring DataSource in Kubernetes for MySQL

我已经在 IBM Cloud 中部署了一个 MySQL 数据库和一个带有 Kubernetes 的 Spring 启动应用程序。 MySQL 数据库有一个部署和一个服务,但它不应该在外面访问,所以我给了他一个集群 ip。但是 Spring 应用程序是负载平衡的,因为它应该对客户端可见。我在 spring 数据源中写的 MySQL 数据源不起作用。在本地情况下,我只写本地主机,但在云中这不起作用?有人知道它是如何工作的吗?

Deployment file: 
apiVersion: apps/v1 
kind: Deployment
metadata:
  name: db
  enviroment: test 
spec:
  selector:
    matchLabels:
      app: mysql
      enviroment: test
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
        enviroment: test
    spec:
      containers:
      - image: de.icr.io/test/mysql:5.7
        name: db
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: ************
        - name: MYSQL_USER
          value: ********
        - name: MYSQL_PASSWORD
          value: ***********
        - name: MYSQL_DATABASE
          value: *******
        ports:
        - containerPort: 3306
          name: db
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql   
      volumes:
         - name: mypvc
           persistentVolumeClaim:
           claimName: mysql-pv-claim

那是我的服务:

apiVersion: v1
kind: Service 
metadata:
  name: mysqlservices 
spec:
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: mysql   
    enviroment: test

我知道你不需要我的持久卷索取,但我发送了它。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
  labels:
   billingType: "monthly"
   region: eu-de
   zone: Frankfurt
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 20Gi
  storageClassName: ibmc-file-bronze

最后 Spring 引导数据源我不知道我将在 url 中为连接写什么。

 <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource"
        primary="true">
        <property name="driverClassName"
            value="com.mysql.jdbc.Driver" />
        <property name="url"
            value="jdbc:mysql://db/nlfb?useSSL=false" />

        <property name="username" value="*****" />
        <property name="password" value="******" />
    </bean>

谨致问候并感谢您的帮助。

您必须使用 Kubernetes Deployments 的服务名称。这与特定部署有关,即如果您的服务名称是 db 并且它位于命名空间 dev 上,那么您必须编写 dev.db