Kubeflow를 GCP로 설계해 보세요.
7031 단어 GCPKubernetesKubeflowtech
개요
로컬 환경에서Multipus(MicroK8s) on Mac로 Kubeflow 환경 구축 해봤어요.
노트북과 아티팩트 스토어가 안 나와서 눈물이 났어요.😫
GCP를 디자인하고 다양한 게임을 시도해 봤습니다.
기본적으로 아래 문서에 따라 실행하기만 하면 된다
3일 후에 확실히 잊어버릴 수 있으니 자신의 이해를 기억해 주십시오
GCP별 구현
대충 쓰면 5가지 시행감이 있어요.
GCP에 필요한 API 주위에서 유효화
$ gcloud services enable \
compute.googleapis.com \
container.googleapis.com \
iam.googleapis.com \
servicemanagement.googleapis.com \
cloudresourcemanager.googleapis.com \
ml.googleapis.com \
meshconfig.googleapis.com \
cloudbuild.googleapis.com
$
$ PROJECT_ID=<gcp project id>
$
$ curl --request POST \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--data '' \
https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize
인증을 위한 OAuth 설정
OAuth는 화면 제작에 동의합니다.
OAuth 동의화면에 필요한 정보를 입력하고 생성
인증 정보 작성
OAuth Client ID에 필요한 정보를 입력하고 생성
https://iap.googleapis.com/v1/oauth/clientIds/<OAuth Client ID>.apps.googleusercontent.com:handleRedirect
관리 클러스터 생성
kpt라는 Kubernetes의 선언 관리 도구를 사용하여 환경을 구축하는 느낌
kpt pkg get [GitHub Repository] [target local directory]
처럼 실행하면GiitHub에서push한 디렉터리를 봉인할 수 있습니다kpt cfg set -R . [key] [value]
처럼 지정하면포획된 매크로 패키지 변수에 수치를 설정할 수 있기 때문에
자신이 적용하고 싶은 GCP 프로젝트id 등을 함께 설정하여 각자의 환경을 만들 수 있을 것 같아요.
그리고 Makefile을 준비했습니다.
지시에 따라 실행하면 GKE 클러스터 등 기타 필요한 정보가 생성됩니다.
(뒤에 Anthos 지령선도 움직이는 것 같아
$ # gcloud関連のコマンドインストール
$ gcloud components install kubectl kpt anthoscli beta
$ gcloud components update
$
$ # Kustomizeインストール
$ curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
$ sudo mv ./kustomize /usr/local/bin/kustomize
$
$ # 以降処理を進めるために変数をセット
$ MGMT_PROJECT=<GCP project id>
$ ## Kubeflow管理したいリポジトリ指定するとmanagementディレクトリが作成されてそこで各種ファイルが管理される
$ MGMT_DIR=<GitHubの指定したいリポジトリ>
$ MGMT_NAME=<適当な名前>
$ LOCATION=<適当なzone指定>
$
$ # managementクラスタデプロイのためのkptパッケージ取得
$ kpt pkg get https://github.com/kubeflow/gcp-blueprints.git/[email protected] "${MGMT_DIR}"
$ cd "${MGMT_DIR}/management"
$ make get-pkg
$
$ # 自分の環境の変数セット
$ kpt cfg set -R . name "${MGMT_NAME}"
$ kpt cfg set -R . gcloud.core.project "${MGMT_PROJECT}"
$ kpt cfg set -R . location "${LOCATION}"
$
$ # GKE作成
$ make apply-cluster
$
$ # kubectl context 作成。クラスタを切り替えることができるみたい
$ make create-context
$
$ # K8sからGCPリソースに接続が可能なCloud Config Connectorを適用
$ make apply-kcc
$
$ # ./instance/managed-project/iam.yamlにある通りOwner roleが適用される
$ MGMT_PROJECT=<gcp project id>
$ kpt cfg set ./instance managed-project "${MANAGED_PROJECT}"
$ gcloud beta anthos apply ./instance/managed-project/iam.yaml
이렇게 해서 MGMT_NAME
에 설치된 이름의 GKE 클러스터가 완성되었습니다!자세한 설명이 있어요.
./upstream
디렉토리에 포함된 리소스 유형./instance
디렉토리에 변수 등 설정된 각 환경에 대한 실제 정보 포함./build
디렉터리에hydrate에서 실행하기 전에 검증된 파일이 생성된 것 같습니다Kubeflow 클러스터 만들기
아직 매니지먼트용 클러스터와 Kubeflow용 클러스터의 용도는 잘 모르겠지만.
다음은 Kubeflow용 그룹을 만듭니다!
중간 단계에서 필요하므로 단계별로 설치Anthos Service Mesh
다음 명령을 실행합니다
# 必要な環境変数の設定
$ KF_NAME=<managementとは違うkubeflow用のクラスタ名指定>
$ KF_PROJECT=<GCP project id>
$ KF_DIR=<GitHubの指定したいリポジトリ>
$ MGMT_NAME=<作成したManagementクラスタの名前>
$ MGMTCTXT="${MGMT_NAME}"
$
$ gcloud auth login
$
$ # kubeflowクラスタデプロイのためのkptパッケージ取得
$ kpt pkg get https://github.com/kubeflow/gcp-blueprints.git/[email protected] "${KF_DIR}"
$ cd "${KF_DIR}/kubeflow"
$
$ make get-pkg
$
$ # Makefile内の.PHONY: set-valuesで
$ # <xxx>に記載された箇所を必要な情報で書き換え
$
$ kubectl config use-context "${MGMTCTXT}"
$ kubectl create namespace "${KF_PROJECT}"
$ kubectl config set-context --current --namespace "${KF_PROJECT}"
$ kubectl config set-context --current --namespace "${KF_PROJECT}"
$
$ export CLIENT_ID=<作成したOAuthのCLIENT_ID>
$ export CLIENT_SECRET=<作成したOAuthのCLIENT_SECRET>
$ make set-values
$
$ # クラスタをデプロイ。ここしばらく時間かかる
$ make apply
k8s에서pod 또는 서비스를 잘했는지 확인$ # ZONE設定した記憶がないので設定
$ ZONE=asia-northeast1-a
$ gcloud container clusters get-credentials "${KF_NAME}" --zone "${ZONE}" --project "${KF_PROJECT}"
$
$ kubectl -n kubeflow get all
Kubeflow UI 액세스
다음은 Kubeflow의 UI에 대한 권한입니다.
표시된 호스트에 접근하기 (SSL에서 DNS 반영까지 30분 정도 걸리며 구글의 404페이지를 잠시 표시합니다)
http://kubeflow-test.endpoints.<gcp project id>.cloud.goog
# アクセス許可したいアカウントのメールアドレスを指定
# (ちゃんとやる場合メールアドレスのグループ指定したい
$ gcloud projects add-iam-policy-binding "${KF_PROJECT}" --member=user:<EMAIL> --role=roles/iap.httpsResourceAccessor
$ kubectl -n istio-system get ingress
NAME HOSTS ADDRESS PORTS AGE
envoy-ingress kubeflow-test.endpoints.<gcp project id>.cloud.goog xxx 80 8h
URL을 방문하면 이런 느낌으로 IAP 소스와 함께 움직여 인증 효과가 좋다로컬에서 안 나오는 노트북도 나왔어요.🏋️
하지만 Artifact Store(metadata)는 표시되지 않습니다.🤔
총결산
기본적으로 Makefile만 실행하기 때문에 뒷면에서 이동하는 k8s자원의 느낌을 정확하게 이해할 수 없습니다
어쨌든 놀이터가 생겼으니 다음엔 만들어진 Kubflow Cluster를 Private GKE로 만들어
드디어 노트북, 피플라인 결성🕹
Reference
이 문제에 관하여(Kubeflow를 GCP로 설계해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ucwork/articles/dfd66453484e3c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)