全栈工程师开发手册 (作者:栾鹏)
架构系列文章
首先要求你的k8s支持helm。阿里云自带的k8s已经包含了对helm的支持。关于服务器k8s的部分这里不讨论,我们考论如何用一个已经好的k8s来进行部署spark。
安装配置 kubectl 和 Helm CLI
在本地计算机上安装和配置 kubectl。
参见https://blog.csdn.net/luanpeng825485697/article/details/80862581文章中安装kubectl
在本地计算机上安装 Helm。
安装方法,参见https://github.com/helm/helm/blob/master/docs/install.md?spm=a2c4g.11186623.2.6.Qr9c2B&file=install.md
本地有了kubectl和helm以后,我们就可以来在k8s上部署spark了。
配置 Helm 的 Repository。这里我们使用了阿里云容器服务提供的 Charts 存储库。
helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.9.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
稍等一会,再通过下面的命令查看helm的客户端和服务器端
helm version
helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
helm repo update
通过helm安装官方spark
helm search spark 查找所有可用的spark应用
kubectl create ns cloudai-2
helm install --name cloud-spark --namespace cloudai-2 aliyun/spark
如果安装出错了可以删除charts
helm delete --purge cloud-spark
通过helm自定义安装spark
上面安装的spark将自动部署三个pod,部署配置可能不能满足我们的要求,我们可以自定义配置来安装
首选下载hlem应用。
helm fetch aliyun/spark
解压后修改values.yaml文件
修改vlaue.yaml文件中
ServiceType: NodePort
在Master下添加
NodePort: 31461
修改templates/spark-master-deployment.yaml文件中
为master服务修改为
spec:
ports:
- port: {{ .Values.Master.ServicePort }}
targetPort: {{ .Values.Master.ContainerPort }}
nodePort: {{ .Values.Master.NodePort }}
selector:
component: "{{ .Release.Name }}-{{ .Values.Master.Component }}"
type: {{ .Values.Master.ServiceType }}
最后安装本地文件夹就可以了
helm install --name cloud-spark --namespace cloudai-2 spark