【问题标题】:Running multiple applications parallel on single Ingress Controller (e.g. JupyterLab/Elyra + Kubeflow Pipelines UI)在单个 Ingress Controller 上并行运行多个应用程序(例如 JupyterLab/Elyra + Kubeflow Pipelines UI)
【发布时间】:2021-07-08 15:06:47
【问题描述】:

我已经在 KIND(Kubernetes In Docker)集群上并行安装了 Elyra(它是 JupyerLab + 一些以 AI 为中心的扩展,包括用于创建 Kubeflow Pipelines 的可视化编辑器)和 KubeFlow Pipelines。

首先,我按照here 的文档安装了 Kubeflow 管道

导出 PIPELINE_VERSION=1.4.1
kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/cluster-scoped-resources?ref=$PIPELINE_VERSION"
kubectl 等待 --for 条件=建立 --timeout=60s crd/applications.app.k8s.io
kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/platform-agnostic-pns?ref=$PIPELINE_VERSION"

然后,我已经按照 here 的文档安装了 NGINX 入口控制器

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml

最后,我使用以下steps 安装了 Elyra/JupyterLab

所以我需要的所有 UI 都已经创建了相应的服务:

k 获取 svc
名称 类型 集群 IP 外部 IP 端口 年龄
elyra-ai 节点端口 10.96.84.31 8888:32111/TCP 94m
Kubernetes ClusterIP 10.96.0.1 443/TCP 105m

k get svc -n kubeflow |grep ml-pipeline-ui
ml-pipeline-ui ClusterIP 10.96.132.233 80/TCP 105m

因此,我创建了一个 ingress.yaml 来启用 JupyterLab/Elyra 的访问权限。

如您所见,我添加了许多路径条目,例如 login、elyra、git、lsp、lab、kernelspecs、static...

所以现在我被困在二维中了。

  1. 我不想为我正在安装的每个 JupyterLab 扩展添加路径条目
  2. 我找不到让 Kubeflow Pipelines UI 也可以从集群外部访问的方法

虽然 Elyra 管道编辑器可以通过 ClusterIP 访问 Kubeflow Pipelines Endpoint,但也可以访问 Kubeflow Pipelines UI...

【问题讨论】:

    标签: jupyter-lab nginx-ingress kubeflow kubeflow-pipelines elyra


    【解决方案1】:

    最简单的方法是使用虚拟主机。因此,在 DNS 或 /etc/hosts 文件中添加例如:

    127.0.0.1 elyra.local.host
    127.0.0.1 kubeflow.local.host

    那么这两个service.yaml就变得直截了当,对于Elyra/JupyteLab:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: elyra-ingress
    spec:
      rules:
      - host: "elyra.local.host"
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: elyra-ai
                port:
                  number: 8888
    

    对于 Kubeflow 管道:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: kfp-ingress
    spec:
      rules:
      - host: "kubeflow.local.host"
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: ml-pipeline-ui
                port:
                  number: 80
    

    【讨论】:

      猜你喜欢
      • 2021-02-28
      • 2021-11-28
      • 2023-04-09
      • 1970-01-01
      • 2020-08-10
      • 2021-09-21
      • 2021-04-26
      • 2016-08-28
      • 2014-05-11
      相关资源
      最近更新 更多