尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

在 Docker Swarm 部署 Jupyter Enterprise Gateway:容器化远程内核实战指南

在 Docker Swarm 部署 Jupyter Enterprise Gateway:容器化远程内核实战指南 在 Docker Swarm 部署 Jupyter Enterprise Gateway容器化远程内核实战指南【免费下载链接】enterprise_gatewayA lightweight, multi-tenant, scalable and secure gateway that enables Jupyter Notebooks to share resources across distributed clusters such as Apache Spark, Kubernetes and others.项目地址: https://gitcode.com/gh_mirrors/en/enterprise_gateway本文是一份面向初学者的Jupyter Enterprise GatewayJEGDocker Swarm 部署实战指南。Jupyter Enterprise Gateway 是一个轻量级、多租户、可扩展且安全的网关它让 Jupyter Notebook 能够把内核进程远程化动态调度到 Apache Spark、Kubernetes、Docker Swarm 等分布式集群上运行。本文将以 Docker Swarm 为例带你一步步完成容器化远程内核的部署与配置并解释内核如何以 Swarm Service 的形式在集群中弹性运行。上图展示了 Jupyter Enterprise Gateway 的核心架构客户端通过 HTTPS/WSS 连接网关网关通过 ZMQ 将内核调度到分布式集群的各个节点上。为什么选择 Docker Swarm 部署远程内核在传统 Jupyter Notebook 架构中内核是本地进程资源被单台机器锁死而通过Jupyter Enterprise Gateway 容器化部署内核变成了可调度的分布式单元天然获得三大优势弹性伸缩内核作为 Swarm Service 可落在集群任意节点横向扩展无压力资源隔离每个内核独立容器互不干扰多租户场景更安全统一运维复用 Docker Swarm 的监控、重启与调度能力。对比上面两张动图可以发现同样的集群规模下使用 Jupyter Enterprise Gateway 后可同时运行的远程内核数量大幅提升。部署前需要准备什么✅在动手Docker Swarm 部署 Jupyter Enterprise Gateway之前请确认环境满足以下条件一个已初始化的 Docker Swarm 集群在管理节点执行docker swarm init集群中可拉取以下镜像来自 Docker Hub 的 elyra 组织elyra/enterprise-gateway网关主镜像含服务器软件与默认内核规格elyra/kernel-pyPython 远程内核镜像elyra/kernel-r、elyra/kernel-scala、elyra/kernel-tf-py等按需使用管理节点拥有/var/run/docker.sock的访问权限网关需要用它来创建内核服务。本地构建镜像可运行make docker-images相关 Dockerfile 位于 etc/docker/例如 enterprise-gateway/Dockerfile。一键部署步骤docker stack 快速上手指南 ️项目仓库中已经为你准备好了 compose 栈定义文件 docker-compose.yml。它创建了一个专供 Enterprise Gateway 与内核服务通信的overlay 网络并附带一个 HAProxy 代理服务用于入口负载均衡。部署命令在 Swarm 管理节点执行docker stack deploy -c docker-compose.yml enterprise-gateway执行后enterprise-gateway会以 Swarm Service 的形式出现在集群中所有相关对象包括内核实例都会被自动打上appenterprise-gateway标签。compose 文件关键配置解读让我们看看 docker-compose.yml 中几个值得关注的配置点挂载 Docker Socket/var/run/docker.sock必须挂载进容器否则网关无法动态创建内核 Service网络环境变量EG_DOCKER_NETWORK指定内核加入的 overlay 网络内核白名单EG_ALLOWED_KERNELS默认允许r_docker、python_docker、python_tf_docker、python_tf_gpu_docker、scala_docker五种容器化内核副本数目前由于 Swarm 的会话亲和性session affinity尚未完全支持服务默认配置为单副本replicas: 1。配置容器化远程内核理解 DockerSwarmProcessProxy 当用户请求启动内核时Jupyter Enterprise Gateway 会根据内核规格文件kernel.json中的process_proxy配置来决定创建哪种实体。在Docker Swarm 部署场景下关键类就是DockerSwarmProcessProxy其实现位于 docker_swarm.py它通过kernel_id标签查找对应的 Swarm Service跟踪 Task 的preparing → starting → running状态等待内核就绪内核退出后自动调用terminate_container_resources清理 Service。内核如何被远程化启动以 Python 远程内核为例其内核规格文件位于 python_docker/kernel.json。关键配置如下{ metadata: { process_proxy: { class_name: enterprise_gateway.services.processproxies.docker_swarm.DockerSwarmProcessProxy, config: { image_name: elyra/kernel-py:VERSION } } }, argv: [ python, /usr/local/share/jupyter/kernels/python_docker/scripts/launch_docker.py, --RemoteProcessProxy.kernel-id, {kernel_id}, --RemoteProcessProxy.response-address, {response_address}, --RemoteProcessProxy.public-key, {public_key} ] }实际启动时真正被调用的并非内核进程本身而是启动脚本 launch_docker.py。它会通过 Docker Python API 完成以下动作读取KERNEL_IMAGE环境变量校验镜像名合法性用KERNEL_USERNAME-kernel_id生成 Service 名称打上kernel_id、componentkernel、appenterprise-gateway三个标签以dnsrr端点模式、none重启策略创建 Swarm Service将内核加入与网关相同的 overlay 网络。 若改用DockerProcessProxy内核则会以传统 Docker 容器形式运行在网关所在宿主机上。两种模式可混用即使网关以 Swarm Service 部署也可以让某个内核以普通容器方式运行。验证与连接从 Notebook 使用远程内核 部署完成后打开 Jupyter Notebook 并配置连接到网关默认端口 8888由 HAProxy 转发到网关服务。在 Notebook 中你会看到新增的Python on Docker、R on Docker等内核选项选择后内核便会在 Swarm 集群中动态创建并回连。排错时可关注以下要点日志查看网关日志确认内核启动状态与 Task 状态流转网络确认内核与网关处于同一 overlay 网络环境变量EG_DOCKER_NETWORK超时如内核长时间处于 starting可调大EG_KERNEL_LAUNCH_TIMEOUT环境变量。官方文档与源码指引 如果你想深入了解推荐阅读以下项目内资料官方部署文档deploy-docker.mdDocker 与 Swarm 部署详解Docker 镜像说明docker.md各内核镜像的构建与使用网关启动脚本start-enterprise-gateway.sh默认内核名、超时、日志级别等参数入口容器化内核生命周期管理源码docker_swarm.py更多内核规格示例etc/kernelspecs/。结语通过本文的Docker Swarm 部署 Jupyter Enterprise Gateway实战你已经掌握了从 compose 栈部署、内核规格配置到远程内核启动验证的完整链路。Jupyter Enterprise Gateway 让 Notebook 摆脱单机束缚把容器化远程内核的能力真正落地——无论是小团队开发环境还是多租户生产集群这套方案都能帮助你更高效地共享集群资源。现在就动手试试吧【免费下载链接】enterprise_gatewayA lightweight, multi-tenant, scalable and secure gateway that enables Jupyter Notebooks to share resources across distributed clusters such as Apache Spark, Kubernetes and others.项目地址: https://gitcode.com/gh_mirrors/en/enterprise_gateway创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表