Docker Hub以及利用开源harbor项目搭建的镜像仓库服务,对于Docker Client发起的docker login、docker push、docker pull等命令都会做基本的用户认证,
最简单常用的认证方式就是Basic Auth,即在发起的http请求头中添加一个Authorization,其值为base64(username:password),当前Docker Client都是这么处理。
在Kubernetes中,Secret资源对象用来存储和管理一些敏感信息,比如密码、Auth Token以及SSH keys,把这些敏感信息放入Secret对象中,相对来说更安全更灵活。
Kubernetes可以通过环境变量、文件挂载等方式将Secret信息推到每一个Pod中,通过文件挂载形式还能使Secret在pod中实时更新,Kubernetes统一管理。
Kubernetes中调度Pod成功之后,则开始拉取指定镜像启动容器,在Deployment对象中有几个与镜像拉取相关的重要配置参数。
spec.template.spec.containers[n].image,容器启动时的镜像
spec.template.spec.imagePullSecrets,Secret中定义了镜像所在仓库的用户名密码
spec.template.spec.containers[n].imagePullPolicy,定义了镜像拉取策略
imagePullPolicy决定了是否发起镜像下拉请求,它的值范围Always、Never、IfNotPresent,默认为IfNotPresent,但标签为:latest的镜像默认为Always。
Always,不管宿主机上镜像是否存