(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{126:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return o})),n.d(t,"metadata",(function(){return i})),n.d(t,"toc",(function(){return s})),n.d(t,"default",(function(){return b}));var a=n(3),r=n(7),l=(n(0),n(136)),o={title:"Deploy Submarine On K8s"},i={unversionedId:"adminDocs/k8s/helm",id:"adminDocs/k8s/helm",isDocsHomePage:!1,title:"Deploy Submarine On K8s",description:"\x3c!--",source:"@site/docs/adminDocs/k8s/helm.md",slug:"/adminDocs/k8s/helm",permalink:"/docs/adminDocs/k8s/helm",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/adminDocs/k8s/helm.md",version:"current",sidebar:"docs",previous:{title:"Setup a Kubernetes cluster using Kind",permalink:"/docs/adminDocs/k8s/kind"},next:{title:"Running Submarine on YARN",permalink:"/docs/adminDocs/yarn/README"}},s=[{value:"Deploy Submarine Using Helm Chart (Recommended)",id:"deploy-submarine-using-helm-chart-recommended",children:[{value:"Install Helm",id:"install-helm",children:[]},{value:"Install Submarine",id:"install-submarine",children:[]},{value:"Configure volume type",id:"configure-volume-type",children:[]},{value:"Access to Submarine Server",id:"access-to-submarine-server",children:[]},{value:"Uninstall Submarine",id:"uninstall-submarine",children:[]}]}],c={toc:s};function b(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(l.b)("wrapper",Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(l.b)("h2",{id:"deploy-submarine-using-helm-chart-recommended"},"Deploy Submarine Using Helm Chart (Recommended)"),Object(l.b)("p",null,"Submarine's Helm Chart will deploy Submarine Server, TF/PyTorch Operator, Notebook controller\nand Traefik. We use the TF/PyTorch operator to run tf/pytorch job, the notebook controller to\nmanage jupyter notebook and Traefik as reverse-proxy."),Object(l.b)("h3",{id:"install-helm"},"Install Helm"),Object(l.b)("p",null,"Helm v3 is minimum requirement.\nSee here for installation: ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/docs/intro/install/"},"https://helm.sh/docs/intro/install/")),Object(l.b)("h3",{id:"install-submarine"},"Install Submarine"),Object(l.b)("p",null,"The Submarine helm charts is released with the source code for now.\nPlease go to ",Object(l.b)("inlineCode",{parentName:"p"},"http://submarine.apache.org/download.html")," to download"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Install Helm charts from source code")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"cd <PathTo>/submarine\nhelm install submarine ./helm-charts/submarine\n")),Object(l.b)("p",null,'This will install submarine in the "default" namespace.\nThe images are from Docker hub ',Object(l.b)("inlineCode",{parentName:"p"},"apache/submarine"),". See ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml")," for more details"),Object(l.b)("p",null,'If we\'d like use a different namespace like "submarine"'),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl create namespace submarine\nhelm install submarine ./helm-charts/submarine -n submarine\n")),Object(l.b)("blockquote",null,Object(l.b)("p",{parentName:"blockquote"},"Note that if you encounter below issue when installation:"),Object(l.b)("pre",{parentName:"blockquote"},Object(l.b)("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")),Object(l.b)("p",{parentName:"blockquote"},"It might be caused by the previous installed submarine charts. Fix it by running:"),Object(l.b)("pre",{parentName:"blockquote"},Object(l.b)("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"))),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"Verify installation")),Object(l.b)("p",null,"Once you got it installed, check with below commands and you should see similar outputs:"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl get pods\n")),Object(l.b)("pre",null,Object(l.b)("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")),Object(l.b)("h3",{id:"configure-volume-type"},"Configure volume type"),Object(l.b)("p",null,"Submarine can support various ",Object(l.b)("a",{parentName:"p",href:"https://kubernetes.io/docs/concepts/storage/volumes/#nfs"},"volume types"),", currently including hostPath (default) and NFS. It can be easily configured in the ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),", or you can override the default values in ",Object(l.b)("inlineCode",{parentName:"p"},"values.yaml")," by ",Object(l.b)("a",{parentName:"p",href:"https://helm.sh/docs/helm/helm_install/"},"helm CLI"),"."),Object(l.b)("h4",{id:"hostpath"},"hostPath"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In hostPath, you can store data directly in your node."),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable hostPath storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"host"),"."),Object(l.b)("li",{parentName:"ol"},"To set the root path for your storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.host.root")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-path>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: host\n  host:\n    root: /tmp\n")))),Object(l.b)("h4",{id:"nfs-network-file-system"},"NFS (Network File System)"),Object(l.b)("ul",null,Object(l.b)("li",{parentName:"ul"},"In NFS, it allows multiple clients to access a shared space."),Object(l.b)("li",{parentName:"ul"},"Prerequisite:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"A pre-existing NFS server. You have two options.",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Create NFS server",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"kubectl create -f ./dev-support/nfs-server/nfs-server.yaml\n")),"It will create a nfs-server pod in kubernetes cluster, and expose nfs-server ip at ",Object(l.b)("inlineCode",{parentName:"li"},"10.96.0.2")),Object(l.b)("li",{parentName:"ol"},"Use your own NFS server"))),Object(l.b)("li",{parentName:"ol"},"Install NFS dependencies in your nodes",Object(l.b)("ul",{parentName:"li"},Object(l.b)("li",{parentName:"ul"},"Ubuntu",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"apt-get install -y nfs-common\n"))),Object(l.b)("li",{parentName:"ul"},"CentOS",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-bash"},"yum install nfs-util\n"))))))),Object(l.b)("li",{parentName:"ul"},"Usage:",Object(l.b)("ol",{parentName:"li"},Object(l.b)("li",{parentName:"ol"},"Configure setting in ",Object(l.b)("inlineCode",{parentName:"li"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("li",{parentName:"ol"},"To enable NFS storage, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.type")," to ",Object(l.b)("inlineCode",{parentName:"li"},"nfs"),"."),Object(l.b)("li",{parentName:"ol"},"To set the ip for NFS server, set ",Object(l.b)("inlineCode",{parentName:"li"},".storage.nfs.ip")," to ",Object(l.b)("inlineCode",{parentName:"li"},"<any-ip>")))),Object(l.b)("li",{parentName:"ul"},"Example:",Object(l.b)("pre",{parentName:"li"},Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# ./helm-charts/submarine/values.yaml\nstorage:\n  type: nfs\n  nfs:\n    ip: 10.96.0.2\n")))),Object(l.b)("h3",{id:"access-to-submarine-server"},"Access to Submarine Server"),Object(l.b)("p",null,"Submarine server by default expose 8080 port within K8s cluster. After Submarine v0.5\nuses Traefik as reverse-proxy by default. If you don't want to\nuse Traefik, you can modify below value to ",Object(l.b)("strong",{parentName:"p"},Object(l.b)("em",{parentName:"strong"},"false"))," in ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/values.yaml"),"."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-yaml"},"# Use Traefik by default\ntraefik:\n  enabled: true\n")),Object(l.b)("p",null,"To access the server from outside of the cluster, we use Traefik ingress controller and\nNodePort for external access.\\\nPlease refer to ",Object(l.b)("inlineCode",{parentName:"p"},"./helm-charts/submarine/charts/traefik/values.yaml")," and ",Object(l.b)("a",{parentName:"p",href:"https://docs.traefik.io/"},"Traefik docs"),"\nfor more details if you want to customize the default value for Traefik."),Object(l.b)("p",null,Object(l.b)("em",{parentName:"p"},"Notice:"),"\nIf you use ",Object(l.b)("inlineCode",{parentName:"p"},"kind")," to run local Kubernetes cluster,\nplease refer to this ",Object(l.b)("a",{parentName:"p",href:"https://kind.sigs.k8s.io/docs/user/configuration/#extra-port-mappings"},"docs"),'\nand set the configuration "extraPortMappings" when creating the k8s cluster.'),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"kind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nnodes:\n- role: control-plane\n  extraPortMappings:\n  - containerPort: 32080\n    hostPort: [the port you want to access]\n")),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"# Use nodePort and Traefik ingress controller by default.\n# To access the submarine server, open the following URL in your browser.\nhttp://127.0.0.1:32080\n")),Object(l.b)("p",null,"If minikube is installed, use the following command to find the URL to the Submarine server."),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre"},"$ minikube service submarine-traefik --url\n")),Object(l.b)("h3",{id:"uninstall-submarine"},"Uninstall Submarine"),Object(l.b)("pre",null,Object(l.b)("code",{parentName:"pre",className:"language-bash"},"helm delete submarine\n")))}b.isMDXComponent=!0},136:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var a=n(0),r=n.n(a);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)n=l[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=r.a.createContext({}),b=function(e){var t=r.a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=b(e.components);return r.a.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.a.createElement(r.a.Fragment,{},t)}},p=r.a.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=b(n),p=a,d=u["".concat(o,".").concat(p)]||u[p]||m[p]||l;return n?r.a.createElement(d,i(i({ref:t},c),{},{components:n})):r.a.createElement(d,i({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,o=new Array(l);o[0]=p;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var c=2;c<l;c++)o[c]=n[c];return r.a.createElement.apply(null,o)}return r.a.createElement.apply(null,n)}p.displayName="MDXCreateElement"}}]);