안녕하세요, 오늘은 kubeflow에서 파이프라인 구축 중 파이프라인이 작동하지 않는 이슈를 해결하면서 알게 된 해결 방법을 공유해보고자 합니다.
일단 aws EKS 클러스터에서 정상적으로 Kubeflow를 설치하셨다는 가정하에 내용을 진행하겠습니다.
이슈 내용은 다양하겠지만 Pod describe나, logs 등을 살펴보면서 해결을 시도하셨을 겁니다.
이슈가 발생했을 때의 로그들을 모두 기록해두지 않았지만 대충 보면 아래의 내용과 비슷합니다.
MountVolume.SetUp failed for volume "docker-sock" : hostPath type check failed: /var/run/docker.sock is not a socket file
This step is in Error state with this message: Error (exit code 1): key unsupported: cannot get key for artifact location, because it is invalid
Error(exit code 2)
등등, 처음엔 Docker 문제부터 시작해서 아티팩트 저장소를 가져오지 못하고, 파이프라인 코드 자체에 문제가 있는 등의 다양한 문제를 겪었습니다.
EKS에서 Kubeflow를 설치하면 기본 설정값이 있는데, 이 설정을 변경해주면 정상적으로 파이프라인을 실행할 수 있습니다.
kubectl edit configmap workflow-controller-configmap -n kubeflow
containerRuntimeExecutor: emissary
혹은 containerRuntimeExecutor: pns
로 변경해줍니다.(기본은 docker입니다.)my-s3-credentials
라는 이름으로 secret도 생성해주시면 되겠습니다.apiVersion: v1
data:
config: |
{
executorImage: argoproj/argoexec:v3.1.14,
containerRuntimeExecutor: emissary,
artifactRepository:
{
s3: {
endpoint: s3.amazonaws.com,
bucket: mlpl,
accessKeySecret: {
name: my-s3-credentials,
key: accesskey
},
secretKeySecret: {
name: my-s3-credentials,
key: secretkey
}
}
}
}
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","data":{"config":"{\nexecutorImage: argoproj/argoexec:v2.3.0,\ncontainerRuntimeExecutor: docker,\nartifactRepository:\n{\n s3: {\n bucket: mlpipeline,\n keyPrefix: artifacts,\n endpoint: minio-service.kubeflow:9000,\n insecure: true,\n accessKeySecret: {\n name: mlpipeline-minio-artifact,\n key: accesskey\n },\n secretKeySecret: {\n name: mlpipeline-minio-artifact,\n key: secretkey\n }\n }\n}\n}\n"},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/component":"argo","app.kubernetes.io/name":"argo","kustomize.component":"argo"},"name":"workflow-controller-configmap","namespace":"kubeflow"}}
creationTimestamp: "2021-11-16T23:38:33Z"
labels:
app.kubernetes.io/component: argo
app.kubernetes.io/name: argo
kustomize.component: argo
name: workflow-controller-configmap
namespace: kubeflow
resourceVersion: "31127767"
uid: f2db86b2-55d2-4755-b215-b20c64c11fc9
- `kubectl rollout restart deployment workflow-controller -n kubeflow`