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 ...
随机推荐
- servlet 和 threadlocal 与 web容器(理解threadlocal)
同步机制采用了“以时间换空间”的方式,提供一份变量,让不同的线程排队访问.而ThreadLocal采用了“以空间换时间”的方式,为每一个线程都提供了一份变量的副本,从而实现同时访问而互不影响. htt ...
- final文案+美工展示
作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/1438 团队介绍:thunder 组成员及各位博客地址: 1.王航:htt ...
- Android笔记-3-EditText的属性介绍
[Android 基础]EditText的属性介绍 EditText继承TextView,所以EditText具有TextView的属性特点,下面主要介绍一些EditText的特有的输入法的属性特点 ...
- Hive与Hbase的区别
1. 两者分别是什么? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库.通过Hive可以使用HQL语言查询存放在HDFS上的数据.HQL是一种类SQL语言,这种语言最终被 ...
- C1WPF制作OLAP Cube浏览工具
经过前期一段时间对WPF的学习了解,相信大家对WPF有了一定的了解.今天我们一起来了解使用Component One(简称C1)的WPF控件制作CUBE浏览工具.其实这个OLAP控件官方已经有了很详细 ...
- 获取ios设备的udid
今天get的第二个技能~~~ UDID指的是设备的唯一设备识别符,ipa包未上架之前如果不添加udid是无法安装成功的.那么如何快速获取ios设备的udid呢? 今天get的方法是用蒲公英,网址:ht ...
- JMeter性能测试基础 (1) - 安装及简单使用
Apache JMeter是一款开源性能测试工具,全部功能使用Java编写,可用于进行性能测试.JMeter最初被设计用于Web应用测试,之后被扩展至多个测试领域. Apache jmeter 可以用 ...
- SQLSERVER 修改实例名以及架构信息
1. GUI的方式 后者是 alter database 的方式修改 instance的名字 2. 在全局的安全性下面创建用户. 3. 在实例的安全性下面创建架构和用户(架构名与用户名一直, 使用新实 ...
- [OS] Linux进程、线程通信方式总结
转自:http://blog.sina.com.cn/s/blog_64b9c6850100ub80.html Linux系统中的进程通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程 ...
- lepus天兔数据库监控
本篇文章的前提是服务器装了mysql服务.git,我这边就不写出来了,自行百度,装下mysql服务,比较简单 一.安装LAMP基础环境 Xampp下载地址:https://www.apachefrie ...