Docker harbor的安装部署

在这里插入图片描述

Docker harbor的安装部署

安装说明

安装要求说明

​ 集群要求说明:在安装 Harbor 私有镜像仓库之前,需要先有一个K8S集群,本文中使用的集群的搭建过程请见 基于CentOS 7.8安装Kubernetes 1.25.5单Master节点集群 这篇博文。
硬件要求说明:安装 Harbor 私有镜像仓库的主机或虚拟机要求至少2核4G且内存硬盘不低于40GB,本文中使用的是 CentOS7.8 虚拟机来安装Harbor私有镜像仓库。
软件要求说明:安装 Harbor 私有镜像仓库之前需要先安装 docker 和 docker-compose。
特别说明:本文中安装的Harbor私有镜像仓库是使用HTTP协议来访问,而不是使用使用HTTPS协议来访问。

安装版本说明

软件版本说明:

软件 版本
docker 20.10.10
docker-compose 1.29.2
harbor 2.3.4
kubernates 1.21.5

集群效果说明

​ 集群效果说明:安装后的K8S集群由1个 master 节点、2个 worker 节点和1个harbor镜像仓库节点组成

安装步骤

安装Docker

官方文档:CentOS中安装Docker的官方说明文档

卸载旧版:先在要安装Harobr私有镜像仓库的虚拟机中执行以下命令卸载旧版的docker。

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装

#安装工具
sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
#查看版本
docker -v
# 设置开机启动docker
systemctl enable docker

# 启动docker
sudo systemctl start docker

安装Docker-Compose

安装Harbor

安装有两种方式,一种是off-line ,一种是on-line,即离线和在线安装,离线安装需要下载的安装包较大,在线安装下载的安装包很小

下载在线安装包
wget https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-online-installer-v2.3.4.tgz
#解压文件
tar -zxvf harbor-online-installer-v2.3.4.tgz
配置
cat harbor.yml.tmpl |grep -v "^#"|grep -v "  #"|grep -v "^$"
# 修改配置
vim harbor.yml

hostname: registry.k8s.com #本机ip或域名
http:
  port: 80
harbor_admin_password: Harbor12345# 修改harbor的登录密码
database:
  password: root123
data_volume: /webapps/harbor/data # 修改harbor私有镜像仓库目录
在线安装
sudo sh ./install.sh 
sudo docker-compose ps
用浏览器访问,方式为:http://192.168.11.107,用户名:admin/自行配置的密码
# windows中hosts文件的路径为 C:\Windows\System32\drivers\etc
192.168.11.107  registry.k8s.com
启动关闭
cd /webapps/harbor/harbor
#关闭
sudo docker-compose down
#启动
sudo docker-compose up

配置Docker客户端

特别说明:任何要访问Harbor私有镜像仓库的Docker客户端,无论是属于K8S集群中的节点,还是不属于K8S集群中的节点,都需要在Docker客户端中配置docker的仓库地址为Harbor私有镜像仓库的地址。由于本文要在K8S集群中使用Harbor私有镜像仓库,因此,需要在K8S集群中的所有master节点和worker节点中完成下述配置。
设置docker仓库:在K8S集群的所有节点的docker配置文件(该配置文件为 /etc/docker/daemon.json)中添加以下内容,添加后的效果如下图所示。

{
"insecure-registries": ["registry.k8s.com"]
}

重启docker:修改了docker配置文件之后,需要重启 docker服务才能应用修改后的配置,执行以下命令即可重启docker服务。

systemctl restart docker

配置域名映射:由于本文的K8S集群中没有DNS域名映射服务器,所以本文的K8S集群中的节点无法解析域名 registry.k8s.com,所以需要在K8S集群的所有节点的域名映射文件中添加以下域名映射(本文中的Harbor私有镜像仓库所在的虚拟机的ip地址为 192.168.11.107),该域名映射文件为 /etc/hosts,添加后的效果如下图所示。

192.168.11.107   registry.k8s.com

测试

创建Harbor项目

项目说明:在Harbor的管理页面中可以看到,Harbor的项目是分为私有和公共的两种类型,而公共类型的项目是无法被K8S集群使用,所以需要先在Harbor的管理页面中创建一个私有的项目,以被本文中的K8S集群使用。

创建私有项目:在Harbor管理页面中的 “项目” 页面中点击 “创建项目” 按钮,然后创建一个名称为 “k8s” 的私有镜像仓库,创建成功之后,进入名称为 “k8s” 的项目,可以看到创建的是一个空的镜像仓库,结果如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pRWhyHA5-1652415347835)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117152042444.png)]

上传镜像到Harbor

​ 特别说明:K8S集群要想使用Harbor私有镜像仓库中的镜像来部署服务,就需要Harbor私有镜像仓库中有镜像,我们可以通过使用Docker客户端来把本地的镜像推送到Harbor私有镜像仓库中,而Docker客户端必须要先登录到Harbor私有镜像仓库,才能把本地的镜像推送到Harobr私有镜像仓库中,以及从Harbor私有镜像仓库中拉取镜像到本地。

登录Harbor

​ 登录harbor:本文中以K8S集群中的k8s-worker-1节点作为Docker客户端来登录Harobr私有镜像仓库,实际上不要求Docker客户端所在节点必须是K8S集群中的节点。在Docker客户端所在的节点中执行以下命令即可登录到Harbor镜像仓库了,登录的用户名和密码为在 harbor.yml中配置的登录名(admin)和密码(Harbor12345),如果登录结果如下图所示则表示登录成功。

docker login registry.k8s.com
推送Docker镜像

​ 推送本地镜像:在Docker客户端中要把本地的名称为 busybox:latest 的镜像推送到Harbor私有镜像仓库的名称中 k8s 的项目中,需要先在Docker客户端本地给镜像打标签,然后再把打好标签的镜像推送到Harbor私有镜像仓库中,执行命令和结果如下所示:

#打标签
docker tag busybox:latest registry.k8s.com/k8s/busybox:latest
# 推送镜像
docker push registry.k8s.com/k8s/busybox:latest

查看Harbor仓库:镜像推送完成之后,即可在Harbor的管理页面中查看镜像仓库,结果如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OZ7JQ70L-1652415347839)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117155334407.png)]

拉取Docker镜像

拉取镜像:在Docker客户端中要把Harbor私有镜像仓库中名称为 k8s 项目中的名称为 busybox:latest 的镜像拉取到本地,需要执行以下命令,执行命令和结果如下所示:

# 拉取镜像

docker pull registry.k8s.com/k8s/busybox:latest

部署K8S服务

特别说明:在3.2节中介绍了如何使用Docker客户端登录Harbor私有镜像仓库,以及把本地的镜像推送到Harbor私有镜像仓库中,Harbor私有镜像仓库中有了镜像之后,K8S集群就可能使用Harbor私有镜像仓库中的镜像来部署K8S服务应用了。K8S集群在使用Harbor私有镜像仓库中的镜像来部署K8S服务时,需要在部署服务的yml文件中指定K8S集群到Harbor私有镜像仓库中拉取镜像的账号和密码等登录信息。下面分别介绍在yml中不添加登录信息导致镜像拉取失败的情况和添加登录信息才能镜像拉取成功的情况。

创建secret

kubectl create secret docker-registry k8s-auth \
--docker-server=registry.k8s.com \
--docker-username=admin \
--docker-password=Harbor12345

创建yml文件

apiVersion: v1
kind: Pod
metadata:
  name: test-harbor-pod-2
spec:
  containers:
    - name: busybox
      image: registry.k8s.com/k8s/busybox:latest
      command: [ "/bin/sh", "-c", "echo hello world" ]
  imagePullSecrets:
    - name: k8s-auth
  restartPolicy: Never

部署

kubectl apply -f test-harbor-2.yml
#查看部署
kubectl get pods
#查看日志
kubectl logs -f test-harbor-pod-2

猜你喜欢

转载自blog.csdn.net/qq_15604349/article/details/124749392
今日推荐