развертывание react kubernetes, работает только порт 80

#docker #kubernetes #deployment #yaml #containers

#docker #kubernetes #развертывание #yaml #контейнеры

Вопрос:

Я изучаю, как работает kubernetes, и я развернул базовое приложение react (используя create-react-app).

В моем файле yaml я установил containerPort: 80, а затем использовал службу NodePort, предназначенную для порта 80. Все работает нормально.

НО. Почему это работает только с портом 80? Я пробовал containerPort 3000, не работает. Ни 8080 и т.д.

Есть ли что-то особенное в порту 80? Почему это работает только тогда, когда я использую этот порт?

Ниже приведен мой файл yaml:

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      name: my-app
  template:
    metadata:
      labels:
        name: my-app
    spec:
      containers:
      - name: my-app
        image: <my repo>/my-app
        ports:
            - containerPort: 80
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: my-app
  namespace: default
spec:
  type: NodePort
  selector:
    name: my-app
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
      nodePort: 30001
  

Комментарии:

1. Контейнер запускает программу; какой порт прослушивает эта программа? Это должно соответствовать модулю containerPort и службе targetPort . В порту 80 нет ничего волшебного, кроме того, что он является HTTP-портом по умолчанию, но два порта в конфигурации Kubernetes должны соответствовать тому, что ожидает процесс в контейнере.

Ответ №1:

Я предполагаю, что basic react app (using create-react-app) работает на порту 80.

Вы могли бы проверить это на index.js или npm start . (Я не силен в React.js )

И containerPort предназначен для публикации / предоставления доступа к порту.

Итак, при попытке опубликовать порт 3000 ничего не может быть подано, но ваш образ docker (контейнер) обслуживает содержимое на порту 80

Комментарии:

1. Приложение react работает на порту 3000. Вот почему странно, что работает только 80

2. Можете ли вы показать свой файл Dockerfile и точку входа в image: <my repo>/my-app ?