Невозможно получить доступ к модулю из другого модуля с помощью службы NodePort - PullRequest
0 голосов
/ 14 июля 2020

У меня очень простая установка. Я запускаю Kubernetes, используя функцию Docker Desktop Kubernetes на моем P C.

  1. Из yaml запускаются 2 модуля:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
  labels:
    app: my-nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-nginx
  template:
    metadata:
      labels:
        app: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx:alpine
  1. Есть еще один под, запущенный из команды: kubectl run nginx-standalone --image nginx:alpine

  2. Есть сервис из yaml:

apiVersion: v1
kind: Service
metadata:
 name: nginx-nodeport
spec:
 type: NodePort
 selector:
    app: my-nginx
 ports:
 - port: 80
   targetPort: 80
   nodePort: 31000

В основном служба "подключена" только к модулям, которые поступают из развертывания yaml, из-за селектора меток.

Что я делаю:

  1. I "s sh "в nginx -standalone
  2. Я установил curl (внутри nginx -standalone)
  3. Я пробовал следующее (внутри nginx -standalone):
    1. curl nginx-nodeport - работает хорошо, получаю правильный ответ
    2. curl nginx-nodeport:31000 - не работает, получаю curl: (7) Failed to connect to nginx-nodeport port 31000: Connection refused

I не понимаю, почему вторая команда не возвращает успешный ответ HTTP. Я знаю, что порт 31000 работает, потому что я могу делать curl nginx-nodeport:31000 с моего хоста P C. Почему не работает из nginx -стандартного модуля?

1 Ответ

3 голосов
/ 14 июля 2020

Это ожидаемое поведение, потому что nodePort 31000 прослушивает сетевой интерфейс узлов и не существует в сетевом интерфейсе модуля. Если вы хотите получить доступ к модулю из другого модуля через службу kubernetes, используйте службу типа clusterIP вместо типа NodePort. Служба типа NodePort должна использоваться для предоставления pod'а kubernetes потребителям за пределами кластера kubernetes.

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