Как открыть конечную точку API REST конвейера вывода в Kubeflow - PullRequest
0 голосов
/ 21 октября 2019

Я реализовал простой одностадийный конвейер вывода ML. Я загрузил конвейер из пользовательского интерфейса kubeflow и создал прогон. Все вроде бы нормально - ошибок нет.

Этот конвейер содержит один компонент, который содержит контейнер с Flask и предоставляет REST API. Я могу открыть командную строку контейнера Flask в pod и curl на 127.0.0.1

. Я создал службу, используя NodePort, для предоставления API REST, и, кажется, все в порядке.

Нопорт 31128 возвращает закрытое соединение. Ниже приведено описание pod

Name:           pipe1-llq4f-4023890614
Namespace:      kubeflow
Priority:       0
Node:           trainer/192.168.0.38
Start Time:     Thu, 17 Oct 2019 01:08:28 +0000
Labels:         workflows.argoproj.io/completed=false
                workflows.argoproj.io/workflow=pipe1-llq4f
Annotations:    pipelines.kubeflow.org/component_spec: {"name": "my_component"}
                workflows.argoproj.io/node-message:
                  Error response from daemon: No such container: e095eefba4123fd4b0df2a399ed6d385a668b65ee93419c427e2aae3bce97b32
                workflows.argoproj.io/node-name: pipe1-llq4f.infer
                workflows.argoproj.io/template:
                  {"name":"infer","inputs":{},"outputs":{},"metadata":{"annotations":{"pipelines.kubeflow.org/component_spec":"{\"name\": \"my_component\"}"...
Status:         Running
IP:             10.1.22.184
Controlled By:  Workflow/pipe1-llq4f
Containers:
  wait:
    Container ID:  containerd://e3e4987273b66da2d8e6f3d5af2b2280730fb533849f3430a4c2fa9f7fde9890
    Image:         argoproj/argoexec:v2.3.0
    Image ID:      docker.io/argoproj/argoexec@sha256:85132fc2c8bc373fca885df17637d5d35682a23de8d1390668a5e1c149f2f187
    Port:          <none>
    Host Port:     <none>
    Command:
      argoexec
      wait
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 17 Oct 2019 01:08:30 +0000
      Finished:     Thu, 17 Oct 2019 01:08:35 +0000
    Ready:          False
    Restart Count:  0
    Environment:
      ARGO_POD_NAME:  pipe1-llq4f-4023890614 (v1:metadata.name)
    Mounts:
      /argo/podmetadata from podmetadata (rw)
      /var/run/docker.sock from docker-sock (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from pipeline-runner-token-6gltt (ro)
  main:
    Container ID:   containerd://e095eefba4123fd4b0df2a399ed6d385a668b65ee93419c427e2aae3bce97b32
    Image:          praveen049/inf
    Image ID:       docker.io/praveen049/inf@sha256:1d6a236bba6d6ec634fbfc30092af70fe9c70c0b782d7bcbcb812cb33559bf09
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Thu, 17 Oct 2019 01:08:34 +0000
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from pipeline-runner-token-6gltt (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  podmetadata:
    Type:  DownwardAPI (a volume populated by information about the pod)
    Items:
      metadata.annotations -> annotations
  docker-sock:
    Type:          HostPath (bare host directory volume)
    Path:          /var/run/docker.sock
    HostPathType:  Socket
  pipeline-runner-token-6gltt:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  pipeline-runner-token-6gltt
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

Подробности службы Nodeport


Name:                     infer
Namespace:                kubeflow
Labels:                   app=demo
                          name=infer
Annotations:              <none>
Selector:                 name=my_component
Type:                     NodePort
IP:                       10.152.183.21
Port:                     <unset>  88/TCP
TargetPort:               5000/TCP
NodePort:                 <unset>  31128/TCP
Endpoints:                <none>
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

А вот конвейер yaml

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  annotations:
    pipelines.kubeflow.org/pipeline_spec: '{"description": "My machine learning pipeline",
      "name": "pipe1"}'
  generateName: pipe1-
spec:
  arguments:
    parameters: []
  entrypoint: pipe1
  serviceAccountName: pipeline-runner
  templates:
  - container:
      image: praveen049/inf
    metadata:
      annotations:
        pipelines.kubeflow.org/component_spec: '{"name": "my_component"}'
    name: infer
  - dag:
      tasks:
      - name: infer
        template: infer
    name: pipe1

Любые предложения о том, чего мне не хватает, чтобы разоблачитьREST API и получить кудри Node?

Спасибо

...