Apache spark K8s图像从私有人工制品中提取
我正在使用下面的清单来运行一些k8s作业,但是由于下面的错误,我无法成功提交作业Apache spark K8s图像从私有人工制品中提取,apache-spark,kubernetes,containers,artifactory,kubernetes-secrets,Apache Spark,Kubernetes,Containers,Artifactory,Kubernetes Secrets,我正在使用下面的清单来运行一些k8s作业,但是由于下面的错误,我无法成功提交作业 apiVersion: batch/v1 kind: Job metadata: name: spark-on-eks spec: template: spec: imagePullSecrets: - name: mycreds containers: - name: spark image: repo:buildversio
apiVersion: batch/v1
kind: Job
metadata:
name: spark-on-eks
spec:
template:
spec:
imagePullSecrets:
- name: mycreds
containers:
- name: spark
image: repo:buildversion
command:
- "/bin/sh"
- "-c"
- '/opt/spark/bin/spark-submit \
--master k8s://EKSEndpoint \
--deploy-mode cluster \
--name spark-luluapp \
--class com.ll.jsonclass \
--conf spark.jars.ivy=/tmp/.ivy \
--conf spark.kubernetes.container.image=repo:buildversion \
--conf spark.kubernetes.namespace=spark-pi \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark-sa \
--conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \
--conf spark.kubernetes.authenticate.executor.serviceAccountName=spark-sa \
--conf spark.kubernetes.driver.pod.name=spark-job-driver \
--conf spark.executor.instances=4 \
local:///opt/spark/examples/App-buildversion-SNAPSHOT.jar \
[mks,env,reg,"dd.mm.yyyy","true","off","db-comp-results","true","XX","XXX","XXXXX","XXX",$$,###] '
serviceAccountName: spark-pi
restartPolicy: Never
backoffLimit: 4
错误:错误:ImagePullback
正常拉取映像“repo/buildversion”
警告未能拉取映像“repo/buildversion”:rpc错误:代码=未知描述=来自守护程序的错误响应:未经授权:客户端没有清单权限
我检查了我列出的秘密,这些秘密已经创建并用于已部署的应用程序
这个问题是否与init容器有关,它被用作pod/jobs的秘密注入,或者我的清单中缺少的东西,另外,我在Jenkins Slave上运行上述步骤作为辅助信息的一部分,对于其他应用程序pod(不确定k8s作业)是否使用端口、docker路径,还是在Artifactory中反向配置代理 首先在另一台机器上验证,您可以提取图像 i、 东区(码头径) 鉴于命名约定,我相信您可能正在使用反向代理配置:
"repo:buildversion"
在这种情况下,您需要在repo上进行docker登录:
docker login repo
docker push repo:buildversion
这对于k8s意味着您可能使用了错误的docker服务器URL,这就是为什么即使使用有效的API密钥,身份验证也无法工作的原因
如果使用反向代理,请尝试以下操作:
kubectl create secret docker-registry mycred \
--docker-server=repo \
--docker-username=<your-name> \
--docker-password=<your-api-key> \
--docker-email=<your-email>
kubectl创建秘密docker注册表mycred\
--docker服务器=repo\
--docker用户名=\
--docker密码=\
--docker电子邮件=
您是在Artifactory中使用端口、docker路径还是反向代理配置
首先在另一台机器上验证,您可以提取图像
i、 东区(码头径)
鉴于命名约定,我相信您可能正在使用反向代理配置:
"repo:buildversion"
在这种情况下,您需要在repo上进行docker登录:
docker login repo
docker push repo:buildversion
这对于k8s意味着您可能使用了错误的docker服务器URL,这就是为什么即使使用有效的API密钥,身份验证也无法工作的原因
如果使用反向代理,请尝试以下操作:
kubectl create secret docker-registry mycred \
--docker-server=repo \
--docker-username=<your-name> \
--docker-password=<your-api-key> \
--docker-email=<your-email>
kubectl创建秘密docker注册表mycred\
--docker服务器=repo\
--docker用户名=\
--docker密码=\
--docker电子邮件=
用户是否具有使用Artifactory repo的适当权限?是!它有权限!用户是否具有使用Artifactory repo的适当权限?是!它有权限!