Kubernetes从多个私有Docker注册表中提取

spu*_*der 5 docker kubernetes

要使用私有Docker存储库中的Docker容器,kubernetes建议创建一个类型为``docker-registry''的密钥并在您的部署中引用它。

https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
Run Code Online (Sandbox Code Playgroud)

然后在舵图或kubernetes部署文件中使用 imagePullSecrets

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: foo
spec:
  replicas: {{ .Values.replicaCount }}
  template: 
    spec:
      imagePullSecrets:
      - name: regcred
      containers:
      - name: foo
        image: foo.example.com
Run Code Online (Sandbox Code Playgroud)

这可行,但是要求所有容器都来自同一注册表。

您将如何从2个注册表中提取2个容器(例如,使用与主要容器分开存放的小车)?

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: foo
spec:
  replicas: {{ .Values.replicaCount }}
  template: 
    spec:
      containers:
      - name: foo
        image: foo.example.com
        imagePullSecrets:
        - name: foo-secret
      - name: bar
        image: bar.example.com
        imagePullSecrets:
        - name: bar-secret
Run Code Online (Sandbox Code Playgroud)

我尝试创建2个机密foo-secretbar-secret适当地引用每个机密,但是我发现它无法拉出两个容器。

Dav*_*aze 6

您必须imagePullSecrets:直接将其包含在Pod级别,但在那里可以有多个秘密。

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: foo
spec:
  replicas: {{ .Values.replicaCount }}
  template: 
    spec:
      imagePullSecrets:
      - name: foo-secret
      - name: bar-secret
      containers:
      - name: foo
        image: foo.example.com/foo-image
      - name: bar
        image: bar.example.com/bar-image
Run Code Online (Sandbox Code Playgroud)

关于此说明的Kubernetes文档

如果需要访问多个注册表,则可以为每个注册表创建一个秘密。当为您的Pod 提取图像时,Kubelet会将任何内容合并imagePullSecrets到一个虚拟中.docker/config.json