我想访问多个远程注册表来获取图像。在k8s 文档中,他们说:
(如果需要访问多个注册表,则可以为每个注册表创建一个秘密。Kubelet会将任何imagePullSecrets合并成一个虚拟的. .docker/config.json)
所以POD的定义应该是这样的:
apiVersion: v1
kind: Pod
spec:
containers:
- name: ...
imagePullSecrets:
- name: secret1
- name: secret2
- ....
- name: secretN现在我不知道K8S将如何为每一张图片挑选正确的秘密?所有的秘密每一次都会被逐个验证吗?K8S将如何处理失败的重试?如果有一定数量的未经授权的重试会导致k8sor坞注册中心出现某种锁定状态?
//谢谢
发布于 2020-01-13 13:22:11
除非找到正确的答案,否则库伯内特斯不会尝试所有的秘密。当您创建秘密时,您正在引用它是一个码头注册中心:
$ kubectl create secret docker-registry user1-secret --docker-server=https://index.docker.io/v1/ --docker-username=user1 --docker-password=PASSWORD456 --docker-email=user1@email.com
$ kubectl create secret docker-registry user2-secret --docker-server=https://index.docker.io/v1/ --docker-username=user2 --docker-password=PASSWORD123 --docker-email=user2@email.com
$ kubectl get secrets user1-secret -o yaml
apiVersion: v1
data:
.dockerconfigjson: eyJhdXRocyI6eyJkb2NrZXIuZXhhbXBsZS5jb20iOnsidXNlcm5hbWUiOiJrdWJlIiwicGFzc3dvcmQiOiJQV19TVFJJTkciLCJlbWFpbCI6Im15QGVtYWlsLmNvbSIsImF1dGgiOiJhM1ZpWlRwUVYxOVRWRkpKVGtjPSJ9fX0=
kind: Secret
metadata:
creationTimestamp: "2020-01-13T13:15:52Z"
name: user1-secret
namespace: default
resourceVersion: "1515301"
selfLink: /api/v1/namespaces/default/secrets/user1-secret
uid: d2f3bb0c-3606-11ea-a202-42010a8000ad
type: kubernetes.io/dockerconfigjson正如你所看到的,类型is kubernetes.io/dockerconfigjson正在告诉Kubernetes以不同的方式对待这个问题。
因此,当您在yaml上将容器的地址引用为magic.example.com/magic-image时,Kubernetes将有足够的信息连接这些点并使用正确的秘密来提取您的图像。
apiVersion: v1
kind: Pod
metadata:
name: busyboxes
namespace: default
spec:
imagePullSecrets:
- name: user1-secret
- name: user2-secret
containers:
- name: jenkins
image: user1/jenkins
imagePullPolicy: Always
- name: busybox
image: user2/busybox
imagePullPolicy: Always 因此,正如这个示例所描述的那样,有可能有两个或多个具有相同--docker-server值的停靠者注册表机密。库伯内特斯会处理得天衣无缝的。
发布于 2020-06-19 01:35:41
可以使用以下脚本在一个秘密中添加两个身份验证
#!/bin/bash
u1="user_1_here"
p1="password_1_here"
auth1=$(echo -n "$u1:$p1" | base64 -w0)
u2="user_2_here"
p2="password_2_here"
auth2=$(echo -n "$u2:$p2" | base64 -w0)
cat <<EOF > docker_config.json
{
"auths": {
"repo1_name_here": {
"auth": "$auth1"
},
"repo2_name_here": {
"auth": "$auth2"
}
}
}
EOF
base64 -w0 docker_config.json > docker_config_b64.json
cat <<EOF | kubectl apply -f -
apiVersion: v1
type: kubernetes.io/dockerconfigjson
kind: Secret
data:
.dockerconfigjson: $(cat docker_config_b64.json)
metadata:
name: specify_secret_name_here
namespace: specify_namespace_here
EOFhttps://stackoverflow.com/questions/59714903
复制相似问题