Объект развертывания Kubernetes выдает 405 ошибок

#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 Не могли бы вы любезно проверить мою обновленную часть? Я добавляю коды объектов обслуживания.