VSCode 连接到 Jupyter 容器内
支持用户在创建 Jupyter 作业后,通过 VSCode 直接连接到容器环境,便于利用 VSCode 的代码补全、调试功能以及丰富的插件生态,从而提升开发效率与用户体验。
VSCode 连接到 Jupyter 容器内
支持用户在创建 Jupyter 作业后,通过 VSCode 直接连接到容器环境,便于利用 VSCode 的代码补全、调试功能以及丰富的插件生态,从而提升开发效率与用户体验。
确保本机已生成公私钥
在开始之前需要确保在本机已生成公私钥文件,通常存储在C:\Users\<用户名>\.ssh
或 ~/.ssh
目录下,如:
C:\Users\<用户名>\.ssh\id_rsa
C:\Users\<用户名>\.ssh\id_rsa.pub
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
若未生成可以通过如下类似命令生成:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
创建 Jupyter 作业
用户创建 Jupyter 作业,具体创建方法可参考详见 交互式作业,示例作业如下:
点击“交互式页面”跳转到 Jupyter Notebook
容器内安装 SSHD
SSHD(SSH Daemon):SSHD 是 SSH 服务的守护进程,负责监听指定端口上的 SSH 连接请求并提供相应的服务。安装和运行 SSHD 可以使容器能够通过 SSH 协议进行远程访问。
安装 OpenSSH Server
sudo apt update
sudo apt install -y openssh-server
验证 SSH 服务是否正常启动
可以运行以下命令,手动检查 sshd
是否已安装:
ps -ef | grep sshd
也可以使用 service
命令检查和管理 SSHD 的运行状态:
使用 service 命令重启 ssh 服务
sudo service ssh restart
检查状态
sudo service ssh status
参考输出如下:
(base) liuxw24@jupyter-liuxw24-6838a-default0-0:~$ sudo service ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]
(base) liuxw24@jupyter-liuxw24-6838a-default0-0:~$ sudo service ssh status
* sshd is running
确认 22 端口正常监听
使用以下命令确认 22
端口是否在监听:
sudo netstat -tuln | grep 22
如果一切正常,sshd
服务将会在指定端口监听并接受连接。
配置 SSH 免密登录
可使用 authorized_keys
配置免密登录,上传公钥(通常是 id_rsa.pub
)到服务器(在“确保本机已生成公私钥”章节中已阐述)。
- 若
.ssh
文件夹不存在,可执行以下命令创建.ssh
文件夹,并设置适当的权限:
mkdir ~/.ssh
chmod 700 ~/.ssh
- 将本机公钥添加到
~/.ssh/authorized_keys
文件
# 将本机 id_rsa.pub 文件内容复制到 ~/.ssh/authorized_keys
vim ~/.ssh/authorized_keys
# 为 authorized_keys 设置适当权限
chmod 600 ~/.ssh/authorized_keys
设置 NodePort 规则
可通过设置外部访问规则中的 NodePort 规则 暴露服务端口,并使用 NodePort 端口在 VSCode 中连接到 Jupyter 容器内。
NodePort 规则允许用户通过集群节点的 IP 地址和指定的端口号进行访问。如果您希望通过 SSH 连接到集群中的某个节点,Kubernetes 会为该服务分配一个端口,您可以通过该端口号从外部进行连接。
在 Jupyter 作业详情页创建 NodePort 规则,详细创建流程介绍参见 设置 NodePort 访问规则。
字段说明:
-
容器端口号 (
containerPort
): 选择 22 端口,用于 SSH 服务。 -
集群节点地址(
address
): 集群任一节点的 IP 地址,此处为192.168.5.30
。 -
所分配的 NodePort 端口(
nodePort
): Kubernetes 会自动从端口范围 30000 到 32767 中为服务分配一个端口号,此处为32310
。
VSCode 配置
安装 Remote-SSH 扩展
VSCode 中要安装 Remote-SSH 扩展,见下:
配置 Remote.SSH Config 文件
在设置中指定 Remote.SSH Config 文件的路径:
config 文件参考配置如下:
Host 192.168.5.30
HostName 192.168.5.30
LogLevel verbose
IdentityFile C:\Users\lxw\.ssh\id_rsa
Port 32310
User liuxw24
各字段解释如下:
Host
:Host IP,参见 NodePort 规则中的Host IP
,本示例中为192.168.5.30
IdentityFile
:指定私钥文件的访问路径Port
:要连接的端口号,参见 NodePort 规则中的NodePort 端口号
,本示例中为32310
User
:用户名
配置完成后即可成功通过 NodePort 在 VSCode 中连接到 Jupyter 容器内: