首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查kubernetes服务(如mysql、rabbitmq )是否可通过部署的应用程序访问

如何检查kubernetes服务(如mysql、rabbitmq )是否可通过部署的应用程序访问
EN

Stack Overflow用户
提问于 2018-08-28 17:37:43
回答 1查看 1K关注 0票数 0

我是库伯内特斯的新手。我试图在Kubernetes中部署一个基于微服务体系结构的springboot web应用程序。我在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)创建了MySQL和rabbitmq服务:

javaweb.yaml

代码语言:javascript
复制
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’>:8080访问我的应用程序时,我会看到一个空白页.

命令kubectl get all -o wide给了我以下输出:

代码语言:javascript
复制
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进入狂犬病。

我还可以登录到Docker容器中的MySQL。

EN

回答 1

Stack Overflow用户

发布于 2018-08-28 20:50:57

你试过弹簧吊舱上的"kubectl原木“吗?你可能对出了什么问题有一些指示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52063548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档