#spring-boot #kubernetes #kubernetes-ingress
Вопрос:
Я пытаюсь создать тестовый кластер Kubernetes с помощью мини-куба в Windows 10. Я использую свой загрузочный образ Spring, который содержит промежуточное программное обеспечение Tomcat и Thymeleaf. Сначала я проявляю Стручок:
apiVersion: v1 kind: Pod metadata: name: app-boot labels: deploy: boot-app spec: containers: - name: boot-app image: app:latest # This image is generated by local docker machine and it works successfully. It contains tomcat and thymeleaf imagePullPolicy: Never ports: - containerPort: 8080 args: ["-t", "-i"] --- apiVersion: v1 kind: Service metadata: name: app-boot-svc spec: selector: deploy: boot-app ports: - port: 8080 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: boot.aaa.com http: paths: - path: / pathType: Prefix backend: service: name: app-boot-svc port: number: 8080
Приведенный выше манифест Kubernetes успешно работает без ошибок. Затем я изменяю объект Pod на развертывание, как показано ниже,
apiVersion: apps/v1 kind: Deployment metadata: name: boot-deploy spec: replicas: 2 selector: matchLabels: deploy: boot-app template: metadata: labels: deploy: boot-app spec: containers: - name: boot-app image: app:latest imagePullPolicy: Never ports: - containerPort: 8080 args: ["-t", "-i"]
Но входное имя хоста выдает ошибки,
[nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]
Коды загрузки Spring, которые выявляют эту проблему, имеют только метод http get.
@GetMapping("/list") public void list(@ModelAttribute("pageVO") PageVO vo, Model model) { .... ....
Однако, когда я использую свои объекты модуля загрузки Spring, входящие хосты не выдают ошибок. В случае использования объектов развертывания веб-браузер выдает следующие ошибки.
There was an unexpected error (type=Method Not Allowed, status=405)
Есть ли другой вариант настройки веб-метода по умолчанию для модуля, службы или входа Kubernetes? Если есть, я хочу знать, как установить веб-метод по умолчанию для входа в хост.
Обновить
Я установил число реплик объекта развертывания равным 1, после чего из миникуба не выводится никаких ошибок. А ниже приведены коды сервисных кодов.
apiVersion: v1 kind: Service metadata: name: app-boot-svc spec: selector: deploy: boot-app ports: - port: 8080
Я боюсь, что мои коды объектов обслуживания будут содержать некоторые ошибки. Есть идеи?
Комментарии:
1. Возникает ли та же ошибка при запуске этого приложения в Linux без его контейнеризации?
2. Спасибо вам за ваш ответ. Боюсь, я тестирую эту проблему только в Windows 10
3. Итак, вы запускаете это на Hyper-V, а образы Springboot и tomcat-это образы Windows, да? Тогда мой вопрос остается прежним: возникает ли эта ошибка, когда вы запускаете эту программу в Windows без ее контейнеризации?
4. С помощью Windows docker machine я создаю этот образ docker и контейнеризую контейнер docker. И я запускаю этот загрузочный контейнер spring на локальном хосте, и ошибки не возвращаются. Когда я расширяю это локальное изображение на модуле k8s, также нет ошибок. Я надеюсь, что это поможет вашему пониманию
5. @Marco Не могли бы вы любезно проверить мою обновленную часть? Я добавляю коды объектов обслуживания.