#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
?