Python Docker SDK внутри Kubernetes

Я перешел по этой ссылке - https://docs.docker.com/engine/api/sdk/examples/, и docker SDK работал нормально, пока я использовал контейнеры Docker. Теперь, когда я перешел на K8s, при запуске кода я получаю ошибку типа «Контейнер не найден». Есть ли способ использовать Python Docker SDK внутри Kubernetes PODS? Ошибка:

      docker.errors.NotFound: 404 Client Error for http+docker://localhost/v1.41/containers/taskmanager-son/json: Not Found ("No such container: taskmanager-son")

Примечание. Я не сталкиваюсь с этой ошибкой при работе с простыми контейнерами Docker. Это происходит только тогда, когда код выполняется внутри k8s PODS.

Примечание. Также docker ps ничего не возвращает, поскольку все контейнеры работают внутри K8s PODS.

      import docker
docker_client = docker.from_env()
print(docker_client.containers.list())
# Returns none since since all containers are running inside K8s PODS

Вы можете узнать о Python Docker SDK здесь:https://docker-py.readthedocs.io/en/stable/

1 ответ

Вы не можете использовать Docker API изнутри Kubernetes; вместо этого вам нужно использовать Kubernetes API . Вы можете делать то же самое, что и Docker API, используя Kubernetes API (запускать новые задания, запрашивать существующие Pod'ы, ...). Однако вы не можете создавать новые образы, набор выполняемых вами операций может быть ограничен системой Kubernetes RBAC, и захватить хост сложнее.

Docker API имеет некоторые важные аспекты безопасности, и Kubernetes не гарантирует правильную работу Docker. Также стоит отметить, что Docker API может проверять контейнеры или работать с ними только на том же узле, где Kubernetes API может видеть все в кластере.

(Различия между этими двумя средами - веская причина избегать необходимости прямого доступа к любому из API, если вы можете этого избежать. Например, система очереди заданий, такая как RabbitMQ, плюс долго работающий рабочий, может работать в любой среде, и это проще как для масштабирования, так и для управления, чем запуск отдельного контейнера для каждого задания.)

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