K8S从私有仓库拉取镜像
通常来讲,我们在通过公共镜像仓库拉取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来实现。
- 在k8s master上通过docker login登录registry,生成config.json文件。然后执行如下命令,将文件转换成base64编码:
cat /root/.docker/config.json|base64 -w 0
- 生成registrykey-myhub.yml的配置文件,内容如下:
apiVersion: v1
kind: Secret
metadata:
name: registrykey-myhub
namespace: default
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodHRwczovL215aHViLmZkY2Nsb3VkLmNvbS8iOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2VFhsemIyWjBPVFU1TXpnPSIsCgkJCSJlbWFpbCI6ICJ5YW53MDJAbXlzb2Z0LmNvbS5jbiIKCQl9Cgl9Cn0=
#创建secret:
kubectl create -f registrykey-myhub.yml
- 在创建pod时,指定imagePullSecrets,示例如下:
apiVersion: v1
kind: ReplicationController
metadata:
name: sqltools-ycz
labels:
name: sqltools-ycz
spec:
replicas: 1
selector:
name: sqltools-ycz
template:
metadata:
labels:
name: sqltools-ycz
spec:
containers:
- name: sqltools-ycz
image: myhub.fdccloud.com/common/sqltools
ports:
- containerPort: 80
env:
- name: DB_HOST
value: "mysql-ycz.default.svc.cluster.local"
- name: DB_NAME
value: "config"
- name: DB_USERNAME
value: "ycz"
- name: DB_PASSWORD
value: "77TqrfPaMbwaZXYu"
- name: CACHE_HOST
value: "memcached-ycz.default.svc.cluster.local"
- name: CACHE_PORT
value: "11211"
- name: CACHE_PREFIX
value: "ycz"
nodeSelector:
kubernetes.io/hostname: k8s-master
imagePullSecrets:
- name: registrykey-myhub
官方文档配置说明如下:
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
需要说明的是,按照官方文档的配置,验证是失败的,这一点确实是很奇怪。
K8S从私有仓库拉取镜像的更多相关文章
- 配置 Containerd 在 harbor 私有仓库拉取镜像
官方文档地址:https://github.com/containerd/cri/blob/master/docs/registry.md 严格来说,这个具体可分为两部分 1.在k8s中使用Conta ...
- k8s实战之从私有仓库拉取镜像 - kubernetes
1.实战目的 从私有docker仓库拉取镜像,部署pod.上一篇中,我们搭建了私有的镜像仓库,这一篇我们将与k8s结合实战使用私有仓库. 2.登录docker 为了完成本次实战,需要登录docker, ...
- Portainer安装,配置自定义镜像仓库拉取镜像
Portainer介绍 Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容器控制台 ...
- 关于使用kubeoperator搭建k8s集群使用containerd作为容器运行时,从自己搭建的habor仓库拉取镜像的有关说明
1.kubepi界面添加habor仓库信息,并授权给k8s集群 这一步的操作是当在工作负载选择从harbor仓库拉取镜像时会自动创建有关的secrets信息,从而不用事先手动创建了(有别于kuboar ...
- Kubernetes从私有镜像仓库中拉取镜像
当我们尝试从私有仓库中拉取镜像时,可能会收到这样提示:requested access to the resource is denied Error response from daemon: pu ...
- Kunbernetes从私有仓库nexus拉取镜像
1.docker登陆认证 [root@master ~]# vim /etc/docker/daemon.json { "insecure-registries": [" ...
- 【docker】【mysql】docker安装mysql,阿里云docker镜像加速器,docker搜索查看远程仓库上的镜像,docker拉取镜像,查看本地所有镜像,查看容器的运行状况,查看容器的详细信息
在docker上安装mysql有两种方式 1.通过Dockerfile构建 2.直接在docker hub上拉取镜像安装 =================本篇采用方法2=============== ...
- 删除docker私有仓库中的镜像
1.搭建私有仓库 (1)拉取私有仓库镜像 docker pull registry(2)启动私有仓库容器 docker run ‐di ‐‐name=registry ‐p 5000:5000 reg ...
- docker拉取镜像报错:net/http: TLS handshake timeout.
docker拉取镜像报错:net/http: TLS handshake timeout. 启动一个后台的busybox容器 [yunva@node1 network-scripts]$ docker ...
随机推荐
- Redux和React-Redux的实现(二):Provider组件和connect的实现
接着上一篇讲,上一篇我们实现了自己的Redux和介绍了React的context以及Provider的原理. 1. Provider组件的实现 Provider组件主要有以下下两个作用 在整个应用上包 ...
- url传多值问题
使用url传值的特点是操作简单,虽然安全性低,但依然广泛运用. url传数据绑定的值: <a href='Default.aspx?id=<%#Eval("ID")%& ...
- "1001. A+B Format (20)" 解题报告
Github : git@github.com:Circlecos/object-oriented.git PDF Of Markdown : "1001. A+B Format (20)& ...
- HDU 3853 LOOPS 期望dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3853 LOOPS Time Limit: 15000/5000 MS (Java/Others)Me ...
- diliucizuoye
NABCD N(Need 需求) 互联网的高速发展,造就了二十一世纪这个追求高品质.高体验的信息时代,随其发展改变的是信息记录与分享方式,从传统的面对面交流.手机通话.写日记本,到现如今的社交平台.信 ...
- Spring下使用开发webservice
依赖包 <!-- CXF Dependencies --> <dependency> <groupId>org.apache.cxf</groupId> ...
- Java分布式应用
分布式计算就是通过计算机网络将计算工作分布到多台主机上,多个主机一起协同完成工作. 我试着列一下相关知识吧. 网络通讯,网络是分布式的基础,对分布式的理解建立在对网络的理解上,包括: OSI模型的7层 ...
- UIPickerView的使用
简介:UIPickerView是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.UIPick ...
- 红帽旗下Linux的版本说明RedHat、CentOS、Fedora、OEL等
简单总结一下RedHat.CentOS.Fedora Core区别关系: RedHat: 红帽已经被IBM 340亿刀收购了,但是红帽依旧发型自己的RedHat enterprise linux 版本 ...
- [转帖]剖析淘宝TDDL(TAOBAO DISTRIBUTE DATA LAYER)
剖析淘宝TDDL(TAOBAO DISTRIBUTE DATA LAYER) 博客分类: 原博客地址: http://qq85609655.iteye.com/blog/2035176 distrib ...