如何使用私有 docker 注册表定义 Kubernetes 作业?
How to define Kubernetes Job using a private docker registry?
我有一个简单的 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
现在我想尝试使用需要身份验证的私有 Docker 注册表,如:
docker login https://myregistry.com
但是我找不到任何关于如何将用户名和密码添加到 job.yaml 文件的信息。它是怎么做到的?
您需要使用ImagePullSecrets。
创建秘密对象后,您可以在 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
当然,您必须创建密钥(根据文档)。这就是它的样子:
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
namespace: mynamespace
data:
.dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson
.dockerconfigjson
的值是此文件的 base64 编码:.docker/config.json
.
关键点:一个job spec包含一个pod spec。因此,您获得的有关 pod 规格的任何知识也可以应用于工作。
我有一个简单的 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
现在我想尝试使用需要身份验证的私有 Docker 注册表,如:
docker login https://myregistry.com
但是我找不到任何关于如何将用户名和密码添加到 job.yaml 文件的信息。它是怎么做到的?
您需要使用ImagePullSecrets。
创建秘密对象后,您可以在 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
当然,您必须创建密钥(根据文档)。这就是它的样子:
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
namespace: mynamespace
data:
.dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson
.dockerconfigjson
的值是此文件的 base64 编码:.docker/config.json
.
关键点:一个job spec包含一个pod spec。因此,您获得的有关 pod 规格的任何知识也可以应用于工作。