Почему отказал ливень / готовность? - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь развернуть приложение в кластере Kubernetes через диаграммы Хелма. Каждый раз, когда я пытаюсь развернуть приложение, я получаю

"Проверка работоспособности не удалась: Get http://172.17.0.7: 80 / : dial tcp 172.17.0.7:80: connect: соединение отказано "и" Ошибка проверки готовности: Получить http://172.17.0.7: 80 / : набрать tcp 172.17.0.7:80: подключиться: соединение отклонено "

.

Это мой развертывание. * Есть мнение?

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Поскольку я могу вытащить образ, я попытался

$ docker run -d nikovlyubomir/docker-spring-boot:latest
9ac42a1228a610ae424217f9a2b93cabfe1d3141fe49e0665cc71cb8b2e3e0fd

Я получил журналы

$ docker logs 9ac
...
2020-03-08 02:02:30.552  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 1993 (http) with context path ''

Кажется, приложение запускается на порту 1993, а не 80

затем я проверяю порт и соединение в контейнере:

$ docker exec -ti 9ac bash
root@9ac42a1228a6:/# curl localhost:1993
{"timestamp":"2020-03-08T02:03:12.104+0000","status":404,"error":"Not Found","message":"No message available","path":"/"}
root@9ac42a1228a6:/# curl localhost:1993/actuator/health
{"timestamp":"2020-03-08T02:04:01.348+0000","status":404,"error":"Not Found","message":"No message available","path":"/actuator/health"}
root@9ac42a1228a6:/# curl localhost:80
curl: (7) Failed to connect to localhost port 80: Connection refused
root@9ac42a1228a6:/# curl localhost:80/actuator/health
curl: (7) Failed to connect to localhost port 80: Connection refused

Поэтому убедитесь, что путь проверки / или другой установлен правильно, а порт 80 или 1993 готов.

0 голосов
/ 07 марта 2020

Отказ в соединении означает, что контейнер не прослушивает порт 80. Кроме того, при настройке датчика готовности http или датчика живучести, как показано ниже

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/liveness
    args:
    - /server
    livenessProbe:
      httpGet:
        path: /
        port: 80
      initialDelaySeconds: 3
      periodSeconds: 3

Чтобы выполнить проверку, кублет отправляет HTTP-запрос GET на сервер, работающий в контейнере и прослушивающий порт 80. Если обработчик для пути сервера / возвращает код успеха, кублет считает контейнер работоспособным и работоспособным. Если обработчик возвращает код ошибки, кублет убивает контейнер и перезапускает его.

Таким образом, в вашем коде нет обработчика, который возвращает код успеха для пути /. Поскольку это приложение с пружинной загрузкой, при условии, что у вас есть зависимость от привода с пружинной загрузкой в ​​pom, вы можете изменить путь на /actuator/health, что должно решить проблему.

...