如何使用私有 docker 注册表定义 Kubernetes 作业?

jon*_*alv 1 docker kubernetes docker-registry

我有一个简单的 Kubernetes 作业(基于http://kubernetes.io/docs/user-guide/jobs/work-queue-2/示例),它使用了一个 Docker 映像,该映像已作为公共映像放置在我的 dockerhub 上帐户。这一切看起来像这样:

工作.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
Run Code Online (Sandbox Code Playgroud)

现在我想尝试使用需要身份验证的私有 Docker 注册表,如下所示:

docker login https://myregistry.com

但是我找不到有关如何将用户名和密码添加到 job.yaml 文件的任何信息。它是如何完成的?

iam*_*nat 5

您需要使用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
Run Code Online (Sandbox Code Playgroud)

当然,您必须创建秘密(根据文档)。这就是它的样子:

apiVersion: v1
kind: Secret
metadata:
  name: myregistrykey
  namespace: mynamespace
data:
  .dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson
Run Code Online (Sandbox Code Playgroud)

的值.dockerconfigjson是此文件的 base64 编码:.docker/config.json.

关键点:作业规范包含一个 pod 规范。因此,您获得的有关 pod 规格的任何知识也可以应用于工作。