Как вы отлаживаете код 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.