我是 Kubernetes 新手。我正在尝试在 Kubernetes 中部署基于微服务架构的 springboot Web 应用程序。我已经在 OpenStack 上设置了 Kubernetes。所有 Kubernetes 服务都运行良好。
在
部署示例 springboot 应用程序https://www.mkyong.com/spring-boot/spring-boot-hello-world-example-jsp/
我可以在localhost:8080
看到网络应用程序和<'node-ip'>:8080
.
但是我尝试部署的应用程序需要MySQL和rabbitmq,所以我使用yaml
创建了MySQL和rabbitmq服务文件(javaweb.yaml):
javaweb.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql
spec:
type: NodePort
ports:
- protocol: TCP
port: 3306
targetPort: 3306
selector:
app: mysql
---
apiVersion: v1
kind: Service
metadata:
# Expose the management HTTP port on each node
name: rabbitmq-management
labels:
app: rabbitmq
spec:
type: NodePort # Or LoadBalancer in production w/ proper security
ports:
- port: 15672
name: http
selector:
app: rabbitmq
---
apiVersion: v1
kind: Service
metadata:
# The required headless service for StatefulSets
name: rabbitmq
labels:
app: rabbitmq
spec:
ports:
- port: 5672
name: amqp
- port: 4369
name: epmd
- port: 25672
name: rabbitmq-dist
clusterIP: None
selector:
app: rabbitmq
---
apiVersion: v1
kind: Pod
metadata:
name: javaweb
spec:
containers:
- image: chakravarthych/sample:v1
name: war
volumeMounts:
- mountPath: /app
name: app-volume
- image: mysql:5.7
name: mysql
ports:
- protocol: TCP
containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: root123
command: ["sh","-c","service mysql start; tail -f /dev/null"]
- image: rabbitmq:3.7-management
name: rabbitmq
ports:
- name: http
protocol: TCP
containerPort: 15672
- name: amqp
protocol: TCP
containerPort: 5672
command: ["sh","-c","service rabbitmq-server start; tail -f /dev/null"]
- image: tomcat:8.5.33
name: tomcat
volumeMounts:
- mountPath: /usr/local/tomcat/webapps
name: app-volume
ports:
- containerPort: 8080
hostPort: 8080
command: ["sh","-c","/usr/local/tomcat/bin/startup.sh; tail -f /dev/null"]
volumes:
- name: app-volume
emptyDir: {}
当我尝试通过 localhost:8080
访问我的应用程序时或 <'node-ip'>:8080 我看到一个空白页。
命令kubectl get all -o wide
给了我以下输出:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
pod/javaweb 4/4 Running 0 1h 192.168.9.123 kube-node1 <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d <none>
service/mysql NodePort 10.101.253.11 <none> 3306:30527/TCP 1h app=mysql
service/rabbitmq ClusterIP None <none> 5672/TCP,4369/TCP,25672/TCP 1h app=rabbitmq
service/rabbitmq-management NodePort 10.108.7.162 <none> 15672:30525/TCP 1h app=rabbitmq
这表明MySQL和rabbitmq正在运行。
我的问题是如何检查我的应用程序是否可以访问 Kubernetes 中运行的 MySQL 和rabbitmq 服务。
注意:
我只能通过192.168.9.123:15672访问rabbitmq。
我还可以登录 Docker 容器内的 MySQL。
最佳答案
您是否在 springboot pod 上尝试过“kubectl log”?您可能已经知道出了什么问题。
关于mysql - 如何检查部署的应用程序是否可以访问 mysql、rabbitmq 等 Kubernetes 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52063548/