Я реализовал простой одностадийный конвейер вывода 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?
Спасибо