如何检查部署的应用程序是否可以访问像mysql、rabbitmq这样的kubernetes服务

tyu7yeag  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(443)

我是Kubernetes的新手。我试图在kubernetes中部署一个基于microservices架构的springbootweb应用程序。我在openstack上安装了kubernetes。所有kubernetes服务都运行良好。
我跟着https://github.com/fabric8io/gitcontroller/tree/master/vendor/k8s.io/kubernetes/examples/javaweb-tomcat-sidecar
在以下位置部署示例springboot应用程序
https://www.mkyong.com/spring-boot/spring-boot-hello-world-example-jsp/
我可以在 localhost:8080 以及 <'node-ip'>:8080 .
但是我尝试部署的应用程序需要mysql和rabbitmq,所以我使用 yaml 文件(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。

3npbholx

3npbholx1#

你在springboot吊舱上试过“kubectl日志”吗?你可能有一些迹象表明出了什么问题。

相关问题