как проверить, доступны ли развернутые приложения сервисам kubernetes, таким как mysql, rabbitmq - PullRequest
0 голосов
/ 28 августа 2018

Я новичок в Кубернетесе. Я пытаюсь развернуть веб-приложение Springboot на основе архитектуры микросервисов в Kubernetes. Я настроил Kubernetes на OpenStack. Все службы 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, поэтому я создал службы 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 работают.

У меня вопрос, как проверить, имеет ли мое приложение доступ к службам MySQL и rabbitmq, работающим в Kubernetes.

Примечание:

Я мог получить доступ к rabbitmq только в 192.168.9.123:15672.

Я также мог бы войти в MySQL внутри контейнера Docker.

1 Ответ

0 голосов
/ 28 августа 2018

Вы пробовали "журнал kubectl" на модуле Springboot? У вас может быть какое-то указание на то, что идет не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...