我想使用Kubernetes作为spark的资源管理器。
所以我想提交一个jar far来使用spark-submit
:激发集群
./bin/spark-submit
--master k8s://https://vm:6443
--class com.example.WordCounter
--conf spark.kubernetes.authenticate.driver.serviceAccountName=default
--conf spark.kubernetes.container.image=private-docker-registery/spark/spark:3.2.1-3
--conf spark.kubernetes.namespace=default
--conf spark.kubernetes.authenticate.submission.oauthToken=$TOKEN
--conf spark.kubernetes.authenticate.caCertFile=api.cert
java-word-count-1.0-SNAPSHOT.jar
对于服务帐户:
kubectl create serviceaccount spark
kubectl create clusterrolebinding spark-role
--clusterrole=edit
--serviceaccount=default:default
--namespace=default
对于caCertFile,我使用了/etc/kubernetes/pki/apiserver.crt
内容。
对于提交。oauthToken:
kubectl get secret spark-token-86tns -o yaml | grep token
并使用令牌部分。
但仍然不起作用,并且Ipods is forbidden: User "system:anonymous" cannot watch resource "pods" in API group "" in the namespace "default"
错误
spark.kubernetes.authenticate.caCertFile
必须是service account
证书
并且CCD_ 7必须是CCD_。
证书和令牌都可以在服务帐户机密中找到。
- 小心解码
service account
证书和令牌(base64-d(