IDE 使用中的常见问题
这里整理了一些在使用 IDE 类型 App 的过程中可能遇到的常见问题和相应的解决方案,作为该类型 App 的文档(JupyterLab、Code Server、RStudio)的补充。请先阅读这些文档,然后再参阅本文档。
如何上传下载文件
请参阅:
如何查看挂载 PVC 的剩余存储空间
在终端中执行以下命令:
df -h | grep -e "Filesystem" -e "Mounted on" -e "/t9k/mnt"
返回的结果类似于:
Filesystem
Size Used Avail Use% Mounted on
100.64.4.102:6789,100.64.4.104:6789:/volumes/csi/csi-vol-a5718ceb-20d4-47c5-8300-a1a45e9c005c/0bc64bd4-81a7-4c98-aeaf-0dd5a7ec975b
16G 10G 6.1G 63% /t9k/mnt
4 个指标从左到右分别为总存储空间、已使用的存储空间、可用的存储空间和使用百分比。
如何查看目录和文件的权限、大小等信息
在终端中,执行以下命令以查看指定目录下的各个子目录和文件的权限、所属用户、所属用户组、大小和修改时间信息,以及它们的总大小:
ls <DIR> -lh # 省略 <DIR> 表示当前目录
注意上面的命令返回的子目录大小为目录的元数据的大小。如要查看指定目录占用的存储空间大小(递归地遍历该目录下的所有子目录和文件),执行以下命令:
du <DIR> -sh
du <DIR> -h --max-depth=1 # 额外展示深度不大于 1 的子目录占用的存储空间大小
如何使用 conda 环境
选用包含 conda 环境的镜像配置和安装 App。进入 App,启动一个终端,可以看到 prompt 显示前缀 (base)
,表示当前 conda 环境 base 已被激活:

然后正常执行 conda 命令即可。
conda 的使用方法请参阅 User guide。
如何通过 SSH 远程连接
请跟随以下步骤,在本地通过 SSH 远程连接到 App。
创建 Secret
App 的 SSH 服务仅支持基于密钥的身份验证,因此你需要创建包含本地系统的公钥的 Secret 并提供给 App。请参阅创建 SSH Public Key 模板的 Secret。
配置和安装 App
填写配置时,将 ssh.enabled
字段的值设为 true
以启用 SSH 服务;将 ssh.authorizedKeys
字段的值设为 Secret 列表,其中每个 Secret 包含一个需要远程连接到该 App 的系统的公钥。填写配置完成后,安装 App,等待其就绪。
端口转发
命令行工具 t9k-pf
命令行工具 t9k-pf 的功能与 kubectl port-forward
命令类似,允许用户通过端口转发的方式,在本地访问 TensorStack AI 平台上的各类资源。
请参照用户指南下载安装 t9k-pf 并配置身份认证和授权。
端口转发命令
查看 App 的信息,复制端口转发的命令,在本地终端执行:

$ export NB_URL=$(kubectl get notebooks.tensorstack.dev app-jupyterlab-cpu-fb1923-1c -n demo -o "jsonpath={.status.url}")
$ t9k-pf notebook $NB_URL <Port>
Trying to connect [notebooks/app-jupyterlab-cpu-fb1923-1c] in namespace [demo]
now you can forward to your target by 127.0.0.1:<Port>
对于变量/参数说明如下:
NB_URL
:App 的网页 UI 地址。上述获取方式需要本地安装和配置命令行工具 kubectl,另一种获取方式是直接进入网页 UI,复制浏览器地址栏中的地址作为NB_URL
变量的值。Port
:本地转发端口。默认使用 5001,但你也可以使用其他任意端口。
端口转发成功后,即可使用本地端口与 App 建立 SSH 连接。
建立 SSH 连接
使用终端
在终端中运行以下命令以连接到 App:
ssh t9kuser@localhost -p <Port> \
-o StrictHostKeyChecking=no \
-o GlobalKnownHostsFile=/dev/null \
-o UserKnownHostsFile=/dev/null
然后在终端中进行操作:

使用 VS Code
安装 Remote SSH 插件
在 VS Code 中搜索 Remote - SSH 插件并安装:

添加 SSH Config
安装完成后,需要在 SSH Config 中添加主机(App)的信息。
VS Code 提供了编辑 SSH Config 的方式。点击左下角的绿色 >< 符号,选择 Connect to Host,然后拉动滚动条到最下方,点击 Add New SSH Host:

根据提示,输入以下内容,然后按下回车键(Enter):
ssh t9kuser@localhost -p <Port>

VS Code 会提示 Select SSH configuration file to update,第一个选择项通常是位于 $HOME/.ssh/config
的配置文件,你可以选择将主机的信息存储在第一个配置文件中。
连接到 App
点击左下角的绿色 >< 符号,选择 Connect to Host:

然后选择 SSH Config 中对应的主机名(使用上述配置方式时,主机名为 localhost
):

VS Code 会新建一个窗口,等待连接建立之后,左下角会提示 SSH: Host。
点击 Open Folder 可以选择打开的目录或者文件。你可以和本地开发一样使用 VS Code 进行操作:

使用 PyCharm
使用 PyCharm 远程连接到 App 需要满足以下前提条件:
- 安装了 PyCharm 专业版,且版本不低于 2022.2。PyCharm 有专业版(Professional)和社区版(Community),目前仅 PyCharm Professional 支持远程 SSH 开发。
- App 的资源配置至少为 3 个 CPU,3 GiB 内存,App 绑定的持久卷至少有 2.5 GiB 的可用空间。推荐配置为至少 4 个 CPU,4 GiB 内存,5 GiB 持久卷。
打开 PyCharm,在左侧的导航菜单中点击 Remote Development > SSH,然后点击右侧的 New Connection:

在弹出的对话框中填写如下参数:
Username
:SSH 使用的用户名。Host
:主机地址,通常为127.0.0.1
。Port
:端口。Specify private key
:建议勾选,并选择与你上传的公钥对应的私钥。

点击 Check Connection and Continue,进入下一步:

这里选择了在 App 中安装的 IDE Backend 版本为 PyCharm 2022.2.3,远程打开的项目目录为 /t9k/mnt
。点击 Download IDE and Connect 后,就可以通过 PyCharm 访问 App 中的文件了。
你可以和本地开发一样使用 PyCharm 来操作 App:

SSH 远程连接 App 时,无法使用 kubectl 命令
通过 SSH 远程连接到 App,执行 kubectl 命令时,可能会遇到以下错误信息:
tf-docker ~ > kubectl get pod -o wide
The connection to the server localhost:8080 was refused - did you specify the right host or port?
原因是当前 shell 缺少一些 K8s 相关的环境变量。可以通过执行以下命令来解决:
export $(cat /proc/1/environ | tr '\0' '\n' | grep KUBERNETES | xargs)
无法使用 sudo 命令
原因可能是:
- 未选用标签带有
-sudo
后缀的镜像 - T9k admission 禁止了容器使用 privileged 权限,或者禁止了权限提升
如果你排除了原因 1,请联系平台的管理员寻求解决。
命令执行失败,显示 Killed
原因是进程因为内存不足被杀掉。请重新配置和安装 App,配置时申请更多的内存资源。
参考
如何通过 SSH 远程连接: