首页 > 编程语言 >在 Kubernetes(k8s) 上部署 Spring Boot 应用程序:应用程序使用环境变量中的错误端口属性

在 Kubernetes(k8s) 上部署 Spring Boot 应用程序:应用程序使用环境变量中的错误端口属性

时间:2023-07-01 20:23:05浏览次数:86  
标签:Service Kubernetes 启动 Spring value server 应用程序 port

如果我使用此配置启动部署(即先启动服务,然后启动部署)则 pod 在启动期间会失败。

在日志中,我可以找到以下消息:

***************************
APPLICATION FAILED TO START
***************************

Description:

Binding to target
org.springframework.boot.autoconfigure.web.ServerProperties@42f93a98 failed:

Property: server.port
Value: tcp://10.98.151.181:8080
Reason: Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Integer' for property 'port'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [java.lang.Integer]

注意:10.98.151.181 是服务的集群 IP,可以在 Minikube 仪表板中看到。

如果我首先触发实际的 Deployment,则应用程序启动成功,然后我可以启动服务。不过官方文档建议先启动服务,然后部署:https://kubernetes.io/docs/concepts/configuration/overview/#services

对我来说,看起来 Service 将属性 server.port 设置为环境变量,而在 Service 之后启动的 Spring Boot 应用程序意外地将其解释为 Spring server.port。

任何想法如何解决这个问题?

Answers
对我来说,看起来服务将属性 server.port 设置为环境变量

不,kubernetes 它正在公开“docker 兼容”链接 env-vars,因为您的Service被命名为server,最终成为SERVER_PORT=tcp://thing:8080因为它试图“有帮助”

解决方案是给您的Service一个更具描述性的名称,或者屏蔽掉有问题的 env-var:

containers:
- name: server
env:
- name: SERVER_PORT
value: '' # you can try the empty string,
# or actually place the port value with
# value: '8080'
# ensure it is a **string** and not `value: 8080`

标签:Service,Kubernetes,启动,Spring,value,server,应用程序,port
From: https://www.cnblogs.com/bitterteaer/p/17519873.html

相关文章

  • 多端全栈项目实战:大型商业级代驾业务全流程落地SpringCloudAlibaba+Mysql+Redis+Docke
    多端全栈项目实战:大型商业级代驾业务全流程落地SpringCloudAlibaba+Mysql+Redis+Docker+Uniapp+Vue3随着移动互联网的快速发展和智能手机的普及,代驾服务成为了一个日益火热的行业。在这个行业中,如何构建一个具备商业级可靠性和扩展性的代驾业务系统成为了关键问题。本文将介绍一......
  • SpringBoot3.0最新深入浅出从入门到项目实战,突出Web应用痛点解决方案
    SpringBoot3.0最新深入浅出从入门到项目实战,突出Web应用痛点解决方案SpringBoot已经成为Java开发中最流行的框架之一,它提供了一种快速构建、易于扩展的方式,使开发人员能够更加专注于业务逻辑而不是繁琐的配置。而最新的SpringBoot3.0版本将进一步改善开发体验,并提供更多的解决方......
  • SpringBoot 如何优雅的进行全局异常处理?
    在SpringBoot的开发中,为了提高程序运行的鲁棒性,我们经常需要对各种程序异常进行处理,但是如果在每个出异常的地方进行单独处理的话,这会引入大量业务不相关的异常处理代码,增加了程序的耦合,同时未来想改变异常的处理逻辑,也变得比较困难。这篇文章带大家了解一下如何优雅的进行全局异......
  • 绝无仅有的SpringBoot前后端分离项目《盈利宝》
    每天都在制造矛盾并解决矛盾的路上程序员的主要矛盾不是书和资料多不多的矛盾而是学着学着发现知识又更新了时间就像一台永不停歇的永动机向前不停地运作年初的flag渐行渐远管他前浪,还是后浪?能浪的浪,才是好浪!今天带你解锁 Springboot+Vue项目花了很长时间从头到尾从无到有地完......
  • 绝无仅有的SpringBoot+Vue前后端分离项目《盈利宝》
    ​每天都在制造矛盾并解决矛盾的路上程序员的主要矛盾不是书和资料多不多的矛盾而是学着学着发现知识又更新了时间就像一台永不停歇的永动机向前不停地运作年初的flag渐行渐远管他前浪,还是后浪?能浪的浪,才是好浪!今天带你解锁 Springboot+Vue项目花了很长时间从头到尾......
  • 【springboot】最初入门
    SpringBoot不需要配置容器,是因为使用了嵌入式容器,默认使用tomcat启动,默认端口8080。当然,用传统的方式打成war包,放入单独的tomcat也是可以的。SpringBoot项目使用main函数启动,一般放在XXXApplication类里,需要加@SpringBootApplication注解MavenWrapper可以不需要提前下载好Mave......
  • Spring Cloud灰度部署
    1、背景(灰度部署)在我们系统发布生产环境时,有时为了确保新的服务逻辑没有问题,会让一小部分特定的用户来使用新的版本(比如客户端的内测版本),而其余的用户使用旧的版本,那么这个在SpringCloud中该如何来实现呢?负载均衡组件使用:SpringCloudLoadBalancer2、需求3、实现思路通过翻阅S......
  • 【spring cloud学习】3、Eureka Server注册中心
    Eureka本身是Netflix开源的一款注册中心产品,并且SpringCloud提供了相应的集成封装。选择Eureka作为注册中心实例来讲解是出于以下原因:(1)Eureka在业界的应用十分广泛,整个框架经受住了Netflix严酷生产环境的考验。(2)除了Eureka注册中心外,Netflix的其他服务治理功能也十分强大,包括Ribbo......
  • springboot整合mongodb
    文章目录自己的源码新建项目新建测试类基于MongoRepository(推荐)(个人推荐,简单,方便)基于Respository测试类:(了解)基于MongoTemplate的测试类自己的源码https://gitee.com/stackR/springboot-mongodb新建项目新建springboot项目,引入,spring-boot-starter-data-mongodb和lombo......
  • mybatis-plus springboot无法创建bean
    在学习尚硅谷的mybatis-plus中,发现依托代码无法创建userMapperbean,在网上找了各种办法,终于是找到了一个大无语的办法。只要将springboot的版本主动降到2.x.x之后便可以创建。可能mp是国人写的目前对springboot3.x.x并没有做适配,但是更进一步的方法正在思想中。packagecom.exam......