k8s从私有库harbor中拉取镜像

目录

一、前言

二、配置

三、问题总结


一、前言

Docker镜像是构建应用程序的基础。然而,许多组织和开发团队希望保留他们的Docker镜像在私有仓库中,并从中拉取镜像,而不是从公共Docker Hub中下载。这样做的原因有很多,包括:

  1. 安全性:私有仓库可以提供更高的安全性,因为它们可以控制谁可以访问和下载镜像。这可以防止未经授权的访问和数据泄露。

  2. 可靠性:私有仓库可以提供更可靠的镜像下载速度和更稳定的服务。此外,私有仓库还可以缓存常用的镜像,以便更快地访问它们。

  3. 管理性:私有仓库可以帮助组织更好地管理他们的Docker镜像资源。它们可以轻松地组织和管理自己的镜像,而无需依赖第三方服务。

因此,从私有仓库中拉取镜像已经成为了许多企业和开发团队的最佳实践。在本篇博客中,我们将探讨如何在Kubernetes集群中成功地从私有仓库中拉取镜像,以便更好地管理和部署应用程序。

二、配置

进行配置前,确保已经搭建了k8s,harbor,docker,并需要有harbor的账户、密码、服务器信息。

①配置docker的daemon.json:

daemon.json路径一般在:/etc/docker/daemon.json

{

"insecure-registries": ["xxxxxxx:xx"],

"exec-opts": ["native.cgroupdriver=systemd"],

"bip":"172.12.0.1/24",

"registry-mirrors": ["http://docker-registry-mirror.kodekloud.com"],

"dns" : ["114.114.114.114","8.8.8.8"],

"log-driver": "json-file",

"log-opts": {

"max-size": "10m",

"max-file": "3"

}

}

其中insecure-registries是最重要的,即harbor的地址和端口信息

②登录docker镜像仓库

使用命令:

docker login -u userName -p password xxx.xxx.xxx.xx:xx

登录完成会显示config.json的路径,比如我这里显示的路径为: /home/halos/.docker/config.json。

查看文件显示:

③创建secret

使用命令:

kubectl create secret generic regcred --from-file=.dockerconfigjson=</home/halos/.docker/config.json> --type=kubernetes.io/dockerconfigjson

再使用base命令生成编码:

base64 /home/halos/.docker/config.json

创建harbor-secret.yaml文件:

apiVersion: v1

data:

``.dockerconfigjson: ewo3dfdsfQkJImF1dGgfgdfka0F5TURJeCIKCQl9Cgl9Cn0=

kind: Secret

metadata:

``name: harbor-secret

``namespace: default

type: kubernetes.io/dockerconfigjson

其中dockerconfigjson是base命令生成的编码,我这里是乱写的,具体的请使用自己机器生成的base编码。

最后使用命令部署:

kubectl apply -f harbor-secret.yaml

现在k8s就可以进行镜像的拉取了。

三、问题总结

①docker login无法登录

docker login无法登录的问题就是daemon.json没有配置,按照二中的①进行配置即可

②k8s无法拉取镜像

该问题就是写此文的原因,pod会显示状态:ImagePullBackOff,一般会在pod中报错如下:

相关推荐
脑子加油站19 小时前
kubernetes安装部署流程
k8s·安全架构
SilentSamsara20 小时前
Kubernetes 网络模型:CNI 插件与 Pod 间通信的底层实现
网络·云原生·容器·架构·kubernetes·k8s
久绊A2 天前
在K8s中构建Apache服务的弹性伸缩防线
k8s
梵得儿SHI3 天前
SpringCloud 生产级落地:Docker 容器化 + K8s 编排部署全攻略(含完整 yaml + 避坑指南)
docker·云原生·kubernetes·k8s·springcloud·微服务部署·java 后端
Minla5 天前
kubectl常用命令别名设置(linux|windows)
linux·运维·服务器·k8s
A-刘晨阳5 天前
k8s之镜像拉取策略
运维·docker·容器·kubernetes·运维开发·harbor
SilentSamsara5 天前
etcd 运维:数据一致性、备份恢复与性能调优
运维·服务器·数据库·kubernetes·kubectl·k8s·etcd
SilentSamsara6 天前
存储卷体系:EmptyDir/HostPath/PV/PVC/StorageClass 的选型决策树
服务器·微服务·云原生·容器·架构·kubernetes·k8s
SilentSamsara6 天前
Service 与 Ingress:从 ClusterIP 到云厂商 ALB 的完整流量路径
linux·运维·服务器·微服务·kubernetes·k8s·运维开发
SilentSamsara6 天前
ConfigMap 与 Secret:配置注入的四种姿势与安全边界
linux·运维·服务器·安全·微服务·kubernetes·k8s