开放端口#
有时,将集群上的特定端口暴露给公共互联网至关重要。例如
暴露开发工具:如果您使用 Jupyter Notebook 或 Ray 等工具,您需要暴露其端口才能从浏览器访问其界面/仪表板。
创建 Web 服务:无论您是设置 Web 服务器、数据库还是其他服务,它们都通过需要可访问的特定端口进行通信。
协作工具:某些工具和平台可能需要开放端口才能与团队成员协作或与其他服务集成。
在集群上开放端口#
要在 SkyPilot 集群上开放端口,请在任务的 resources
部分指定 ports
。例如,以下是暴露 Jupyter Lab 服务器的 YAML 配置
# jupyter_lab.yaml
resources:
ports: 8888
setup: pip install jupyter
run: jupyter lab --port 8888 --no-browser --ip=0.0.0.0
在此示例中,run
命令将在端口 8888 上启动 Jupyter Lab 服务器。通过指定 ports: 8888
,SkyPilot 将在集群上暴露端口 8888,使 Jupyter 服务器可公开访问。要启动和访问服务器,请运行
$ sky launch -c jupyter jupyter_lab.yaml
并查看日志,寻找类似以下内容的输出
Jupyter Server 2.7.0 is running at:
http://127.0.0.1:8888/lab?token=<token>
要获取集群头部节点的公共 IP 地址,请运行 sky status --ip jupyter
$ sky status --ip jupyter
35.223.97.21
在 Jupyter 服务器 URL 中,将 127.0.0.1
替换为从 sky status --ip jupyter
获取的公共 IP,然后在浏览器中打开该 URL。
如果您想暴露多个端口,可以在 resources
部分指定端口列表或端口范围
resources:
ports:
- 8888
- 10020-10040
- 20000-20010
SkyPilot 也支持通过 CLI 开放端口
$ sky launch -c jupyter --ports 8888 jupyter_lab.yaml
安全和生命周期注意事项#
在您开始开放端口之前,有一些事情需要注意
公共可访问性:您开放的端口暴露给公共互联网。这意味着任何知道您的虚拟机 IP 地址和开放端口的人都可以访问您的服务。请确保使用安全措施,例如身份验证机制,来保护您的服务。
生命周期管理:所有开放的端口会保持开放,即使单个任务已经完成。端口唯一会自动关闭的情况是集群关闭期间。关闭时,在集群生命周期内开放的所有端口都会关闭。同时,与这些端口相关的所有相应的防火墙规则和安全组也会被清理。