【发布时间】:2019-12-06 21:44:32
【问题描述】:
我从 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"]
【问题讨论】:
-
这可能是一个复制粘贴错误,但似乎在 Service 和 PersistentVolume 定义之间缺少 YAML 文档分隔符
---? -
是的,抱歉忘记添加 --- 一旦我复制了 yaml 代码(我在单独的文件中有这些 yaml 定义)
-
如果你这样做
curl http://pod_ip:8080会有更好的结果吗?这样我们应该能够判断问题是来自您的应用还是您的服务配置。 -
不,我得到相同的结果,在 minikube 内运行 curl 172.17.0.4:8080(在运行 minikube ssh 之后),其中 172.17.0.4 是 pod_ip,它给出:{"timestamp":1564484568041,"status" :404,"error":"Not Found","message":"No message available","path":"/"} ...但请注意,当应用程序在我的计算机上运行时,它工作得很好://
-
好的,所以问题不在于您的 K8S 服务,而可能来自您在 K8S 中的应用程序配置。你在 K8S 中启动应用后查看 spring-boot 日志了吗?
标签: spring-boot docker kubernetes web-deployment minikube