KSB*_*KSB 26 docker coreos kubernetes
我已经构建了一个运行多容器pod的4节点kubernetes集群,所有这些集群都在CoreOS上运行.图像来自公共和私人存储库.现在我必须登录每个节点并在每次更新时手动下拉图像.我希望能够自动拉动它们.
当我创建pod时,我收到错误消息错误:
image <user/image>:latest not found
Run Code Online (Sandbox Code Playgroud)
如果我登录并运行docker pull它将拉动图像.我使用docker.io和quay.io尝试过这个.
Chi*_*ief 54
要添加到@rob所说的,从docker 1.7开始,不推荐使用.dockercfg,它们现在使用〜/ .docker/config.json文件.在kube 1.1中支持这种类型的秘密,但你必须在yaml中使用不同的键/类型配置创建它:
首先,base64编码你的~/.docker/config.json:
cat ~/.docker/config.json | base64 -w0
Run Code Online (Sandbox Code Playgroud)
请注意,base64编码应该出现在一行上,所以使用-w0我们禁用包装.
接下来,创建一个yaml文件:
my-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: registrypullsecret
data:
.dockerconfigjson: <base-64-encoded-json-here>
type: kubernetes.io/dockerconfigjson
Run Code Online (Sandbox Code Playgroud)
-
$ kubectl create -f my-secret.yaml && kubectl get secrets
NAME TYPE DATA
default-token-olob7 kubernetes.io/service-account-token 2
registrypullsecret kubernetes.io/dockerconfigjson 1
Run Code Online (Sandbox Code Playgroud)
然后,在pod的yaml中,您需要引用registrypullsecret或创建复制控制器:
apiVersion: v1
kind: Pod
metadata:
name: my-private-pod
spec:
containers:
- name: private
image: yourusername/privateimage:version
imagePullSecrets:
- name: registrypullsecret
Run Code Online (Sandbox Code Playgroud)
Bcf*_*Ant 17
如果需要从私有Docker Hub存储库中提取映像,可以使用以下命令.
创建您的密钥
kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
Run Code Online (Sandbox Code Playgroud)
秘密"myregistrykey"创建.
然后将新创建的密钥添加到您的Kubernetes服务帐户.
检索当前的服务帐户
kubectl get serviceaccounts default -o yaml > ./sa.yaml
Run Code Online (Sandbox Code Playgroud)
编辑sa.yaml并在Secrets之后添加ImagePullSecret
imagePullSecrets:
- name: myregistrykey
Run Code Online (Sandbox Code Playgroud)
更新服务帐户
kubectl replace serviceaccount default -f ./sa.yaml
Run Code Online (Sandbox Code Playgroud)
我可以确认imagePullSecrets 不能用于部署,但你可以
kubectl create secret docker-registry myregistrykey --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
kubectl edit serviceaccounts default
Run Code Online (Sandbox Code Playgroud)
加
imagePullSecrets:
- name: myregistrykey
Run Code Online (Sandbox Code Playgroud)
到最后Secrets,保存并退出.它的作品.用Kubernetes 1.6.7测试
| 归档时间: |
|
| 查看次数: |
32779 次 |
| 最近记录: |