我有一个简单的 Kubernetes 作业(基于 http://kubernetes.io/docs/user-guide/jobs/work-queue-2/ 示例),它使用了一个 Docker 镜像,该镜像已作为公共(public)镜像放置在我的 dockerhub 帐户中。一切都是这样的:
job.yaml:
apiVersion: batch/v1
kind: Job
metadata:
name: job-wq-2
spec:
parallelism: 2
template:
metadata:
name: job-wq-2
spec:
containers:
- name: c
image: jonalv/job-wq-2
restartPolicy: OnFailure
现在我想尝试使用需要身份验证的私有(private) Docker 注册表,如下所示:
docker 登录 https://myregistry.com
但是我找不到任何关于如何将用户名和密码添加到我的 job.yaml 文件的信息。是怎么做到的?
最佳答案
您需要使用 ImagePullSecrets .
一旦你创建了一个 secret 对象,你就可以在你的 pod 规范中引用它(spec
值是 containers
的父级:
apiVersion: batch/v1
kind: Job
metadata:
name: job-wq-2
spec:
parallelism: 2
template:
metadata:
name: job-wq-2
spec:
imagePullSecrets:
- name: myregistrykey
containers:
- name: c
image: jonalv/job-wq-2
restartPolicy: OnFailure
当然,您必须创建 secret (根据文档)。这就是它的样子:
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
namespace: mynamespace
data:
.dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson
.dockerconfigjson
的值是这个文件的base64编码:.docker/config.json
。
关键点:一个工作规范包含一个 pod 规范。因此,您获得的关于 pod 规范的任何知识也可以应用到工作中。
关于docker - 如何使用私有(private) Docker 注册表定义 Kubernetes 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40782458/