【发布时间】:2022-01-13 08:23:52
【问题描述】:
非常感谢任何帮助,我有几个使用默认配置文件在 aks 中运行的 spring boot 应用程序,我正在尝试使用 helm 从我的 deployment.yaml 更改配置文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "helm-chart.fullname" . }}
labels:
app.kubernetes.io/name: {{ include "helm-chart.name" . }}
helm.sh/chart: {{ include "helm-chart.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app.kubernetes.io/name: {{ include "helm-chart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "helm-chart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 8080
protocol: TCP
env:
- name: SPRING_PROFILES_ACTIVE
value: "dev"
我的结果是我的 pod 被置于 crashloopbackoff 状态
启动 ApplicationContext 时出错。要显示条件报告,请在启用“调试”的情况下重新运行您的应用程序。
2022-01-12 12:42:49.054 错误 1 --- [main] o.s.b.d.LoggingFailureAnalysisReporter:
应用程序启动失败
说明:
配置为侦听端口 8207 的 Tomcat 连接器无法启动。该端口可能已在使用中,或者连接器可能配置错误。
我尝试删除应用程序的现有 pod 和服务并进行了新部署,但仍然遇到相同的错误..
尝试的方法:(在所有方法中创建docker文件,创建pod,pod中的应用程序设置为dev配置文件,但问题是它无法启动应用程序并出现上述错误,当我删除配置文件设置时,每件事都工作得很好,期望应用程序设置为默认配置文件)
- 在 docker 文件中:
选项a。 CMD ["java","-jar","/app.jar", "--spring.profiles.active=dev"] 选项 b。 CMD ["java","-jar","-Dspring.profiles.active=dev","/app.jar"]
- 如上所述在 deployment.yml 中进行了更改
ps:我在 src/main/resources 上的应用程序中没有属性文件,我只有 application-(env).yml 文件。
想法是首先设置配置文件,然后根据配置文件选择 application_(env).yml
helm 的输出
Release "app" has been upgraded. Happy Helming!
NAME: email-service
LAST DEPLOYED: Thu Jan 13 16:09:46 2022
NAMESPACE: default
STATUS: deployed
REVISION: 19
TEST SUITE: None
USER-SUPPLIED VALUES:
image:
repository: 957123096554.dkr.ecr.eu-central-1.amazonaws.com/app
service:
targetPort: 8207
COMPUTED VALUES:
image:
pullPolicy: Always
repository: 957123096554.dkr.ecr.eu-central-1.amazonaws.com/app-service
tag: latest
replicaCount: 1
service:
port: 80
targetPort: 8207
type: ClusterIP
感谢您的帮助,谢谢
【问题讨论】:
-
您使用的是哪个 Kubernetes 版本?您将哪个基础图像用于您的图像?您是否尝试过一些解决方案,例如this one?
-
我使用 alpine docker 基础镜像,我的 k8s 版本是 Client Version: 1.21 Server Version: version.Info Major:"1", Minor:"19+"
-
我的问题是我的 pod 与应用程序一起运行但使用默认配置文件没有问题,我遇到的问题是当我尝试添加默认配置文件时,我最终设置了配置文件在 pod 中,但它没有启动应用程序,说明“原因:java.net.BindException:地址不可用”.. 我不知道是什么问题。
-
您不是在
deployment.yaml中指定,那个配置文件是test吗?当它使用test配置文件运行时(是吗?),tomcat 端口是否在配置中定义为 8214? -
抱歉更正了 deployment.yml 它是 dev profile 而不是 test 还添加了上面的 helm 调试输出。
标签: spring amazon-web-services spring-boot kubernetes