Kubeflow 1.4 설치 with Minikube

2021. 11. 25. 00:40·MLOps

Ubuntu 20.04가 설치되어 있는 데스크탑에 Kubeflow 1.4 설치하는 방법을 정리하려고 해요. docker, minikube, kubectl, kustomize는 설치방법이 정말 많이 나와있으니 적절히 설치 후에 과정을 진행해주세요. 제 PC에 설치된 스펙은 다음과 같습니다.

  • Docker: 20.10.10
  • minikube: 1.21.0
  • kubectl: 1.21.7
  • kustomize: 3.2.0 (4.0 이상은 kubeflow 설치에 지원안된다고 공식 문서에 나와잇습니다)

목차

  1. Minikube로 Kubernetes Cluster 구성하기
  2. Kubeflow 1.4 설치

1. Minikube로 Kubernetes Cluster 구성하기

Minikube가 설치되어 있다면 쿠버네티스 클러스터 만들기는 되게 간단해요. 아래의 명령어를 입력하면 됩니다.
(주의!, 저는 놀고있는 16 core CPU, 32 GB RAM을 가진 데스크탑에 환경을 구성하는 것이여서 크게 잡았어요. 사양에 따라 적절한 cpu 코어수와 memory를 설정해주세요)

minikube start --cpus 8 --memory 12288

 

2. Kubeflow 1.4 설치

Kubeflow 1.3 버전이후로 kustomize를 이용해서 정말 간단하게 Kubeflow를 설치할 수 있어요! 먼저 kubeflow manifests 레포지토리를 가져오겠습니다.

git clone https://github.com/kubeflow/manifests.git

지금 글을 작성하는 시점에 master로 설치하면 1.3 버전이 설치가 돼요. 저는 1.4 버전을 설치할 것이기 때문에 master 브랜치에서 v1.4-branch 브랜치로 변경할게요

git checkout v1.4-branch

이제 설치하면 되는데 그 전에 한가지만 더 하고 설치할게요. user profile과 namespace에 관한 부분입니다. 2곳을 수정할 거에요.
첫번째 수정할 곳!! manifests/common/user-namespace/base/params.env

# before
user=user@example.com
profile-name=kubeflow-user-example-com

# after
user=jsuwan961205@gmail.com
profile-name=suwan

두번째 수정할 곳!! manifests/common/dex/base/config-map.yaml
기존의 user에 대한 정보를 변경해도 무방하긴하다. 나는 아래에 내 계정을 추가해줬다. hash에 대한 부분은 여기에 접속해 원하는 비밀번호를 입력하면 암호화 된 해시 값을 받을 수 있다.

# before
    staticPasswords:
    - email: user@example.com
      hash: $2y$12$4K/VkmDd1q1Orb3xAt82zu8gk7Ad6ReFR4LCP9UeYE90NLiN9Df72
      # https://github.com/dexidp/dex/pull/1601/commits
      # FIXME: Use hashFromEnv instead
      username: user
      userID: "15841185641784"

# after
    staticPasswords:
    - email: user@example.com
      hash: $2y$12$4K/VkmDd1q1Orb3xAt82zu8gk7Ad6ReFR4LCP9UeYE90NLiN9Df72
      # https://github.com/dexidp/dex/pull/1601/commits
      # FIXME: Use hashFromEnv instead
      username: user
      userID: "15841185641784"
    - email: jsuwan961205@gmail.com
      hash: $2b$10$lufPa5m5SCTDkSVIiFlbYe4VFc5rbGC1XzCZgHWqDonVI90UHMFvi
      username: suwan
      userID: suwan

두가지를 잘 변경했다면 이제 진짜로 설치해보자.
manifests 폴더로 이동한뒤 아래의 명령어를 수행한다.

while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done

뭐가 믹 이것저것 뜰텐데 example 폴더 내부에 있는 kustomization.yaml에 있는 다양한 리소스들을 쿠버네티스위에 설치하겠다는 내용들이다. 당연히 실제 설치는 쿠버네티스의 pods를 통해서 확인할 수 있다. 확인해보자

kubectl get pods -A

시작과 함께 위의 명령어를 입력하면 대부분 STATUS 부분에 Container Creating 혹은 Pending 혹은 Init 으로 확인될 것이다. 하지만 약 15분정도의 시간이 지나면 아래와 같은 결과를 확인할 수 있을 것이다. watch 명령어로 아래의 결과를 모니터링 하면서 기도하면 시간가는 줄 모른다!! watch kubectl get pods -A 를 입력해보자

NAMESPACE          NAME                                                        READY   STATUS    RESTARTS   AGE
auth               dex-5ddf47d88d-p6crv                                        1/1     Running   1          19m
cert-manager       cert-manager-7dd5854bb4-5jhbf                               1/1     Running   0          19m
cert-manager       cert-manager-cainjector-64c949654c-gtdw7                    1/1     Running   0          19m
cert-manager       cert-manager-webhook-6bdffc7c9d-nl6cn                       1/1     Running   0          19m
istio-system       authservice-0                                               1/1     Running   0          18m
istio-system       cluster-local-gateway-7bf6b98855-4m8m8                      1/1     Running   0          19m
istio-system       istio-ingressgateway-78bc678876-wk77z                       1/1     Running   0          19m
istio-system       istiod-755f4cc457-sp542                                     1/1     Running   0          18m
knative-eventing   eventing-controller-64d97555b-w56fq                         1/1     Running   0          18m
knative-eventing   eventing-webhook-5c5b8d5c6d-jzcbq                           1/1     Running   0          18m
knative-eventing   imc-controller-688df5bdb4-nf7xt                             1/1     Running   0          18m
knative-eventing   imc-dispatcher-5dbb47f555-ff2ll                             1/1     Running   0          18m
knative-eventing   mt-broker-controller-856784c8ff-xc8gm                       1/1     Running   0          18m
knative-eventing   mt-broker-filter-68fcfcc6c8-ncj9c                           1/1     Running   0          18m
knative-eventing   mt-broker-ingress-bd54bc995-lwhq2                           1/1     Running   0          18m
knative-serving    activator-546897c9dd-tcw4t                                  2/2     Running   1          17m
knative-serving    autoscaler-7ffbf6d595-lxfc6                                 2/2     Running   1          17m
knative-serving    controller-5894998d7b-6xplt                                 2/2     Running   1          17m
knative-serving    istio-webhook-578b6b7654-bqt9j                              2/2     Running   1          17m
knative-serving    networking-istio-6b88f745c-k8jkf                            2/2     Running   1          17m
knative-serving    webhook-c59cc5b48-4pqcj                                     2/2     Running   1          17m
kube-system        coredns-74ff55c5b-k7mpt                                     1/1     Running   0          49m
kube-system        etcd-minikube                                               1/1     Running   0          49m
kube-system        kube-apiserver-minikube                                     1/1     Running   0          49m
kube-system        kube-controller-manager-minikube                            1/1     Running   0          49m
kube-system        kube-proxy-rfr2k                                            1/1     Running   0          49m
kube-system        kube-scheduler-minikube                                     1/1     Running   0          49m
kube-system        storage-provisioner                                         1/1     Running   1          49m
kubeflow           admission-webhook-deployment-667bd68d94-rztsg               1/1     Running   0          17m
kubeflow           cache-deployer-deployment-79fdf9c5c9-xzh2t                  2/2     Running   1          17m
kubeflow           cache-server-5bdf4f4457-ddd8n                               2/2     Running   0          17m
kubeflow           centraldashboard-7d496c59bb-hgllh                           1/1     Running   0          17m
kubeflow           jupyter-web-app-deployment-6f744fbc54-b4jgx                 1/1     Running   0          17m
kubeflow           katib-controller-68c47fbf8b-pndjj                           1/1     Running   0          17m
kubeflow           katib-db-manager-6c76bdc855-7kvxz                           1/1     Running   1          17m
kubeflow           katib-mysql-6dcb447c6f-fdjhn                                1/1     Running   0          17m
kubeflow           katib-ui-64bb96d5bf-zrjnr                                   1/1     Running   0          17m
kubeflow           kfserving-controller-manager-0                              2/2     Running   0          17m
kubeflow           kfserving-models-web-app-7884f597cf-sg76c                   2/2     Running   0          17m
kubeflow           kubeflow-pipelines-profile-controller-7b947f4748-v28xq      1/1     Running   0          17m
kubeflow           metacontroller-0                                            1/1     Running   0          17m
kubeflow           metadata-envoy-deployment-5b4856dd5-ftw8c                   1/1     Running   0          17m
kubeflow           metadata-grpc-deployment-748f868f64-s4hs4                   2/2     Running   2          17m
kubeflow           metadata-writer-548bd879bb-4w94k                            2/2     Running   0          17m
kubeflow           minio-5b65df66c9-lz9vs                                      2/2     Running   0          17m
kubeflow           ml-pipeline-5784f9d9cc-z4zw8                                2/2     Running   1          17m
kubeflow           ml-pipeline-persistenceagent-d6bdc77bd-q8fl9                2/2     Running   0          17m
kubeflow           ml-pipeline-scheduledworkflow-5db54d75c5-chsfw              2/2     Running   0          17m
kubeflow           ml-pipeline-ui-5447cb9556-zrk2v                             2/2     Running   0          17m
kubeflow           ml-pipeline-viewer-crd-68fb5f4d58-sqtp2                     2/2     Running   1          17m
kubeflow           ml-pipeline-visualizationserver-cf88b98f7-n5tc6             2/2     Running   0          17m
kubeflow           mpi-operator-5c55d6cb8f-j92hp                               1/1     Running   0          17m
kubeflow           mysql-f7b9b7dd4-whs8v                                       2/2     Running   0          17m
kubeflow           notebook-controller-deployment-578fd4dc97-tppwj             1/1     Running   0          17m
kubeflow           profiles-deployment-7cc7956dfd-q8g2c                        2/2     Running   0          17m
kubeflow           tensorboard-controller-controller-manager-954b7c544-94dgs   3/3     Running   1          17m
kubeflow           tensorboards-web-app-deployment-6ff79b7f44-8sq2f            1/1     Running   0          17m
kubeflow           training-operator-795c5cb864-2wg2b                          1/1     Running   0          17m
kubeflow           volumes-web-app-deployment-8589d664cc-k7pjs                 1/1     Running   0          17m
kubeflow           workflow-controller-76dd87cd85-x5qqk                        2/2     Running   1          17m
suwan              ml-pipeline-ui-artifact-5dd95d555b-v7bwv                    2/2     Running   0          8m43s
suwan              ml-pipeline-visualizationserver-6b44c6759f-8k28p            2/2     Running   0          8m43s

이제 마지막으로 Dashboard에 접속해보자. Kubeflow 1.4 버전에선 istio기반의 ingressgateway를 통해 각 서비스가 연결된 대시보드를 제공한다. NodePort기 때문에 NodeIP:NodePort를 통해서 접속할수도 있지만 간단히 Port-forwarding을 통해 접속해보자

kubectl port-forward svc/istio-ingressgateway -n istio-system 8888:80

localhost:8888 로 접속해보자. 아이디 비밀번호는 기억하기 바란다.. 접속하면 아래와 같은 화면을 확인할 수 있다!

'MLOps' 카테고리의 다른 글
  • Airflow로 MNIST 학습 파이프라인 실행하기
  • Terraform으로 GCP에서 Kubernetes 환경 구축하기
  • [MLOps] Vertex AI에서 MNIST 학습, 배포, 서빙
  • [MLOps] Colab에서 GCP 인증 GOOGLE_APPLICATION_CREDENTIALS
ssuwani
ssuwani
  • ssuwani
    Oops!!
    ssuwani
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • MLOps (19)
      • 데이터 엔지니어링 (4)
      • Kubernetes (5)
      • Kafka (10)
      • 📚책 (3)
      • 라즈베리파이 (1)
      • ETC (8)
      • Python (6)
      • 언어모델 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    consumer
    auto tagging
    mlflow
    datadrift
    태그2
    evidently ai
    FastAPI
    Spark
    Confluent Cloud
    Github Actions
    Prometheus
    Docker
    태그1
    topic
    Python
    Kafka
    LangChain
    Schema Registry
    gcp
    asyncronous
    LLM
    producer
    fluentbit
    Airflow
    Kubeflow
    RDD
    redis
    BentoML
    Kubernetes
    MLOps
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ssuwani
Kubeflow 1.4 설치 with Minikube
상단으로

티스토리툴바