Kubeflow の導入
寄稿者
このセクションでは、 Kubernetes クラスタに Kubeflow を導入するために実行する必要のあるタスクについて説明します。
前提条件
このセクションで説明する導入の演習を行う前に、次の作業をすでに実行していることを前提としています。
-
Kubernetes クラスタはすでに稼働しており、 Kubeflow でサポートされるバージョンの Kubernetes を実行しているとします。サポートされているバージョンの一覧については、を参照してください "Kubeflow の公式ドキュメント"。
-
内に NetApp Trident のインストールと設定が完了している必要があります Kubernetes クラスタ(を参照) "Trident の導入と設定"。
デフォルトの Kubernetes StorageClass を設定します
Kubeflow を導入する前に、 Kubernetes クラスタ内でデフォルトの StorageClass を指定する必要があります。Kubeflow の導入プロセスでは、デフォルトの StorageClass を使用して新しい永続ボリュームのプロビジョニングが試行されます。StorageClass がデフォルトの StorageClass として指定されていない場合、導入は失敗します。クラスタ内のデフォルトの StorageClass を指定するには、導入ジャンプホストから次のタスクを実行します。クラスタ内ですでにデフォルトの StorageClass を指定している場合は、この手順を省略できます。
-
既存のストレージクラスの 1 つをデフォルトのストレージクラスとして指定します。以降のコマンド例では、「 ontap/ai-sFLEXs-retain 」という名前の StorageClass がデフォルトの StorageClass として指定されています。
|
「 ONTAP-NAS-flexgroup 」の Trident バックエンドタイプには、かなり大きな最小 PVC サイズがあります。デフォルトでは、 Kubeflow はサイズが数 GB しかない PVC のプロビジョニングを試みます。したがって、 Kubeflow の導入の目的で、「 ONTAP-NAS-flexgroup 」バックエンドタイプをデフォルトの StorageClass として使用する StorageClass を指定しないでください。 |
$ kubectl get sc NAME PROVISIONER AGE ontap-ai-flexgroups-retain csi.trident.netapp.io 25h ontap-ai-flexgroups-retain-iface1 csi.trident.netapp.io 25h ontap-ai-flexgroups-retain-iface2 csi.trident.netapp.io 25h ontap-ai-flexvols-retain csi.trident.netapp.io 3s $ kubectl patch storageclass ontap-ai-flexvols-retain -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' storageclass.storage.k8s.io/ontap-ai-flexvols-retain patched $ kubectl get sc NAME PROVISIONER AGE ontap-ai-flexgroups-retain csi.trident.netapp.io 25h ontap-ai-flexgroups-retain-iface1 csi.trident.netapp.io 25h ontap-ai-flexgroups-retain-iface2 csi.trident.netapp.io 25h ontap-ai-flexvols-retain (default) csi.trident.netapp.io 54s
NVIDIA DeepOps を使用して Kubeflow を導入します
NVIDIA DeepOps が提供する Kubeflow 導入ツールを使用することを推奨します。DeepOps 導入ツールを使用して Kubernetes クラスタに Kubeflow を導入するには、導入ジャンプホストから次のタスクを実行します。
|
または、を使用して手動で Kubeflow を導入することもできます "インストール手順" Kubeflow の公式ドキュメントにあります |
-
クラスタに Kubeflow を導入するには、に従ってください "Kubeflow の導入手順" NVIDIA DeepOps GitHub サイトで入手できます。
-
Kubeflow Dashboard URL をメモしてください。 DeepOps Kubeflow 導入ツールによって出力されます。
$ ./scripts/k8s/deploy_kubeflow.sh -x … INFO[0007] Applied the configuration Successfully! filename="cmd/apply.go:72" Kubeflow app installed to: /home/ai/kubeflow It may take several minutes for all services to start. Run 'kubectl get pods -n kubeflow' to verify To remove (excluding CRDs, istio, auth, and cert-manager), run: ./scripts/k8s_deploy_kubeflow.sh -d To perform a full uninstall : ./scripts/k8s_deploy_kubeflow.sh -D Kubeflow Dashboard (HTTP NodePort): http://10.61.188.111:31380
-
Kubeflow ネームスペース内に展開されているすべてのポッドに「ステータス」が「実行中」であることを確認し、ネームスペース内に展開されているコンポーネントがエラー状態でないことを確認します。すべてのポッドが起動するまでに数分かかることがあります。
$ kubectl get all -n kubeflow NAME READY STATUS RESTARTS AGE pod/admission-webhook-bootstrap-stateful-set-0 1/1 Running 0 95s pod/admission-webhook-deployment-6b89c84c98-vrtbh 1/1 Running 0 91s pod/application-controller-stateful-set-0 1/1 Running 0 98s pod/argo-ui-5dcf5d8b4f-m2wn4 1/1 Running 0 97s pod/centraldashboard-cf4874ddc-7hcr8 1/1 Running 0 97s pod/jupyter-web-app-deployment-685b455447-gjhh7 1/1 Running 0 96s pod/katib-controller-88c97d85c-kgq66 1/1 Running 1 95s pod/katib-db-8598468fd8-5jw2c 1/1 Running 0 95s pod/katib-manager-574c8c67f9-wtrf5 1/1 Running 1 95s pod/katib-manager-rest-778857c989-fjbzn 1/1 Running 0 95s pod/katib-suggestion-bayesianoptimization-65df4d7455-qthmw 1/1 Running 0 94s pod/katib-suggestion-grid-56bf69f597-98vwn 1/1 Running 0 94s pod/katib-suggestion-hyperband-7777b76cb9-9v6dq 1/1 Running 0 93s pod/katib-suggestion-nasrl-77f6f9458c-2qzxq 1/1 Running 0 93s pod/katib-suggestion-random-77b88b5c79-l64j9 1/1 Running 0 93s pod/katib-ui-7587c5b967-nd629 1/1 Running 0 95s pod/metacontroller-0 1/1 Running 0 96s pod/metadata-db-5dd459cc-swzkm 1/1 Running 0 94s pod/metadata-deployment-6cf77db994-69fk7 1/1 Running 3 93s pod/metadata-deployment-6cf77db994-mpbjt 1/1 Running 3 93s pod/metadata-deployment-6cf77db994-xg7tz 1/1 Running 3 94s pod/metadata-ui-78f5b59b56-qb6kr 1/1 Running 0 94s pod/minio-758b769d67-llvdr 1/1 Running 0 91s pod/ml-pipeline-5875b9db95-g8t2k 1/1 Running 0 91s pod/ml-pipeline-persistenceagent-9b69ddd46-bt9r9 1/1 Running 0 90s pod/ml-pipeline-scheduledworkflow-7b8d756c76-7x56s 1/1 Running 0 90s pod/ml-pipeline-ui-79ffd9c76-fcwpd 1/1 Running 0 90s pod/ml-pipeline-viewer-controller-deployment-5fdc87f58-b2t9r 1/1 Running 0 90s pod/mysql-657f87857d-l5k9z 1/1 Running 0 91s pod/notebook-controller-deployment-56b4f59bbf-8bvnr 1/1 Running 0 92s pod/profiles-deployment-6bc745947-mrdkh 2/2 Running 0 90s pod/pytorch-operator-77c97f4879-hmlrv 1/1 Running 0 92s pod/seldon-operator-controller-manager-0 1/1 Running 1 91s pod/spartakus-volunteer-5fdfddb779-l7qkm 1/1 Running 0 92s pod/tensorboard-6544748d94-nh8b2 1/1 Running 0 92s pod/tf-job-dashboard-56f79c59dd-6w59t 1/1 Running 0 92s pod/tf-job-operator-79cbfd6dbc-rb58c 1/1 Running 0 91s pod/workflow-controller-db644d554-cwrnb 1/1 Running 0 97s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/admission-webhook-service ClusterIP 10.233.51.169 <none> 443/TCP 97s service/application-controller-service ClusterIP 10.233.4.54 <none> 443/TCP 98s service/argo-ui NodePort 10.233.47.191 <none> 80:31799/TCP 97s service/centraldashboard ClusterIP 10.233.8.36 <none> 80/TCP 97s service/jupyter-web-app-service ClusterIP 10.233.1.42 <none> 80/TCP 97s service/katib-controller ClusterIP 10.233.25.226 <none> 443/TCP 96s service/katib-db ClusterIP 10.233.33.151 <none> 3306/TCP 97s service/katib-manager ClusterIP 10.233.46.239 <none> 6789/TCP 96s service/katib-manager-rest ClusterIP 10.233.55.32 <none> 80/TCP 96s service/katib-suggestion-bayesianoptimization ClusterIP 10.233.49.191 <none> 6789/TCP 95s service/katib-suggestion-grid ClusterIP 10.233.9.105 <none> 6789/TCP 95s service/katib-suggestion-hyperband ClusterIP 10.233.22.2 <none> 6789/TCP 95s service/katib-suggestion-nasrl ClusterIP 10.233.63.73 <none> 6789/TCP 95s service/katib-suggestion-random ClusterIP 10.233.57.210 <none> 6789/TCP 95s service/katib-ui ClusterIP 10.233.6.116 <none> 80/TCP 96s service/metadata-db ClusterIP 10.233.31.2 <none> 3306/TCP 96s service/metadata-service ClusterIP 10.233.27.104 <none> 8080/TCP 96s service/metadata-ui ClusterIP 10.233.57.177 <none> 80/TCP 96s service/minio-service ClusterIP 10.233.44.90 <none> 9000/TCP 94s service/ml-pipeline ClusterIP 10.233.41.201 <none> 8888/TCP,8887/TCP 94s service/ml-pipeline-tensorboard-ui ClusterIP 10.233.36.207 <none> 80/TCP 93s service/ml-pipeline-ui ClusterIP 10.233.61.150 <none> 80/TCP 93s service/mysql ClusterIP 10.233.55.117 <none> 3306/TCP 94s service/notebook-controller-service ClusterIP 10.233.10.166 <none> 443/TCP 95s service/profiles-kfam ClusterIP 10.233.33.79 <none> 8081/TCP 92s service/pytorch-operator ClusterIP 10.233.37.112 <none> 8443/TCP 95s service/seldon-operator-controller-manager-service ClusterIP 10.233.30.178 <none> 443/TCP 92s service/tensorboard ClusterIP 10.233.58.151 <none> 9000/TCP 94s service/tf-job-dashboard ClusterIP 10.233.4.17 <none> 80/TCP 94s service/tf-job-operator ClusterIP 10.233.60.32 <none> 8443/TCP 94s service/webhook-server-service ClusterIP 10.233.32.167 <none> 443/TCP 87s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/admission-webhook-deployment 1/1 1 1 97s deployment.apps/argo-ui 1/1 1 1 97s deployment.apps/centraldashboard 1/1 1 1 97s deployment.apps/jupyter-web-app-deployment 1/1 1 1 97s deployment.apps/katib-controller 1/1 1 1 96s deployment.apps/katib-db 1/1 1 1 97s deployment.apps/katib-manager 1/1 1 1 96s deployment.apps/katib-manager-rest 1/1 1 1 96s deployment.apps/katib-suggestion-bayesianoptimization 1/1 1 1 95s deployment.apps/katib-suggestion-grid 1/1 1 1 95s deployment.apps/katib-suggestion-hyperband 1/1 1 1 95s deployment.apps/katib-suggestion-nasrl 1/1 1 1 95s deployment.apps/katib-suggestion-random 1/1 1 1 95s deployment.apps/katib-ui 1/1 1 1 96s deployment.apps/metadata-db 1/1 1 1 96s deployment.apps/metadata-deployment 3/3 3 3 96s deployment.apps/metadata-ui 1/1 1 1 96s deployment.apps/minio 1/1 1 1 94s deployment.apps/ml-pipeline 1/1 1 1 94s deployment.apps/ml-pipeline-persistenceagent 1/1 1 1 93s deployment.apps/ml-pipeline-scheduledworkflow 1/1 1 1 93s deployment.apps/ml-pipeline-ui 1/1 1 1 93s deployment.apps/ml-pipeline-viewer-controller-deployment 1/1 1 1 93s deployment.apps/mysql 1/1 1 1 94s deployment.apps/notebook-controller-deployment 1/1 1 1 95s deployment.apps/profiles-deployment 1/1 1 1 92s deployment.apps/pytorch-operator 1/1 1 1 95s deployment.apps/spartakus-volunteer 1/1 1 1 94s deployment.apps/tensorboard 1/1 1 1 94s deployment.apps/tf-job-dashboard 1/1 1 1 94s deployment.apps/tf-job-operator 1/1 1 1 94s deployment.apps/workflow-controller 1/1 1 1 97s NAME DESIRED CURRENT READY AGE replicaset.apps/admission-webhook-deployment-6b89c84c98 1 1 1 97s replicaset.apps/argo-ui-5dcf5d8b4f 1 1 1 97s replicaset.apps/centraldashboard-cf4874ddc 1 1 1 97s replicaset.apps/jupyter-web-app-deployment-685b455447 1 1 1 97s replicaset.apps/katib-controller-88c97d85c 1 1 1 96s replicaset.apps/katib-db-8598468fd8 1 1 1 97s replicaset.apps/katib-manager-574c8c67f9 1 1 1 96s replicaset.apps/katib-manager-rest-778857c989 1 1 1 96s replicaset.apps/katib-suggestion-bayesianoptimization-65df4d7455 1 1 1 95s replicaset.apps/katib-suggestion-grid-56bf69f597 1 1 1 95s replicaset.apps/katib-suggestion-hyperband-7777b76cb9 1 1 1 95s replicaset.apps/katib-suggestion-nasrl-77f6f9458c 1 1 1 95s replicaset.apps/katib-suggestion-random-77b88b5c79 1 1 1 95s replicaset.apps/katib-ui-7587c5b967 1 1 1 96s replicaset.apps/metadata-db-5dd459cc 1 1 1 96s replicaset.apps/metadata-deployment-6cf77db994 3 3 3 96s replicaset.apps/metadata-ui-78f5b59b56 1 1 1 96s replicaset.apps/minio-758b769d67 1 1 1 93s replicaset.apps/ml-pipeline-5875b9db95 1 1 1 93s replicaset.apps/ml-pipeline-persistenceagent-9b69ddd46 1 1 1 92s replicaset.apps/ml-pipeline-scheduledworkflow-7b8d756c76 1 1 1 91s replicaset.apps/ml-pipeline-ui-79ffd9c76 1 1 1 91s replicaset.apps/ml-pipeline-viewer-controller-deployment-5fdc87f58 1 1 1 91s replicaset.apps/mysql-657f87857d 1 1 1 92s replicaset.apps/notebook-controller-deployment-56b4f59bbf 1 1 1 94s replicaset.apps/profiles-deployment-6bc745947 1 1 1 91s replicaset.apps/pytorch-operator-77c97f4879 1 1 1 94s replicaset.apps/spartakus-volunteer-5fdfddb779 1 1 1 94s replicaset.apps/tensorboard-6544748d94 1 1 1 93s replicaset.apps/tf-job-dashboard-56f79c59dd 1 1 1 93s replicaset.apps/tf-job-operator-79cbfd6dbc 1 1 1 93s replicaset.apps/workflow-controller-db644d554 1 1 1 97s NAME READY AGE statefulset.apps/admission-webhook-bootstrap-stateful-set 1/1 97s statefulset.apps/application-controller-stateful-set 1/1 98s statefulset.apps/metacontroller 1/1 98s statefulset.apps/seldon-operator-controller-manager 1/1 92s $ kubectl get pvc -n kubeflow NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE katib-mysql Bound pvc-b07f293e-d028-11e9-9b9d-00505681a82d 10Gi RWO ontap-ai-flexvols-retain 27m metadata-mysql Bound pvc-b0f3f032-d028-11e9-9b9d-00505681a82d 10Gi RWO ontap-ai-flexvols-retain 27m minio-pv-claim Bound pvc-b22727ee-d028-11e9-9b9d-00505681a82d 20Gi RWO ontap-ai-flexvols-retain 27m mysql-pv-claim Bound pvc-b2429afd-d028-11e9-9b9d-00505681a82d 20Gi RWO ontap-ai-flexvols-retain 27m
-
Web ブラウザで、手順 2 でメモした URL に移動して Kubeflow 中央ダッシュボードにアクセスします。
デフォルトのユーザ名は「 admin@kubeflow.org 」で、デフォルトのパスワードは「 12341234 」です。追加ユーザを作成するには、の手順に従います "Kubeflow の公式ドキュメント"。