Minikube springboot 收到请求但没有正确响应
Minikube springboot receive request and doesn't respond correctly
我刚开始使用 kubernetes 和 docker,但遇到了一个问题。
在将其转换为 docker 图像(使用 minikube 的 docker)后,在 minikube 上部署了一个 springboot 应用程序...该应用程序已在线并尽可能好地接收请求在下面的屏幕截图中看到,但没有按预期回复。
例如,当我正常部署应用程序时(像往常一样在我的计算机上)一切正常,我可以继续所有 html 页面等,但是一旦部署在 minikube 中,它就无法正确回复。 (所有工作部分是 spring 的 favicon 的接收)
用于部署应用程序的 YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: esse-deployment-1
labels:
app: esse
spec:
replicas: 1
selector:
matchLabels:
app: esse-1
template:
metadata:
labels:
app: esse-1
spec:
containers:
- image: mysql:5.7
name: esse-datasource
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: esse_password
- image: esse_application
name: esse-app-1
imagePullPolicy: Never
ports:
- containerPort: 8080
volumes:
- name: esse-1-mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-persistent-storage-claim
---
apiVersion: v1
kind: Service
metadata:
name: esse-service-1
spec:
selector:
app: esse-1
ports:
- protocol: TCP
port: 8080
type: NodePort
----
kind: PersistentVolume
apiVersion: v1
metadata:
name: mysql-persistent-storage
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/home/docker/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql-persistent-storage-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 200Mi
Docker 构建图像的文件:
FROM openjdk:8
ADD ESSE_Application.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
我可以看到您有 .yml 文件来定义部署和服务,但我看不到 "Ingress"。需要 kind: Route
的 .yml 文件来告诉 kubernetes 应该有一个外部 url 指向您的服务;最小 Ingress 资源示例:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /testpath
backend:
serviceName: test
servicePort: 80
**请不要按字面理解这段代码,我只是想在这里起草一些示例代码,可能与您的 naming/data :)
不完全匹配
终于解决了问题
一切正常,因为我从 Eclipse IDE 启动应用程序,并且在打包 .jar 文件时,jps[= /webapp/WEB-INF/jsps 文件夹中包含的 29=] 文件未包含在 .jar 文件中,甚至包含它们也会抛出 <resources>
文件中的标签没有解决问题,因为 jar 包装不适合 jsp 文件。
我通过在 pom.xml 文件中添加 <packaging>war</packaging>
来更改打包方法来解决问题,因为 .jsp 文件感觉很舒服在 .war 文件中。
感谢@Marc 的帮助。
我刚开始使用 kubernetes 和 docker,但遇到了一个问题。
在将其转换为 docker 图像(使用 minikube 的 docker)后,在 minikube 上部署了一个 springboot 应用程序...该应用程序已在线并尽可能好地接收请求在下面的屏幕截图中看到,但没有按预期回复。
例如,当我正常部署应用程序时(像往常一样在我的计算机上)一切正常,我可以继续所有 html 页面等,但是一旦部署在 minikube 中,它就无法正确回复。 (所有工作部分是 spring 的 favicon 的接收)
用于部署应用程序的 YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: esse-deployment-1
labels:
app: esse
spec:
replicas: 1
selector:
matchLabels:
app: esse-1
template:
metadata:
labels:
app: esse-1
spec:
containers:
- image: mysql:5.7
name: esse-datasource
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: esse_password
- image: esse_application
name: esse-app-1
imagePullPolicy: Never
ports:
- containerPort: 8080
volumes:
- name: esse-1-mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-persistent-storage-claim
---
apiVersion: v1
kind: Service
metadata:
name: esse-service-1
spec:
selector:
app: esse-1
ports:
- protocol: TCP
port: 8080
type: NodePort
----
kind: PersistentVolume
apiVersion: v1
metadata:
name: mysql-persistent-storage
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/home/docker/data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql-persistent-storage-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 200Mi
Docker 构建图像的文件:
FROM openjdk:8
ADD ESSE_Application.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
我可以看到您有 .yml 文件来定义部署和服务,但我看不到 "Ingress"。需要 kind: Route
的 .yml 文件来告诉 kubernetes 应该有一个外部 url 指向您的服务;最小 Ingress 资源示例:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /testpath
backend:
serviceName: test
servicePort: 80
**请不要按字面理解这段代码,我只是想在这里起草一些示例代码,可能与您的 naming/data :)
不完全匹配终于解决了问题
一切正常,因为我从 Eclipse IDE 启动应用程序,并且在打包 .jar 文件时,jps[= /webapp/WEB-INF/jsps 文件夹中包含的 29=] 文件未包含在 .jar 文件中,甚至包含它们也会抛出 <resources>
文件中的标签没有解决问题,因为 jar 包装不适合 jsp 文件。
我通过在 pom.xml 文件中添加 <packaging>war</packaging>
来更改打包方法来解决问题,因为 .jsp 文件感觉很舒服在 .war 文件中。
感谢@Marc 的帮助。