Служба Kubernetes работает нормально, но не может получить доступ извне - PullRequest
0 голосов
/ 20 февраля 2019

Привет. Я пытаюсь установить связь между базой данных mongo и приложением nodejs, используя kubernetes.все работает нормально.но я не могу получить доступ к моему API из внешней среды.Я также не могу telnet порт.

apiVersion: v1
kind: Service
metadata:
  name: node
  labels:
    app: node
    tier: backend
spec:
  type: NodePort
  ports:
    - port: 3000
      nodePort: 30005
  externalIPs:
    - 34.73.154.127 
  # # Replace with the IP of your minikube node / master node
  # selector:
  #   app: node 
  #   tier: backend  

это мой файл yaml службы

, когда я проверяю состояние порта с помощью команды
sudo lsof -i:30005
Я могу видеть результаты, как показано ниже:

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
kube-prox 2925 root    8u  IPv6  32281      0t0  TCP *:30005 (LISTEN)  

Теперь я могу подключиться к порту через ip, как
telnet 34.73.154.127 30005, но я получаю результат, как показано ниже.

Trying 34.73.154.127...
telnet: Unable to connect to remote host: Connection refused  

Если кто-то из моих друзей скажет, что порт не открыт, обратите внимание, что я открыл весь диапазон портов из любого места.

Еще одна вещь, о которой я хочу сообщить, что я развернулПример узла приложения изначально использует npm на порту 30006, и я могу telnet на этом порту.Итак, вывод состоит в том, что весь диапазон портов открыт и работает.

Это результат команды описания службы
kubectl describe service/node result:

Name:                     node
Namespace:                default
Labels:                   app=node
                          tier=backend
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"node","tier":"backend"},"name":"node","namespace":"defau...
Selector:                 <none>
Type:                     NodePort
IP:                       10.102.42.145
External IPs:             34.73.154.127
Port:                     <unset>  3000/TCP
TargetPort:               3000/TCP
NodePort:                 <unset>  30005/TCP
Endpoints:                <none>
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

Пожалуйста, дайте мне знать, чтосо мной не так ..

ENVIRONMENT: 
cloud :google cloud platform
container :using docker and kubernetes
ubuntu 16.04 LTS
kubernetes 1.13.0

Ответы [ 2 ]

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

Привет, я совершил глупую ошибку.
Просто раскомментировал это в моем сервисном файле yaml, и он начал работать

# # Replace with the IP of your minikube node / master node
  # selector:
  #   app: node 
  #   tier: backend  
0 голосов
/ 20 февраля 2019

Чтобы получить доступ к вашей службе извне, вам необходимо представить эту службу в виде типа LoadBalancer, например:

apiVersion: v1
kind: Service
metadata:
  name: node
  labels:
    app: node
    tier: backend
spec:
  type: LoadBalancer
  ports:
    - port: 3000
      nodePort: 30005

Google Cloud Platform предоставит вам IP-адрес, который будет общедоступен и будет открытмежсетевой экран для вас.

...