docker - Kubernetes 从多个私有(private) Docker 注册表中提取

标签 docker kubernetes

要使用来自私有(private) docker repo 的 docker 容器,kubernetes 建议创建一个类型为“docker-registry”的 secret 并在您的部署中引用它。

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>

然后在您的 helm chart 或 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

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

您将如何从 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

我尝试创建 2 个 secret foo-secretbar-secret并适本地引用每个,但我发现它无法拉动两个容器。

最佳答案

您必须包含 imagePullSecrets:直接在 pod 级别,但你可以在那里有多个 secret 。

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

Kubernetes documentation on this笔记:

If you need access to multiple registries, you can create one secret for each registry. Kubelet will merge any imagePullSecrets into a single virtual .docker/config.json when pulling images for your Pods.

关于docker - Kubernetes 从多个私有(private) Docker 注册表中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53489844/

相关文章:

docker - 无法在 docker build 中升级 pip

kubernetes - NFS卷装入会导致Kubernetes上的退出代码为32?

angular - Angular + Kubernetes + Nginx上的路由问题

authentication - Istio 中的授权策略和请求认证有什么区别?

mysql - 如何从主机连接到在 Docker 上运行的 MySQL

drupal - 不为空时如何共享Docker容器文件夹?

docker - docker在Windows和Mac之间运行语法不同

linux - 要在无人机中构建 docker 镜像,会出现错误 "/bin/sh: 1: base64: not found "。怎么解决呢?

mongodb - Docker +主管:如何初始化服务(mongo&elasticmq)?

http - 如何从 Kubernetes 服务背后的 HTTP 请求中读取客户端 IP 地址?