Apache spark 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

我正在使用下面的清单来运行一些k8s作业,但是由于下面的错误,我无法成功提交作业

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的适当权限?是!它有权限!