通常来讲,我们在通过公共镜像仓库拉取docker镜像的时候,不需要任何的认证操作,但我们在构建了企业的私有镜像以后,就不得不在拉取镜像之前通过用户名密码来完成认证。

在docker单机环境中,我们可以直接在宿主机上执行docker login https://myhub.fdccloud.com类似这种命令的方式来完成认证。但在通过kubernetes来对docker做相关集群管理时,就不得不在所有的节点机上通过上面那种方式完成认证。这在大规模的应用架构中,是不可取的。

当然,我们有另外一种稍微简便的方法。事实上,在执行docker login https://xxxxx完成认证的时候,实际是在当前用户的家目录的.docker目录下生成了一个config.json文件。我们查看该文件的内容如下:

    {"auths": {"https://myhub.fdccloud.com": {"auth": "xxxx","email": "yanw02@mysoft.com.cn"},}}

这个文件包含了认证信息。所以另一个可行的办法,就是直接将该文件通过自动化的方式,推送到所有节点机的相应目录即可。但在实际的测试中,这种方式推送的节点仍然会偶尔出现认证失败的情况,具体什么原因目前尚不清楚。

kubernetes提供多种针对私有仓库认证的方式,在这里,我只说明其中的一种方法,也是我实际使用的方法,通过k8s的secret来实现。

  1. 在k8s master上通过docker login登录registry,生成config.json文件。然后执行如下命令,将文件转换成base64编码:
    cat /root/.docker/config.json|base64 -w 0
  1. 生成registrykey-myhub.yml的配置文件,内容如下:
    apiVersion: v1kind: Secretmetadata:name: registrykey-myhubnamespace: defaulttype: kubernetes.io/dockerconfigjsondata:.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodHRwczovL215aHViLmZkY2Nsb3VkLmNvbS8iOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2VFhsemIyWjBPVFU1TXpnPSIsCgkJCSJlbWFpbCI6ICJ5YW53MDJAbXlzb2Z0LmNvbS5jbiIKCQl9Cgl9Cn0=#创建secret:kubectl create -f registrykey-myhub.yml
  1. 在创建pod时,指定imagePullSecrets,示例如下:
    apiVersion: v1kind: ReplicationControllermetadata:name: sqltools-yczlabels:name: sqltools-yczspec:replicas: 1selector:name: sqltools-ycztemplate:metadata:labels:name: sqltools-yczspec:containers:- name: sqltools-yczimage: myhub.fdccloud.com/common/sqltoolsports:- containerPort: 80env:- name: DB_HOSTvalue: "mysql-ycz.default.svc.cluster.local"- name: DB_NAMEvalue: "config"- name: DB_USERNAMEvalue: "ycz"- name: DB_PASSWORDvalue: "77TqrfPaMbwaZXYu"- name: CACHE_HOSTvalue: "memcached-ycz.default.svc.cluster.local"- name: CACHE_PORTvalue: "11211"- name: CACHE_PREFIXvalue: "ycz"nodeSelector:kubernetes.io/hostname: k8s-masterimagePullSecrets:- name: registrykey-myhub

官方文档配置说明如下:
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

需要说明的是,按照官方文档的配置,验证是失败的,这一点确实是很奇怪。

转载于:https://www.cnblogs.com/breezey/p/9105622.html

K8S从私有仓库拉取镜像相关推荐

  1. linux 从仓库拉取镜像,k8s 从私有仓库拉取镜像

    k8s 从私有仓库摘取镜像报错 with ErrImagePull: "rpc error: code = Unknown desc = Error response from daemon ...

  2. dockerfile拉取私库镜像_从私有仓库拉取镜像

    从私有仓库拉取镜像 浏览 0 扫码 分享 2019-10-27 17:16:54 origin_last_modified:2019-06-06 06:18(#14740) 译文原文 英文原文 版权声 ...

  3. k8s实战之从私有仓库拉取镜像 - kubernetes

    1.实战目的 从私有docker仓库拉取镜像,部署pod.上一篇中,我们搭建了私有的镜像仓库,这一篇我们将与k8s结合实战使用私有仓库. 2.登录docker 为了完成本次实战,需要登录docker, ...

  4. docker 从harbor 拉取镜像慢_Kubernetes-通过Rancher从Harbor私有仓库拉取镜像

    引言   前一篇文章详细描述了如何使用rancher搭建Kubernetes高可用集群,集群搭建好了后,我们就需要开始部署应用了,那么如何从私有镜像仓库拉取镜像呢? 原理   Harbor使用了基于角 ...

  5. 快速解决Kubernetes从k8s.gcr.io仓库拉取镜像失败问题

    前言:  在部署Kubernetes的过程中,需要从k8s.grc.io仓库中拉取部署所需的镜像文件,但是由于国内对国外的防火墙问题导致无法正常拉取,下面介绍一个方法来解决此问题,完成Kubernet ...

  6. 5.docker从指定(私有)仓库拉取镜像、推送镜像

    1.推送镜像到私有仓库 1.1修改配置daemon.json 由于我用的mac系统,直接在docker客户端配置私有仓库地址即可.配置完之后记得重启docker. 1.2 给镜像打标签 举例将从官方仓 ...

  7. 创建机器人账户,用来给 k8s 从一个私有项目拉取镜像

    转自:https://randyou.github.io/2020/06/16/k8s-pull-from-harbor/ 登录 Harbor 进入一个私有项目 点击机器人账户页签,添加一个机器人账号 ...

  8. docker pull 从仓库拉取镜像

    docker pull 要拉取的镜像名 等价于 docker pull 要拉取的镜像名:lastest 拉取固定的镜像:docker pull 要拉取的镜像名:版本号 省略lastest表设计就是拉取 ...

  9. 【K8S】Docker向私有仓库拉取/推送镜像报错(http: server gave HTTP response to HTTPS client)

    这里,我们搭建的Harbor仓库的地址为 http://192.168.175.101:1180. 报错信息如下所示. [root@binghe101 ~]# docker login 192.168 ...

最新文章

  1. 女皇万岁!我们是来送礼的 ——阿里聚安全春天系列全套大礼包
  2. Django项目知识点(三)
  3. 关于动画的几种状态表示的含义以及能够使用2d动画表述为什么要使用3d动画表述
  4. PAT (Advanced Level) 1038. Recover the Smallest Number (30)
  5. 北大OJ(POJ 2795)金银岛
  6. 纽约州立大学宾汉姆顿大学计算机科学专业,纽约州立大学宾汉姆顿大学
  7. ckeditor简单使用心得
  8. 在Visio里加上、下标方法
  9. visualcreators.com公司产品过滤漏洞!
  10. CentOS7:Ruby安装
  11. SQL 数据库 学习 004 预备知识
  12. vuejs中根据用户名生成头像背景色
  13. 移动硬盘安装manjaro 20.2以及常用软件安装
  14. 如何修复老照片,Bringing-Old-Photos-Back-to-Life机器学习开源项目安装使用 | 机器学习
  15. 云聚创新力量 领航数字未来 峯云5G·联通沃云峰会2019成功举行
  16. Carla在Windows上的安装与运行
  17. Can't update table 'psxt_user' in stored function/trigger because it is already used by statement wh
  18. Latex中在字母上加上波浪线
  19. 云服务器快速建网站_安装BT宝塔面板和wordpress
  20. 微软高管:IT业正向个人计算时代转型

热门文章

  1. 氮化物 Al2O3-TiN陶瓷粉末/铁三铝金属间化合物-氮化钛陶瓷复合材料/TiN复合材料A12O3陶瓷氮化铝氮化钛氧铝
  2. 为什么说固定资产管理系统是企业降本增效的利器?
  3. 电子工程师怎么才能规范设计标准、提高设计效率?
  4. Java 贪吃蛇 最简易地实现方法 超简短代码实现 (附源码 详解)
  5. 貌似潘安,情如宋玉,才胜子建 是什么意思?
  6. HTTP 请求中的Header 参数
  7. Genymotion安装及配置简介
  8. 107. 二叉树的层次遍历 II(JavaScript)
  9. UML Thinking in UML大象 参与者
  10. 敏捷软件开发:原则、模式与实践——第14章 使用UML