не видно в кластере kubernetes - PullRequest
0 голосов
/ 17 февраля 2020

Я создаю файл yaml для создания кластера rabbitmq kubernetes. Я вижу стручки. Но когда я пишу kubectl получить развертывание. Я не могу видеть там. Я не могу получить доступ к странице пользователя rabbitmq.

apiVersion: v1
kind: Service
metadata:
  labels:
    app: rabbit
  name: rabbit
spec:
  ports:
  - port: 5672
    protocol: TCP
    name: mqtt
  - port: 15672
    protocol: TCP
    name: ui
  type: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbit
spec:
  serviceName: rabbit
  replicas: 3
  selector:
    matchLabels:
      app: rabbit
  template:
    metadata:
      labels:
        app: rabbit
    spec:
      containers:
        - name: rabbitmq
          image: rabbitmq
      nodeSelector:
        rabbitmq: "clustered"

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

@ arghya-sadhu ответ правильный.

NB Я незнаком с RabbitMQ, но вам может потребоваться использовать другое изображение (см. 'Плагин управления` * ) для включения пользовательского интерфейса.

Подробнее см. ниже.

Вы сможете получить доступ к пользовательскому интерфейсу на одном (!) модуле с помощью:

PORT=8888
kubectl port-forward pod/rabbit-0 --namespace=${NAMESPACE} ${PORT}:15672

А затем просмотрите localhost:${PORT} (если 8888 недоступен, попробуйте другой).

Я подозреваю (!) Это не сработает, если вы не используете образ с плагином управления.

Plus

  • Service необходимо выбрать StatefulSet Pods

В пределах Сервиса spec вы должны добавить, возможно:

selector:
  app: rabbit
  • Предположительно (!?) Вы используете частное репо (потому что у вас есть imagePullSecrets).

Если вы этого не сделаете и wi sh чтобы использовать DockerHub, вы можете удалить раздел imagePullSecrets.

  • Полезно документировать (!) порты контейнера, хотя и не обязательно:

В StatefulSet

ports:
- containerPort: 5672
- containerPort: 15672

Отладка

NAMESPACE="default" # Or ...

Убедитесь, что StatefulSet создан:

kubectl get statesfulset/rabbit --namespace=${NAMESPACE}

Проверьте блоки:

kubectl get pods --selector=app=rabbit --namespace=${NAMESPACE}

Вы можете проверить Стручки связаны с (!) службой:

kubectl describe endpoints/rabbit --namespace=${NAMESPACE}

NB Вы должны увидеть 3 адреса (по одному на стручок)

Получите NodePort либо:

kubectl get service/rabbit --namespace=${NAMESPACE} --output=json
kubectl describe service/rabbit --namespace=${NAMESPACE}

потребуется , чтобы использовать NodePort для доступа как к конечной точке MQTT, так и к интерфейсу пользователя.

1 голос
/ 17 февраля 2020

statefulsets и развертывания - это разные ресурсы kubernetes. Вы создали наборы состояний. Вот почему вы не видите развертывания. Если вы сделаете

kubectl get statefulset, вы должны увидеть его, а также и statefulset, и развертывание, в конце концов создаст модуль pod, чтобы вы могли видеть модули rabbitmq, если вы выполните kubectl get pods

Поскольку вы создали Служба Nodeport. Вы должны иметь доступ к нему через http://nodeip:nodeport, где nodeip - это ip любого рабочего узла в вашем кластере kubernetes.

Узнать, что такое Nodeport (число между 30000-32767), можно по

kubectl describe services rabbit 

Вот do c при доступе к службе Nodeport извне кластера.

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