관리 메뉴

코딩 기록 저장소

[쿠버플로우] 설치 및 세팅하기 본문

개인 공부/쿠버플로우

[쿠버플로우] 설치 및 세팅하기

KimNang 2025. 6. 5. 10:13

목차

     

    Master노드 버전 정리

    - kubernetes : v1.28.15

    - kustomize : v5.6.0

    - kubeflow : v1.8.0

    1. Kubeflow 설치 및 접속

    01. Kubeflow 설치하기

    kustomize를 설치함
    curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"  | bash
    install kustomize /usr/bin/kustomize

     

     

     

    manifest git을 clone 함
    git clone https://github.com/kubeflow/manifests.git
    cd manifests
    git checkout v1.8.0

     

     

     

    http로 접속할 수 있도록 설정함

    - 아래 3개 파일의 secure_cookies를 false로 설정함

    1. apps/jupyter/jupyter-web-app/upstream/base/params.env
    2. apps/tensorboard/tensorboards-web-app/upstream/base/params.env
    3. apps/volumes-web-app/upstream/base/params.env

     

     

    deployment.yaml 수정

    common/oidc-client/oauth2-proxy/base/deployment.yaml

    - ndots를 4로 설정

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: oauth2-proxy
      labels:
        app: oauth2-proxy
    spec:
      replicas: 2
      selector:
        matchLabels:
          app.kubernetes.io/name: oauth2-proxy
      template:
        metadata:
          labels:
            app.kubernetes.io/name: oauth2-proxy
        spec:
          dnsConfig:
            options:
              - name: ndots
                value: "4"

     

     

     

    kustomize를 사용해 kubeflow 설치하기

    - 5분에서 10분 정도 소요됨

    - 모든 pod가 running이 될 때까지 기다림

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

     

     

     

    02. Kubeflow 접속하기

    istio-ingressgateway 수정

    - 기본적으로 ClusterIP 타입으로 생성되기 때문에, 호스트 환경에서 접속하기 위해 NodePort로 변경

    kubectl edit -n istio-system svc istio-ingressgateway

     

     

    Kubeflow 접속 해결

    - http://{Node IP + 포트번호}로 접속

    - 이때 Access to {IP주소} was denied You don't hava authorization to view this page. HTTP ERROR 403 이런 오류가 뜸

     

    1. PVC 정보 확인함
      - authservice-pvc가 Pending 상태로 뜸
      - 요청한 PersistentVolumeClaim(PVC)에 연결할 수 있는 PersistentVolume(PV)이 없음
      - 이로 인해 oidc-authservice Pod도 실행되지 않고, 결국 403 인증 오류가 생김
      kubectl get pvc -n istio-system


    2. local-path-provisioner 설치함
      - 로컬 테스트 환경이라 local-path StorageClass를 사용함
      kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml

      - 설치 후 StorageClass 목록에 local-path가 나타나야 함
      kubectl get storageclass


    3. PVC에 local-path 지정
      - oidc-authservice에서 사용하는 PVC 리소스를 수정함
      nano authservice-pvc.yaml

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: authservice-pvc
        namespace: istio-system
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
        storageClassName: local-path

      - PVC yaml 파일 수정 후 적용함
      kubectl delete pvc authservice-pvc -n auth
      kubectl apply -f authservice-pvc.yaml


    4. PVC 바인딩 상태 확인
      kubectl get pvc -n istio-system


    Kubeflow 접속

    - http://{Node IP + 포트번호}로 접속

    - 아래 사진과 같은 사이트가 뜨는데 기본 계정으로 로그인 

    • 기본 계정 : user@example.com
    • 패스워드 : 12341234

     

    - 이렇게 뜨면 접속 성공!

     

     

    03. Kubeflow 삭제

    - 단일 명령어로 Kubeflow 삭제가 가능함

    cd /home/$USER/manifests
    kustomize build example | kubectl delete -f -

     

     

    2. kubeflow 사용자 세팅

    01. 유저 프로필 생성하기

    1. profile.yaml을 활용해 유저 프로필 생성하기
      - kubeflow > manifests > common > dex > base 경로에 yaml 파일 생성
      - nang-profile.yaml로 생성함

      apiVersion: kubeflow.org/v1
      kind: Profile
      metadata:
          name: nang # 생성하고 싶은 프로필의 이름(네임스페이스로 지정할 이름)
      spec:
          owner:
              kind: User
              name: nang@example.com # 생성하고 싶은 프로필의 이메일(Kubeflow로그인ID)

      - apply 명령어를 이용해 profile을 적용함
      kubectl apply -f nang-profile.yaml

      ※ 프로필 생성 시 spec 하위에 resourceQuotaSpec 추가할 수 있음
      - 유저를 추가할 때 프로필 별 사용할 수 있는 리소스 양 지정 가능
      apiVersion: kubeflow.org/v1beta1
      kind: Profile
      metadata:
          name: nang
      spec:
          owner:
              kind: User
              name: nang@example.com
       	resourceQuotaSpec:
              hard:
                  cpu: "2"
                  memory: 1Gi
                  persistentvolumeclaims: "1"
                  requests.storage: "10Gi"


    2. config-map.yaml을 활용해 유저 등록
      - kubeflow > manifests > common > dex > base >config-map.yaml 파일을 수정하면 위에서 생성한 유저의 네임스페이스와 Kubeflow의 정보를 매핑함
      - username: 네임스페이스명 / email: Kubeflow 로그인 ID / hash: 암호화된 비밀번호

      - config-map.yaml 적용함
      kubectl apply -f config-map.yaml -n auth


    3. 적용 후 확인하기
      - 네임스페이스 및 config 설정을 적용하기 위해서는 dex를 재실행해야 함
      kubectl rollout restart deployment dex -n auth
       

      - 적용이 잘 되었음!!

     

     

    02. kubeflow 권한 제한하기

    kim 프로필 생성

    - 이 Profile을 만들면 kim 네임스페이스와 kim@example.com 사용자에게 edit 권한이 부여됨

     

     

    Role 생성

    - kim 사용자가 nang 네임스페이스에 접속했을 때 오직 Notebook만 생성/조회/삭제할 수 있도록 Role을 정의함

     

     

    Rolebinding 부여

     

     

     

     

     

    참고한 링크

    1. Kubeflow 설치 및 접속

    https://kyeongseo.tistory.com/entry/kubeflow-190-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

     

    kubeflow 1.9.0 설치하기

    kubernetes versionv1.29.8kubeflow version1.9.0kustomize versionv5.4.31. kustomize를 설치한다.curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash install kustomize /usr/bin/kustomize 2. manifes

    kyeongseo.tistory.com

     

    https://dolphincoding.tistory.com/entry/Kubeflow-18%EC%9D%84-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-Kubernetes-%EC%84%B8%ED%8C%85%ED%95%98%EA%B8%B0

     

    Minikube (k8s 1.28.2) + Kubeflow 1.8 설치하기

    [1단계] Minikube 로 K8S 세팅하기이번 글에서는 Minikube로 Kubernetes 버전 1.28.2버전을 설치하고, 현재 기준 최신 버전인 kubeflow 1.8을 설치할 거에요먼저 k3s, kubespray, kubeadm등 다양한 방식으로 설치해볼

    dolphincoding.tistory.com

     

    2. Kubeflow 세팅

    https://semizero.tistory.com/47

     

    [Kubeflow] Kubeflow 유저 추가하기(유저 분기처리하기)

    Kubeflow를 활용하다보면 user@example.com/12341234 라는 샘플 계정을 활용하여, 테스트하는 경우가 많다. 그러나 서비스 관점에서는 사용자별 Kubeflow 기능을 분기하여 관리해야할 필요가 있다. 그렇기에

    semizero.tistory.com

     

    '개인 공부 > 쿠버플로우' 카테고리의 다른 글

    [쿠버플로우] 개념 및 구성 요소 정리  (0) 2025.07.02