Почему я не могу получить доступ к своему приложению внутри кластера Kubernetes через сервер tomcat?

#docker #kubernetes #docker-compose #dockerfile #containers

#docker #kubernetes #docker-compose #dockerfile #контейнеры

Вопрос:

Я запускаю кластер kubernetes с minikube на ubuntu server 20.04.1 LTS. Когда я запускаю развертывания, я могу получить доступ к серверу Tomcat из кластера, но я не могу открыть свое приложение, я получил сообщение об ошибке :

 HTTP Status 404  Not Found
  

Вот мой файл docker-compose :

     version: "3"

#NETWORK
networks:
  network1:
    driver: bridge
volumes:
  dir-site:
    driver_opts:
      device: /smartclass_docker/site/
      type: bind
      o: bind
# Declare services
services:
  # service name
  server:
    container_name: server
    # Container image name
    image: repo/myimage
    ## Image used to build Dockerfile 
    build:
      #dockerfile: Dockerfile
      context: ./smart/

    # Container ports and host matching
    ports:
      - "3306:3306"
      - "8080:8080"

    ## Startup Policy
    restart driver: bridge
volumes:
  dir-site:
    driver_opts:
      device: /smart/site/
      type: bind
      o: bind
# Declaration of services
services:
  # service name
  server:
    container_name: server
    # name of the image
    image: repo/myimage
    ## Use IMAGE BUILD DOCKERFILE
    build:
      #dockerfile: Dockerfile
      context: ./smart/

    # CONTAINER ports
    ports:
      - "3306:3306"
      - "8080:8080"

    ## Startup policy
    restart: always

    # connect to network1
    networks:
      - network1
    volumes:
            - /data/dockerStore/data/db_server_1:/var/lib/mysql/

    restart: always

    # connect to network1
    networks:
      - network1
    volumes:
            - /data/dockerStore/data/db_server_1:/var/lib/mysql/
  

Вот мой файл развертывания kubernetes :

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
      matchLabels:
        app: myapp
  # type: LoadBalancer
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: jksun12/vdsaipro
        command: ["/run.sh"]
        ports:
        - containerPort: 80
        - containerPort: 3306
        - containerPort: 9001
        - containerPort: 9002
   # volumeMounts:
   #     - name: myapp-pv-claim
   #       mountPath: /var/lib/mysql
   #   volumes:
   #   - name: myapp-pv-claim
   #     persistentVolumeClaim:
   #       claimName: myapp-pv-claim
---
apiVersion: apps/v1
kind: PersistentVolumeClaim
metadata:
  name: myapp-pv-claim
  labels:
    app: myapp
spec:
  accesModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 4Gi
  

Файлы моего приложения находятся в каталоге /smart, который является подкаталогом каталога, в котором я фактически запускаю docker-compose и создаю свой основной файл Dockerfile.
Как я могу это решить?
Спасибо

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

1. Как ваш docker compose связан с вашим развертыванием kubernetes? Что касается 404 сообщения, оно приходит с вашего сервера Tomcat? Вы проверили его журналы? Он должен сообщить вам точную причину этой 404 ошибки. Вы должны иметь возможность видеть конкретный путь, который пытается получить ваш HTTP-запрос.

2. Спасибо, @mario Я сделал это и обнаружил, что ошибки возникают при извлечении . файл войны внутри контейнера. Также была ошибка в версии сервера tomcat, используемого для приложения. теперь это решено. Спасибо

Ответ №1:

Я проверил журналы внутри контейнеров и обнаружил, что ошибки возникают при извлечении .файл войны внутри контейнера. Также была ошибка в версии сервера tomcat, используемого для приложения. Итак, я изменил версию tomcat на другую версию.

Теперь это решено. Спасибо