Как вы отлаживаете код Python с помощью kubernetes и skaffold?

В настоящее время я запускаю приложение 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) ракушка.

4 ответа

Решение

E сть 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. Службы в удаленном кластере теперь могут обращаться к локально работающему экземпляру.

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

Это не использует Skaffold, но вы можете подключить отладчик VSCode к любому работающему поду Python с проектом с открытым исходным кодом, который я написал .

Для его установки в вашем кластере требуется некоторая настройка, но после установки вы можете отладить любой модуль с помощью одной команды:

      robusta playbooks trigger python_debugger name=myapp namespace=default 

Вы можете взглянуть на okteto/okteto . Есть хорошее руководство , в котором объясняется, как разрабатывать и отлаживать непосредственно в Kubernetes.

Другие вопросы по тегам