要使用私有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>
然后在头盔图或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个机密foo-secret
和bar-secret
并适当地引用它们,但是我发现它无法拉出两个容器。
答案 0 :(得分:4)
您必须直接在Pod级别添加imagePullSecrets:
,但在那里可以有多个秘密。
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注释:
如果您需要访问多个注册表,则可以为每个注册表创建一个秘密。当为您的Pod提取图像时,Kubelet会将所有
imagePullSecrets
合并为一个虚拟.docker/config.json
。