dockerfile拉取私库镜像_关于kubernetes拉取私库镜像需要注意的点
刚开始完k8s,总会遇到很多坑,因为是开源项目,版本总在更新,所以要时刻关注自己使用的版本有哪些不一样的命令和参数。本次采坑是想让k8s可以在建立pod时可以到私库中拉取镜像。根据官网或网上资料,可以通过创建secret记录私库鉴权信息。具体做法如下:首先在其中一个node上登录私有仓库(docker 访问私库的配置,这里不做描述)docker login my.registry登录成功后会在/r
刚开始完k8s,总会遇到很多坑,因为是开源项目,版本总在更新,所以要时刻关注自己使用的版本有哪些不一样的命令和参数。
本次采坑是想让k8s可以在建立pod时可以到私库中拉取镜像。根据官网或网上资料,可以通过创建secret记录私库鉴权信息。具体做法如下:
首先在其中一个node上登录私有仓库(docker 访问私库的配置,这里不做描述)
docker login my.registry
登录成功后会在/root/.docker目录下生产config.json文件,然后执行如下命令:
cat /root/.docker/config.json | base64 -w 0
该命令会将你的认证信息通过base64编码,生成一个编码之后的字符串。
在kubernetes中的master节点中创建secret.yaml:
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
type: kubernetes.io/dockercfg
data:
.dockercfg: ewoJImF1dGhzIjogewoJCSJidXMuZ2EiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2WVdSdGFXNHhOVGszTlRNPSIKCQl9Cgl9Cn0=
在kubernetes中的master节点创建secret:
kubectl create -f secret.yaml
查看secret是否创建:
kubectl get secret
之后在创建其他元素的时候指定:imagesPullSecrets即可。
例如:
pod:
apiVersion: v1
kind: Pod
metadata:
name: redis-test
containers:
name: redis-test
image: my.registry/redis
imagePullSecrets:
name: myregistrykey
至此是网上和官网提供的可以让k8s启动pod时访问私库的方法。
很多人也是可以使用,但由于k8s一直在更新版本,网上很多资料都是建立在旧版本基础上进行验证,在新版本中一些参数有变更。
本次采坑就是在于编辑secret元素时type和date参数有变动,从k8s 1.8之后,kubernetes.io/dockercfg就变成kubernetes.io/dockerconfigjson,相对应 .dockercfg也变成.dockerconfigjson,所以在使用k8s 1.8以后版本创建secret时,元素要变成如下:
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJidXMuZ2EiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2WVdSdGFXNHhOVGszTlRNPSIKCQl9Cgl9Cn0=
type: kubernetes.io/dockerconfigjson
不然在创建完secret后,pod启动会报需要验证或者找不到镜像的错误,而无法正常使用镜像。
更多推荐
所有评论(0)