IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 如何优雅的从Harbor中拉取私有镜像? -> 正文阅读

[系统运维]如何优雅的从Harbor中拉取私有镜像?

????????之前在我的专栏《Harbor宝典》中分享了Harbor系列的文章。

? ? ? ? 本期将继续分享在k8s的容器内如何拉取Harbor中的私有镜像。

????????Harbor中公有的镜像我们可以随便拉取,但是一些私有的镜像无法直接拉取到。我们可以使用Secret资源对象来拉取私有镜像,以下为详细的操作步骤。

Harbor地址: https://192.168.2.250:443?

Harbor用户:admin

Harbor密码:Harbor12345

文末记录遇到的问题及解决办法!

1、登录Harbor

????????登录成功后会在~/.docker/config.json文件中记录登录信息,然后基于该信息创建Secret,容器中通过imagePullSecret指定该Secret来实现认证,从而拉取私有镜像。

? ? ? ? 如果登录Harbor失败,请查看专栏的问题解决。

# docker  login  -u admin -p Harbor12345 192.168.2.250:443
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded       //登录成功
# cat ~/.docker/config.json
{
	"auths": {
		"192.168.2.250:443": {
			"auth": "YWRtaW46SGFyYm9yMTIzNDU="
		}
	},
	"HttpHeaders": {
		"User-Agent": "Docker-Client/19.03.8 (linux)"
	}
}

2、用BASH64编码解析密钥数据

????????一下创建Secret的时候需要用到解析出来的结果;-w 0 表示生成秘钥不转行,默认转行不是正确的格式会出错。? ? ? ?

# cat ~/.docker/config.json  | base64 -w 0
ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjIuMjUwOjQ0MyI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy44IChsaW51eCkiCgl9Cn0=

3、创建Secret镜像拉取凭证

?????????.dockerconfigjson的值就是第2步解析的结果(将结果复制到该处)

# vim  harbor-image-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: harbor-pull
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjIuMjUwOjQ0MyI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy44IChsaW51eCkiCgl9Cn0=
# kubectl apply  -f harbor-image-secret.yaml 
secret/harbor-pull created
# kubectl get secret
NAME                  TYPE                                  DATA   AGE
default-token-qqjxn   kubernetes.io/service-account-token   3      13d
harbor-pull           kubernetes.io/dockerconfigjson        1      52s

?????????命令行创建secret的方法见kubectl create secret -h来创建,本处不详细说明了。

4、容器中使用镜像拉取凭证来拉取私有镜像

? ????????本处以拉取私有镜像192.168.2.250:443/muli/tomcat:8.5.34-jre8-alpine为例。

# cat tomcat-pod1.yaml
kind: Pod
apiVersion: v1
metadata: 
  name: tomcat-v2.3.1
  namespace: test
spec: 
  imagePullSecrets:
   - name: image-secret
  containers: 
   - name: tomcat-po
     image: 192.168.2.250:443/muli/tomcat:8.5.34-jre8-alpine
     imagePullPolicy: IfNotPresent
# kubectl apply -f   tomcat-pod1.yaml
pod/tomcat-v2.3.1 created
# kubectl get pods
NAME            READY   STATUS    RESTARTS   AGE
tomcat-v2.3.1   1/1     Running   0          20h

?

?5、遇到的问题

????????创建Pod后,镜像一直拉取失败

问题排查

????????因为是在master上操作的,查看Pod是调度到node节点,但是node节点未登录过Harbor,故node节点没有~/.docker/config.json文件,导致node节点拉取镜像时无法获取到登录的信息。

解决办法:

? ? ? ? 到Pod调度到的节点执行:

# docker  login  -u admin -p Harbor12345 192.168.2.250:443
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded       //登录成功

????????则会自动生成~/.docker/config.json文件,其内容与master生成的一致。

在生产环境中,事先不知道Pod会调度到哪个节点,可以在每个节点都执行登录操作。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:38:51  更:2021-12-26 22:39:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:44:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码