当我启动mysql-service和我的应用程序服务(user-service)时,用户服务抛出以下错误。但在码头集装箱中服务工作良好。
com.mysql.cj.jdbc.exceptions。通信异常:通信链路故障
最后一个成功发送到服务器的数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。网址>com.mysql.cj.jdbc.exceptions。SQLError.createCommunicationsException(SQLError.java:175)~[mysql-connector-j-8.0.33.jar!/:8.0.33]网址>com.mysql.cj.jdbc.exceptions。SQLExceptionsMapping.translateException(SQLException Mapping.java:64)~[mysql-connector-j-8.0.33.jar!/:8.0.33]请访问com.mysql.cj.jdbc。ConnectionImpl.createNewIO(ConnectionImple.java:825)~[mysql-connector-j-8.0.33.jar!/:8.0.33]请访问com.mysql.cj.jdbc。连接实施。(ConnectionImpl.java:446)~[mysql-connector-j-8.0.33.jar!/:8.0.33]请访问com.mysql.cj.jdbc。ConnectionImpl.getInstance(ConnectionImple.java:239)~[mysql-connector-j-8.0.33.jar!/:8.0.33]请访问com.mysql.cj.jdbc。非注册驱动程序.connect(NonRegisteringDriver.java:188)~[mysql-connector-j-8.0.33.jar!/:8.0.33]位于com.zaxxer.hikari.util。DriverDataSource.getConnection(DriverDataSource.java:138)~[HikariCP-5.0.1.jar!/:na]在com.zaxxer.hikari.pool。PoolBase.newConnection(PoolBase.java:359)~[HikariCP-5.0.0.1.jar!/:na]在com.zaxxer.hikari.pool。PoolBase.newPoolEntry(PoolBase.java:201)~[HikariCP-5.0.1.jar!/:na]在com.zaxxer.hikari.pool。HikariPool.createPoolEntry(HikariPool.java:470)~[HikariCP-5.0.1.jar!/:na]在com.zaxxer.hikari.pool。HikariPool.checkFailFast(HikariPool.java:561)~[HikariCP-5.0.1.jar!/:na]在com.zaxxer.hikari.pool。HikariPool公司。(HikariPool.java:100)~[HikariCP-5.0.1.jar!/:na]位于com.zaxxer.hikari.HikariDataSource.getConnection(HikariData Source.java:112)~[HikariCP-5.0.1.jar!/:na]在org.hibernate.engine.jdbc.connections.internal上。数据源连接提供者Impl.getConnection(DatasourceConnectionProviderImpl.java:122)~[hibernate-core-6.2.6.Final.jar!/:6.2.6.Final]网址:org.hibernate.engine.jdbc.env.internal。JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess。获取连接(JdbcEnvironmentInitiator.java:316)~[hibernate-core-6.2.6.Final.jar!/:6.2.6.Final]
这是我的配置文件docker-compose.yml公司
版本:“3”服务:mysqldb-docker:图片:mysql:8.0容器名称:mysqldb网络:-app-mysql应用程序环境:-MYSQL_ROOT_PASSWORD=根-MYSQL_DATABASE=航班预订端口:- "3306:3306"卷:- ./数据库:/var/lib/mysql用户服务:图片:用户服务:1.0内部版本:上下文:/用户服务container_name:用户服务端口:- "8081:8080"网络:-app-mysql应用程序依赖(_O):-mysqldb-docker环境:-SPRING_DATASOURCE_DB_HOST=mysqldb-docker-SPRING_DATASOURCE_URL=数据库:mysql://mysqldb-service:3306/flight_booking?createDatabaseIfNotExist=true-SPRING_DATASOURCE_USERNAME=根-SPRING_DATASOURCE_PASSWORD=根#卷卷:mysqldb-docker:网络:app-mysql:
mysqldb-部署.yaml
#mysqldb-部署.yamlapi版本:apps/v1种类:部署元数据:名称:mysqldb-deployment规格:副本:1选择器:匹配标签:应用程序:mysqldb模板:元数据:标签:应用程序:mysqldb规格:容器:-名称:mysqldb图片:mysql:8.0端口:-集装箱港口:3306名称:mysqldb环境:-名称:MYSQL_ROOT_PASSWORD值:root-名称:MYSQL_DATABASE值:flight_booking卷装载:-name:mysqldb-persistent-storage#引用PVC名称装载路径:/var/lib/mysql卷:-name:mysqldb-persistent-storage#定义卷名persistentVolume索赔:claimName:mysqldb-pvc#引用您之前创建的pvc名称
mysqldb-service.yaml
api版本:v1种类:服务元数据:名称:mysqldb-service规格:选择器:应用程序:mysqldb端口:-端口:3306
mysqldb-pv.yaml
apiVersion版本:v1种类:持久卷元数据:名称:mysqldb-pv规格:容量:storage:5Gi#设置所需的存储大小访问模式:-ReadWriteOnce#根据您的用例进行调整persistentVolumeReclaimPolicy:保留storageClassName:standard#设置适当的存储类主机路径:path:/path/to/host/mysqldb-data#将主机路径调整到所需位置
mysqldb-pvc.yaml
api版本:v1kind:PersistentVolumeClaim(永久卷声明)元数据:名称:mysqldb-pvc规格:访问模式:-ReadWriteOnce#必须与PV中的访问模式匹配资源:请求:存储:5Gi#必须与PV中的存储大小匹配
用户服务部署.yaml
api版本:apps/v1种类:部署元数据:name:用户服务部署规格:replicas:1#设置所需的副本数量选择器:匹配标签:应用程序:用户服务模板:元数据:标签:应用程序:用户服务规格:容器:-名称:用户服务图片:sweetyrv/flight_booking:用户服务图像拉动策略:IfNotPresent端口:-集装箱港口:8081环境:-名称:MYSQL_DATABASE值:飞行预订-名称:MYSQL_ROOT_PASSWORD值:root-名称:SPRING_DATASOURCE_DB_HOST值:mysqldb-service-名称:SPRING_DATASOURCE_URL值:jdbc:mysql://mysqldb-service:3306/flight_booking?createDatabaseIfNotExist=true-名称:SPRING_DATASOURCE_USERNAME值:根-名称:SPRING_DATASOURCE_PASSWORD值:root
用户服务.yaml
api版本:v1种类:服务元数据:名称:user-service规格:选择器:应用程序:用户服务端口:-协议:TCP端口:8081目标端口:8081
我尝试过检查网络策略、主机名解析,甚至MySQL服务器配置。这种配置在Docker设置中有效,但在Kubernetes中无效,这一事实令人困惑。
如果您能提供任何关于导致此问题的原因以及解决方法的见解,我将不胜感激。如果您需要任何其他详细信息,请告诉我。谢谢您!