Почему гораздо сложнее отлаживать локальные контейнеры Kubernetes, а локальные Docker контейнеры очень просто отлаживать? - PullRequest
0 голосов
/ 12 марта 2020

Отладка Docker контейнеров очень проста в моем локальном P C. Допустим, у меня есть такой сценарий:

1) Проект веб-приложения

2) Проект Docker -Compose

Я установил проект Docker -Compose в качестве запустить проект, а затем отладить проект. Любые точки останова, которые я добавляю в свою работу над проектом веб-приложения, т.е. код останавливается.

Теперь я включил Kubernetes в Docker для рабочего стола, и я создал очень простое приложение и развернул его. Однако, кажется, очень сложно настроить среду отладки - например, как описано здесь: https://medium.com/@pavel.agarkov/debugging-asp-net-core-app-running-in-kubernetes-minikube-from-visual-studio-2017-on-windows-6671ddc23d93, что заставляет меня думать, что я делаю что-то не так. Есть ли простой способ отладки Kubernetes, когда он установлен локально, как это происходит при отладке локальных Docker контейнеров?

Я надеялся, что смогу просто запустить Visual Studio и он начнет отладку контейнеров Kubernetes - как с Docker. Это возможно?

Ответы [ 2 ]

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

Kubernetes - это инструмент, предназначенный для запуска нескольких копий упакованного приложения Somewhere Else. Он не предназначен для разработки в режиме реального времени.

Представьте, что вы создали настольное приложение, каким-то образом упаковали его и отправили мне. Я запускаю его на своем рабочем столе (Somewhere Else) и у меня проблема с ним. Я могу сообщить вам об этой проблеме, но вы не сможете подключить свою IDE к моей настольной системе. Вместо этого вам нужно воспроизвести мою проблему в вашей собственной системе разработки, написать тестовый пример и исправить ее; как только вы это сделаете, вы можете выпустить обновление, которое я смогу запустить снова.

Kubernetes гораздо больше сосредоточен на этой модели «запускаемого программного обеспечения», чем на среде разработки. Вы можете легко откатить объект Deployment обратно к предыдущей версии программного обеспечения, которая была выпущена, например, при условии, что у вас есть схема для маркировки различных выпусков. Однако вам нужно много взломать, чтобы попытаться запустить локальное дерево разработки внутри контейнера.

Другим важным следствием этого является то, что когда вы "присоединяете свою IDE к Docker контейнер ", вы не запускаете код в вашем изображении! Типичная настройка для этого запускает контейнер Docker из образа, но затем перезаписывает весь код приложения (через привязку) любым содержимым вашей локальной системы. Помимо, возможно, инкапсулирования некоторых трудно устанавливаемых зависимостей, этот подход, с одной стороны, вообще не позволяет использовать Docker (должен иметь root -эквивалентные разрешения, не может локально запускать инструменты поддержки, ...) а с другой стороны, это скрывает код в образе (поэтому вам нужно будет повторять любые тесты, когда вы хотите развернуть в рабочей среде).

Я бы рекомендовал использовать локальную среду разработки для локальной разработки, и не пытаясь смоделировать это с помощью других инструментов. Kubernetes совсем не подходит для живой разработки, и я бы не стал включать ее в ваш повседневный рабочий процесс, кроме тестирования перед развертыванием после прохождения других тестов.

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

Telepresence - это полезный инструмент для отладки модулей в kubernetes. Telepresence работает, выполняя ваш код локально, как обычный локальный процесс, а затем перенаправляя запросы в / из кластера Kubernetes. Это означает, что разработка происходит быстро : вам нужно только изменить код и перезапустить процесс. Многие веб-фреймворки также автоматически перезагружают код c, и в этом случае вам даже не нужно перезапускать.

https://www.telepresence.io/tutorials/kubernetes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...