Как вы отлаживаете код Python с помощью kubernetes и skaffold? - PullRequest
0 голосов
/ 26 февраля 2019

В настоящее время я запускаю приложение django под python3 через kubernetes, выполнив skaffold dev.У меня есть горячая перезагрузка работы с исходным кодом Python.Возможно ли в настоящее время выполнять интерактивную отладку с помощью python в kubernetes?

Например,

def index(request):
    import pdb; pdb.set_trace()
    return render(request, 'index.html', {})

Обычно, вне контейнера попадание в конечную точку приводит к попаданию в оболочку (pdb).

В текущей настройке я установил stdin и tty в true в файле Deployment.Код останавливается в точке останова, но не дает мне доступа к оболочке (pdb).

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Возможно, стоит взглянуть на Rookout , который позволяет выполнять оперативную отладку Python на бобах Kubernetes без перезапуска или повторного развертывания.Вы теряете форсирование пути и т. Д., Но получаете большую гибкость для эффективного моделирования трассы стека типа точки останова на лету.

0 голосов
/ 26 февраля 2019

Существует команда kubectl, позволяющая присоединить к работающему контейнеру в модуле:

kubectl attach <pod-name> -c <container-name> [-n namespace] -i -t

-i  (default:false) Pass stdin to the container
-t  (default:false) Stdin is a TTY

. Она должна позволить вам взаимодействовать с отладчиком в контейнере.,Возможно, вам придется настроить ваш модуль для использования отладчика, поэтому может пригодиться следующая статья:

Существует также телеприсутствие инструмент, который помогает использовать другой подход к отладке приложений:

Использование телеприсутствие позволяетпользовательские инструменты, такие как отладчик и IDE, используются для локальной службы и предоставляют службе полный доступ к ConfigMap, секретам и службам, работающим на удаленном кластере.

Используйте параметр --swap-deployment, чтобыпоменяйте местами существующее развертывание с прокси Telepresence.Обмен позволяет вам запускать службу локально и подключаться к удаленному кластеру Kubernetes.Службы в удаленном кластере теперь могут обращаться к локально работающему экземпляру.

...