#kubernetes #kubernetes-pod #kubernetes-service
Вопрос:
Я хочу получить доступ к приложению, запущенному внутри модуля, из браузера.
Файл Yaml модуля
apiVersion: v1
kind: Pod
metadata:
name: app-pod6
labels:
name: app-pod
app: containerization
spec:
containers:
- name: appimage1
image: appimage6:1.0
ports:
- containerPort: 3000
Когда я это сделаю
curl localhost:3000/app/home
это дает мне ответ внутри контейнера. Теперь я хочу получить доступ к нему из браузера.
Я создал службу для предоставления доступа к приложению с помощью команды:
kubectl expose pod app-pod6 --name=app-svc6 --port=3000 --type=NodePort
И когда я описываю сервис, он выдает мне Nodeport: 31974
И когда я делаю «добавить ip», я получаю ip kubernetes как 192.168.102.128
Но не могу получить доступ к приложению с 192.168.102.128:31974
Комментарии:
1. Похоже, что модуль выполняет
sleep
команду, а не веб-сервер, верно?2. @Джонас… Я удалил его. И добавил CMD [«sh», «-c», «tail -f /dev/null»] в файл Dockerfile, чтобы контейнер продолжал работать.
3. Как бы это сработало? Я предлагаю вместо этого запустить веб-сервер, прослушивающий порт 3000.
4. @Джонас… когда я вхожу в контейнер, я запускаю приложение с помощью сценария startapplication. И curl localhost:3000/app/home дает мне ответ. Это означает, что приложение находится внутри контейнера на порту 3000
5. Почему бы не запустить приложение в команде? тогда вам не нужна
sleep
команда.