Kubernetes使用私有仓库
在使用Kubernetes部署应用程序时,大概率会使用私有docker仓库。其实使用私有仓库的逻辑还是比较简单的,只需要登录私有仓库并pull镜像即可。但是在操作上还是不那么直观的。
设置私有仓库登录信息的方式有两种,导入配置文件docker/config.json和使用命令生成登录信息。这些信息记录在secrets中。
导入配置文件的方式你需要使用docker login命令登录你的私有仓库,登录成功之后会在~/.docker/config.json找到登录成功的配置文件。使用命令行导入配置文件即可
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=<path/to/.docker/config.json> \
--type=kubernetes.io/dockerconfigjson
命令行生成登录信息的方式就比较简单了。直接执行命令,kubernetes会自动生成登录信息。
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
使用时在pod的yaml中指定imagePullSecrets。
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: regcred
这里有一个问题是以后每次新增pod的时候都要配置这个属性,而且这个属性可能会随着环境变化而变化。查看文档可知,在sa上也有一个imagePullSecrets,kubernetes在拉取镜像时会读取这里的值。这样就可以不在pod中配置imagePullSecrets。
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}'
在登录信息发生变更的时候只要删除并重新创建secrets,保持名称一致。sa中记录的imagePullSecrets不需要改变。
kubectl delete secrets regcred
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
正文到此结束
- 本文标签: docker kubernetes
- 版权声明: 本站原创文章,于2020年08月10日由陈宏博发布,转载请注明出处
热门推荐
相关文章
该篇文章的评论功能已被站长关闭