Pod to Pod связь не работает в kubernetes - PullRequest
0 голосов
/ 09 февраля 2019

Я использую Spring Boot для создания REST API и доступа к MongoDB во время загрузки.Я делаю одно развертывание и службу для REST API и одно развертывание и службу для mongodb.

Но мой модуль REST API ломается и не запускается, так как во время загрузки ищет службу mongodb, но не можетping the host.

Я представил mongodb как сервис, а также REST API как сервис.REST API отображается как NodePort, а mongodb - как ClusreIP.

Все, что я пробовал, но не имеет решения.

=================================== Развертывание MongoDB ========================

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tech-hunt-mongodb
spec:
  replicas: 1
  template:
    metadata:
      name: tech-hunt-mongodb
      labels:
        app: tech-hunt
        module: mongodb
    spec:
      containers:
      - image: <image>
        name: tech-hunt-mongodb
        ports:
        - containerPort: 27017

========================================= Служба MongoDB ========================

apiVersion: v1
kind: Service
metadata:
  name: tech-hunt-mongodb
spec:
        #type: ClusterIP
  selector:
    app: tech-hunt
    module: mongodb
  ports:
  - port: 27017
    targetPort: 27017
    protocol: TCP
  clusterIP: None
    #nodePort: 30000
    #protocol: TCP

=========================== RESTРазвертывание API ================================

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tech-hunt-api
spec:
  template:
    metadata:
      name: tech-hunt-api
      labels:
        app: tech-hunt
        module: rest-api    
    spec:
      containers:
      - image: <image>
        name: tech-hunt-api
        ports:
        - containerPort: 4000

=============================== Служба REST API =============================

apiVersion: v1
kind: Service
metadata:
  name: tech-hunt-api-client
spec:
  type: NodePort
  selector:
    app: tech-hunt
    module: rest-api-client
  ports:
  - port: 5000
    targetPort: 5000
    nodePort: 30010

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Я использовал неправильный образ mongodb, который не давал доступ клиентам.Таким образом, созданный контейнер не может быть проверен ни одним из способов через curl или около того.Я использую NodePort, и мой контейнер API отдыха может получить ответ от контейнера mongodb.

0 голосов
/ 09 февраля 2019

clusterIP: None

почти наверняка не то, что вы хотите, потому что это возлагает бремя заполнения Endpoints полностью на вас - или на внешний контроллер (StatefulSet контроллеры являются одним из таких примеров).

Вам придется удалить, а затем воссоздать tech-hunt-mongodb Service, чтобы изменить clusterIP с None наавтоматически заполняет значение, но вы обязательно должны сначала это сделать.

Но мой модуль REST API ломается и не запускается, так как во время загрузки он ищет службу mongodb, но не может пропинговатьэтот хост.

Будучи FYI, вы никогда не сможете "пинговать" Service IP, поскольку эти адреса "поддельные";только кортеж Service IP и его порт трафика (так, 27017 или 5000 в ваших двух примерах) будут отвечать на любые пакеты.Вы должны использовать curl или nc для проверки подключения, а не ping.

...