Céd*_*oit 3 docker kubernetes dockerhub
我们刚刚购买了 docker hub pro 用户,这样我们就不必担心拉取速率限制。
现在,我在尝试设置 docker hub pro 用户时遇到问题。有没有办法在全球范围内设置 hub.docker.com 的凭据?
在 kubernetes 文档中,我找到了以下文章:Kubernetes | 为私有注册表配置节点
在每个节点上,我使用凭据执行了 docker 登录,将 config.json 复制到 /var/lib/kubelet 并重新启动 kubelet。但由于这些速率限制,我仍然收到 ErrImagePull。
我已将 config.json 复制到以下位置:
可以选择使用秘密进行身份验证。问题是,我们需要编辑数百个有状态集、部署和解除集。所以如果能全局设置 docker 用户就好了。
这是 config.json:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "[redacted]"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.13 (linux)"
}
}
Run Code Online (Sandbox Code Playgroud)
为了检查它是否确实使用用户登录,我在我的帐户中创建了一个访问令牌。在那里我可以看到使用所述令牌的最后一次登录。上次登录是在执行 docker login 命令时。因此,我尝试提取的图像没有使用这些凭据。
有任何想法吗?
谢谢你!
Kubernetes 使用镜像拉取机密来实现这一点。该文档在演示整个过程方面做得更好。
使用 Docker config.json:
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=<path/to/.docker/config.json> \
--type=kubernetes.io/dockerconfigjson
Run Code Online (Sandbox Code Playgroud)
或者您可以直接传递设置:
kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
Run Code Online (Sandbox Code Playgroud)
然后在 pod 定义中使用这些秘密:
apiVersion: v1
kind: Pod
metadata:
name: foo
namespace: awesomeapps
spec:
containers:
- name: foo
image: janedoe/awesomeapp:v1
imagePullSecrets:
- name: myregistrykey
Run Code Online (Sandbox Code Playgroud)
或者在用户级别使用秘密(将图像拉取秘密添加到服务帐户)
kubectl get serviceaccounts default -o yaml > ./sa.yaml
打开 sa.yaml 文件,删除包含 key resourceVersion 的行,添加包含 imagePullSecrets: 的行并保存。
kind: ServiceAccount
metadata:
creationTimestamp: "2020-11-22T21:41:53Z"
name: default
namespace: default
selfLink: /api/v1/namespaces/default/serviceaccounts/default
uid: afad07eb-f58e-4012-9ccf-0ac9762981d5
secrets:
- name: default-token-gkmp7
imagePullSecrets:
- name: regcred
Run Code Online (Sandbox Code Playgroud)
最后用新更新的 sa.yaml 文件替换 serviceaccount
kubectl replace serviceaccount default -f ./sa.yaml
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |