Доступ к приложению, запущенному внутри модуля, в браузере

#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 команда.