跳转至

TensorStack PortForward CLI

TensorStack PortForward CLI(简称 t9k-pf) 是 TensorStack AI 平台的命令行工具,其功能类似于 kubectl port-forward,使用户能够在本地通过端口转发的方式访问 TensorStack AI 平台的各种资源。目前支持的资源类型有 Notebook、Pod、Service。

准备

安装

t9k-pf 可以从平台首页下载。请根据操作系统和架构(可以在命令行运行 uname -om 获取)选择适当的版本,并根据下载的版本,设置 t9k-pf 的版本和系统架构等变量:

version=0.1.9
os=darwin
arch=amd64

然后解压下载好的 t9k-pf,并把得到的二进制文件移动到 /usr/local/bin 路径下:

tar -zxvf "$HOME/Downloads/t9k-pf-$version-$os-$arch.tar.gz"
mv t9k-pf-$os-$arch /usr/local/bin/t9k-pf
rm -f "$HOME/Downloads/t9k-pf-$version-$os-$arch.tar.gz"

安装完成后,运行以下命令来验证安装是否成功:

t9k-pf -h

如果要卸载 t9k-pf,直接删除对应位置的二进制文件即可。

身份认证和授权

t9k-pf 会默认使用 $HOME/.t9k/t9k-config.yaml 路径下 T9k Config 中 current-context 的认证信息进行身份认证。您可以通过命令行参数 -c, --config 来指定 t9k-pf 使用的 T9k Config 文件的路径。

下面是一个 T9k Config 的示例,其中 current-context 为 demo1demo1 对应 context 下的 auth 的 token 不为空,因此最终 t9k-pf 使用该值 demo1-token 来完成身份验证(如果 apikey 和 token 均不为空,t9k-pf 优先使用 apikey)。

current-context: demo1
contexts:
- name: demo1
  server: https://<example.com>
  image-registry: https://<example.io>
  prefixes:
    aimd: /t9k/aimd/server
    asset-hub: /t9k/asset-hub/server
    build-console: /t9k/build-console/server
    cluster-admin: /t9k/cluster-admin/server
    deploy-console: /t9k/deploy-console/server
    workflow: /t9k/workflow/server
  auth:
    apikey: ""
    token: demo1-token
  extension:
    codepack:
      data-copy-image: <your-image>
- name: demo2
  server: https://<example.com>
  ...

注意

如果默认的 T9k Config 文件不存在,您可以先了解 T9k Config 相关内容,并生成默认文件。

如果默认配置文件不符合您的要求,您可以编辑您使用的 T9k Config 文件。或者临时通过命令行参数 -k,--apikey 直接指定 API Key。例如输入以下指令(其中 notebook <URL> 相关命令会在下文介绍,此处只用关注 --apikey 的使用):

t9k-pf notebook <URL> --apikey

命令行会进入交互式输入界面,粘贴您的 API Key 再按下回车即可。

使用手册

访问 Pod

您可以通过 t9k-pf 命令行工具访问指定 Pod 的指定端口。其主要用法如下:

首先请确定要连接的 Pod 的名称(name)以及命名空间 (namespace)。下文中我们会用 <Name> 代表 Pod 的名称,<Namespace> 代表 Pod 的命名空间。

然后请确定要连接的目标端口以及本地进行端口转发的端口(如果不指定,会随机指定本地监听的端口)。下文中我们会用 <LocalPort> 代表本地监听的端口,<TargetPort> 代表目标 Pod 的端口。

注意

小于 1024 的端口需要管理员权限才可以绑定。

最后请确认您使用的 TensorStack port-forward 服务端的地址。该地址一般为您所使用的 TensorStack AI 平台的域名加上 /t9k/port-forward,如果不能确定地址,请咨询管理员。确认地址后,需要通过 -t 来指定该值,下文中我们会用 <Host> 来代表服务端的地址。

确定了以上信息后,在命令行中输入以下命令,便可开启端口转发:

t9k-pf pod <Name> <LocalPort>:<TargetPort> -n <Namespace> -t <Host>

注意

此处的 namespace 不和 t9kctl 和 kubectl 共享,如果您不通过 -n 指定 namespace,该值会被设为'default'。

例如输入:

t9k-pf pod example 3333:2222 -n dev

命令行会打印出 127.0.0.1:3333, 然后您便可通过本地的该端口访问到命名空间 dev 下的 Pod example 的 2222 端口。

您也可以不指定本地端口,例如输入 :

t9k-pf pod example 2222 -n dev

命令行会随机返回一个本地端口,例如 127.0.0.1:57873。然后您便可通过本地的该端口访问到命名空间 dev 下的 Pod example 的 2222 端口。

注意

在 port-forward 成功后,您仍然需要保持您的 t9k-pf 命令行窗口一直保持运行状态。

访问 Service

您可以通过 t9k-pf 命令行工具访问指定 Service 的指定端口。其用法与访问 Pod 的方法类似。例如输入:

t9k-pf service example 3333:2222 -n dev

您便可以在本地通过 3333 端口访问 Service example 的 2222 端口。

访问 Notebook

针对 TensorStack AI 平台的 Notebook 资源,我们提供了直接通过其 URL 地址获取 SSH 连接方式的功能。使用该命令,您不再需要指定名称、命名空间以及服务端地址。

其用法如下:

t9k-pf notebook <URL> <LocalPort>

其中 <URL> 代表地址栏中的地址,<LocalPort> 代表您指定的本地端口号,如果不指定,会返回随机端口。

注意

与前面不同,为了方便用户快速连接 SSH,t9k-pf 命令行不支持指定 Notebook 资源的目标端口。如果您有相关需求,可以先获取 Notebook 对应的 Pod 资源,然后参照访问 Pod 来访问特定的目标端口。

例如输入:

t9k-pf notebook <tensorstack-host>/t9k/build-console/projects/demo/notebooks/demo-notebook/lab/tree/demo.ipynb 3333

您便可以在本地通过 3333 端口访问 demo 项目下的 demo-notebook 的 SSH 端口。关于 SSH 连接的详细内容请参阅通过 SSH 连接远程使用 Notebook

Flags 参考

  • -c, --config

    T9k Config 文件的路径。

  • -k, --apikey

    开启交互式输入 API Key。

  • -n, --namespace

    目标资源的命名空间。

  • -t, --t9kServiceHost

    TensorStack port-forward 服务端的地址,该地址一般为您所使用的 TensorStack AI 平台的域名加上 /t9k/port-forward,如果您不能确定该地址,请咨询管理员。