使用k8s管理spark集群
1、构建镜像
使用spark安装目录下的Dockerfile文件进行镜像构建,作为executor容器的镜像使用,如果使用pyspark,在镜像中需要安装python,其版本需要和driver中使用的python的版本保持一致。
2、通过k8s管理spark集群
通过pyspark启动spark计算容器的配置中,需要创建一个具有操作pod权限的serviceaccount:
kubectl create serviceaccount spark --namespace=ns
对于私有仓库,拉取镜像所需的secret可以通过一下命令,添加对应Image pull secrets的值即可,需要自行创建相应的secret:
kubectl edit sa spark -n ns
为serviceaccount绑定集群角色,指定角色内容(即可以在集群中的操作权限):
kubectl create clusterrolebinding spark-role --clusterrole=admin --serviceaccount=spark --namespace=ns
3、访问Kerberized的hdfs
使用spark3.0.1或者之前版本(需要支持k8s调度),在sparkdriver的conf中,kubernetes相关的配置没有为其指定以访问方式,均以SIMPLE方式访问,因此需要给sparkdriver一个环境变量(参见spark security相关内容):HADOOP_CONF_DIR,指定Hadoop配置文件的目录,该目录至少包含hdfs-core.xml、core-site.xml文件,配置上kerberos相关的声明。