, когда я пытаюсь смешать конфигурацию весеннего облака с istio 1.1.1. Когда запускается контейнер моего приложения (с автоинъекцией istio envoy), клиент конфигурации весеннего облака попытается получить конфигурацию (applicationContext.yaml) изудаленный сервер конфигурации облака (запущенный заранее с хорошим состоянием), к сожалению, он завершается с ошибкой HTTP 404.Даже если я настроил мое приложение на повторную попытку для клиента облачного конфигурирования, оно продолжает повторяться с ошибкой HTTP 404 (я подтвердил, что URL-адрес сервера конфигурации верен из другого контейнера), и у меня нет шансов на восстановление.Это случается иногда .Я знал, что посланник Istio и мое приложение находятся в одном и том же POD kubernetes, приложение может запуститься до посланника istio, и в этом случае может произойти ошибка сети, но как только посланник активен, все должно быть в порядке.Я действительно не понимаю, почему мое приложение не может восстановиться автоматически.Вот мои диагностические шаги: 1.Добавить механизм повторных попыток в моем приложении (с библиотеками повторных попыток, включенными в POM и измененным yaml. - повторная попытка работает, но каждая повторная попытка завершилась ошибкой HTTP 404 spring-config/
fail-fast: true
retry:
initial-interval: 10000
max-attempts: 100
2.Добавьте «sleep xx» до запуска моего java-приложения в файле развертывания моего приложения k8s - меньше шансов получить ошибку HTTP 404, но проблема не устранена command: ["/bin/sh","-c","sleep 20; java -jar -Xms512m -Xmx1024m app.jar"]
3.получить журнал доступа посланника istio и сравнить приложение жертвы и хорошее приложение - похоже, что хороший журнал имеет значения для ключа upstream_cluster и upstream_cluster;поля для плохого журнала пусты хороший журнал доступа{
"response_code": "200",
"user_agent": "Java/1.8.0_121",
"response_flags": "-",
"start_time": "2019-06-25T01:17:29.661Z",
"method": "2019-06-25T01:17:29.661Z",
"request_id": "d3d27512-161b-4303-bb48-05a6e19e05b7",
"upstream_host": "172.20.3.104:9083",
"x_forwarded_for": "-",
"requested_server_name": "-",
"bytes_received": "0",
"istio_policy_status": "-",
"bytes_sent": "1144",
"upstream_cluster": "outbound|9083||fota-spring-config.ns-fota.svc.cluster.local",
"downstream_remote_address": "172.20.2.115:45816",
"path": "/fota-spring-config/fota-task/dev/master",
"authority": "fota-spring-config.ns-fota.svc.cluster.local:9083",
"protocol": "HTTP/1.1",
"upstream_service_time": "289",
"upstream_local_address": "-",
"duration": "290",
"downstream_local_address": "172.21.1.152:9083"
}
журнал плохого доступа: {
"upstream_cluster": "-",
"downstream_remote_address": "172.20.2.118:41980",
"path": "/fota-spring-config/fota-dmserver/dev/master",
"authority": "fota-spring-config.ns-fota.svc.cluster.local:9083",
"protocol": "HTTP/1.1",
"upstream_service_time": "-",
"upstream_local_address": "-",
"duration": "0",
"downstream_local_address": "172.21.1.152:9083",
"response_code": "404",
"user_agent": "Java/1.8.0_121",
"response_flags": "NR",
"start_time": "2019-06-25T01:21:24.197Z",
"method": "2019-06-25T01:21:24.197Z",
"request_id": "346716e4-1def-465f-b370-cb1e71e30d25",
"upstream_host": "-",
"x_forwarded_for": "-",
"requested_server_name": "-",
"bytes_received": "0",
"istio_policy_status": "-",
"bytes_sent": "0"
}