blob: 6b172dd039e44dce671d1dafd5009be487c503b3 [file] [log] [blame]
"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5396],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return d}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=u(n),d=a,b=m["".concat(s,".").concat(d)]||m[d]||p[d]||i;return n?r.createElement(b,o(o({ref:t},c),{},{components:n})):r.createElement(b,o({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var u=2;u<i;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},9998:function(e,t,n){n.r(t),n.d(t,{assets:function(){return c},contentTitle:function(){return s},default:function(){return d},frontMatter:function(){return l},metadata:function(){return u},toc:function(){return p}});var r=n(7462),a=n(3366),i=(n(7294),n(3905)),o=["components"],l={title:"Submarine Local Deployment"},s=void 0,u={unversionedId:"gettingStarted/localDeployment",id:"version-0.6.0/gettingStarted/localDeployment",title:"Submarine Local Deployment",description:"\x3c!--",source:"@site/versioned_docs/version-0.6.0/gettingStarted/localDeployment.md",sourceDirName:"gettingStarted",slug:"/gettingStarted/localDeployment",permalink:"/docs/0.6.0/gettingStarted/localDeployment",editUrl:"https://github.com/apache/submarine/edit/master/website/versioned_docs/version-0.6.0/gettingStarted/localDeployment.md",tags:[],version:"0.6.0",frontMatter:{title:"Submarine Local Deployment"}},c={},p=[{value:"Prerequisite",id:"prerequisite",level:2},{value:"Deploy Kubernetes Cluster",id:"deploy-kubernetes-cluster",level:2},{value:"Install Submarine on Kubernetes",id:"install-submarine-on-kubernetes",level:2},{value:"Verify installation",id:"verify-installation",level:2},{value:"Access Submarine in a Cluster",id:"access-submarine-in-a-cluster",level:2},{value:"Open Workbench in the browser.",id:"open-workbench-in-the-browser",level:2},{value:"Uninstall Submarine",id:"uninstall-submarine",level:2}],m={toc:p};function d(e){var t=e.components,n=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"prerequisite"},"Prerequisite"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl/"},"kubectl")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://helm.sh/docs/intro/install/"},"helm")," (Helm v3 is minimum requirement.)"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://minikube.sigs.k8s.io/docs/start/"},"minikube"),".")),(0,i.kt)("h2",{id:"deploy-kubernetes-cluster"},"Deploy Kubernetes Cluster"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"$ minikube start --vm-driver=docker --cpus 8 --memory 4096 --disk-size=20G --kubernetes-version v1.15.11\n")),(0,i.kt)("h2",{id:"install-submarine-on-kubernetes"},"Install Submarine on Kubernetes"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"$ git clone https://github.com/apache/submarine.git\n$ cd submarine\n$ helm install submarine ./helm-charts/submarine\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"NAME: submarine\nLAST DEPLOYED: Fri Jan 29 05:35:36 2021\nNAMESPACE: default\nSTATUS: deployed\nREVISION: 1\nTEST SUITE: None\n")),(0,i.kt)("h2",{id:"verify-installation"},"Verify installation"),(0,i.kt)("p",null,"Once you got it installed, check with below commands and you should see similar outputs:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"$ kubectl get pods\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"NAME READY STATUS RESTARTS AGE\nnotebook-controller-deployment-5db8b6cbf7-k65jm 1/1 Running 0 5s\npytorch-operator-7ff5d96d59-gx7f5 1/1 Running 0 5s\nsubmarine-database-8d95d74f7-ntvqp 1/1 Running 0 5s\nsubmarine-server-b6cd4787b-7bvr7 1/1 Running 0 5s\nsubmarine-traefik-9bb6f8577-66sx6 1/1 Running 0 5s\ntf-job-operator-7844656dd-lfgmd 1/1 Running 0 5s\n")),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"Note that if you encounter below issue when installation:"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"Error: rendered manifests contain a resource that already exists.\nUnable to continue with install: existing resource conflict: namespace: , name: podgroups.scheduling.incubator.k8s.io, existing_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition, new_kind: apiextensions.k8s.io/v1beta1, Kind=CustomResourceDefinition\n")),(0,i.kt)("p",null,"It might be caused by the previous installed submarine charts. Fix it by running:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"$ kubectl delete crd/tfjobs.kubeflow.org && kubectl delete crd/podgroups.scheduling.incubator.k8s.io && kubectl delete crd/pytorchjobs.kubeflow.org\n")),(0,i.kt)("h2",{id:"access-submarine-in-a-cluster"},"Access Submarine in a Cluster"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"# #Listen on port 32080 on all addresses, forwarding to 80 in the pod\n# Method1 -- using minikube ip + NodePort\n$ minikube ip # you'll get the IP address of minikube, ex: 192.168.49.2\n\n# Method2 -- using port-forwarding\n$ kubectl port-forward --address 0.0.0.0 service/submarine-traefik 32080:80\n")),(0,i.kt)("h2",{id:"open-workbench-in-the-browser"},"Open Workbench in the browser."),(0,i.kt)("p",null,"Open http://{minikube ip}:32080(from Method1), ex: ",(0,i.kt)("a",{parentName:"p",href:"http://192.168.49.2:32080"},"http://192.168.49.2:32080")),(0,i.kt)("p",null,"or ",(0,i.kt)("a",{parentName:"p",href:"http://127.0.0.1:32080"},"http://127.0.0.1:32080")," (from Method 2)."),(0,i.kt)("p",null,"The default username and password is ",(0,i.kt)("inlineCode",{parentName:"p"},"admin")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"admin")),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://i.imgur.com/DkZhyEG.png",alt:null})),(0,i.kt)("h2",{id:"uninstall-submarine"},"Uninstall Submarine"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"$ helm delete submarine\n")))}d.isMDXComponent=!0}}]);