部署harbor仓库

harbor仓库是可以部署到本地的私有仓库,也就是你可以把镜像推到这个仓库,然后需要用的时候再下载下来,这样的好处是:1、下载速度快,用到的时候能马上下载下来2、不用担心镜像改动或者下架等。

WHY :因为我们的部署K8S涉及到很多镜像,制作相关包的时候如果网速问题会导致失败重来,而且我们在公司里也会建自己的仓库,所以必须按照harbor仓库

# 如架构图,我们安装在200机器:
cd /opt
200 opt]# mkdir src
200 opt]# cd src/
# 可以去这个地址下载,也可以直接用我用的软件包
https://github.com/goharbor/harbor/releases/tag/v1.8.3
7-200 src]# tar xf harbor-offline-installer-v1.8.3.tgz -C /opt/

tag :可以加入,解开备份文件内的文件

  • x :解压
  • f : 使用档案名字
  • -C :切换到指定的目录
  • 整条命令合起来就是,把tgz文件以tgz文件名为名字解压到opt目录下,并保存tgz文件原样

关于版本 :一般人都是喜欢用比较新的版本,我们当然也支持比较新的版本,但对于公司而已,稳定是最要紧的,v1.8.3是用的比较稳定的版本,而后续的各个组件也会有更加新的版本,你可以尝试新版本,但有些由于兼容问题不能用新的,后续那些不能用我会标记清楚。

# 200机器:
200 src]# cd /opt/
200 opt]# mv harbor/ harbor-v1.8.3
200 opt]# ln -s /opt/harbor-v1.8.3/ /opt/harbor
200 opt]# cd harbor
200 harbor]# ll
200 harbor]# vi harbor.yml
hostname: harbor.od.com  # 原reg.mydomain.com
http:
  port: 180  # 原80
data_volume: /data/harbor
location: /data/harbor/logs
200 harbor]# mkdir -p /data/harbor/logs
200 harbor]# yum install docker-compose -y
200 harbor]# rpm -qa docker-compose
# out: docker-compose-1.18.0-4.el7.noarch
200 harbor]# ./install.sh

提示 :harbor v2.3.3版本安装也需要将https相关的配置注释掉

如图#https:

感谢@https://github.com/xinzhuxiansheng

mv :为文件或目录改名、或将文件或目录移入其它位置。

  • 这里的命令是有斜杠的,所以是移动到某个目录下

ln :为某一个文件在另外一个位置建立一个同步的链接

  • 语法:ln [参数][源文件或目录][目标文件或目录]
  • -s:软连接,可以对整个目录进行链接`

harbor.yml解析:

  • port为什么改成180:因为后面我们要装nginx,nginx用的80,所以要把它们错开
  • data_volume:数据卷,即docker镜像放在哪里
  • location:日志文件
  • ./install.sh :启动shell脚本

# 200机器:
200 harbor]# docker-compose ps
200 harbor]# docker ps -a
200 harbor]# yum install nginx -y
###相关报错问题:
yum的时候报:/var/run/yum.pid 已被锁定,PID 为 1610 的另一个程序正在运行。
另外一个程序锁定了 yum;等待它退出……
网上统一的解决办法:直接在终端运行 rm -f /var/run/yum.pid 将该文件删除,然后再次运行yum。
###
200 harbor]# vi /etc/nginx/conf.d/harbor.od.com.conf
server {
    listen       80;
    server_name  harbor.od.com;
    client_max_body_size 1000m;
    location / {
        proxy_pass http://127.0.0.1:180;
    }
}
200 harbor]# nginx -t
200 harbor]# systemctl start nginx
200 harbor]# systemctl enable nginx

nginx -t :测试nginx .conf配置文件中是否存在语法错误

systemctl enable nginx :开机自动启动

# 在11机器解析域名:
~]# vi /var/named/od.com.zone
# 注意serial前滚一个序号
# 最下面添加域名
harbor             A    10.4.7.200
~]# systemctl restart named
~]# dig -t A harbor.od.com +short
# out:10.4.7.200

# 200机器上curl:
harbor]# curl harbor.od.com

注意:

getenforce得是关闭状态,而不是enforcing,否则会报502 暂时关闭setenforce 0 永久关闭,改配置文件 vi /etc/selinux/config SELINUX=disabled

访问harbo.od.com

账号:admin
密码:Harbor12345
新建一个public公开项目

# 200机器,尝试下是否能push成功到harbor仓库
harbor]# docker pull nginx:1.7.9
harbor]# docker images|grep 1.7.9
harbor]# docker tag 84581e99d807 harbor.od.com/public/nginx:v1.7.9
harbor]# docker login harbor.od.com
账号:admin
密码:Harbor12345
harbor]# docker push harbor.od.com/public/nginx:v1.7.9
# 报错:如果发现登录不上去了,过一阵子再登录即可,大约5分钟左右

下一节:一个高可用强一致性的服务发现存储仓库,关于服务发现,其本质就是知道了集群中是否有进程在监听udp和tcp端口(如上面部署的harbor就是监听180端口),并且通过名字就可以查找和连接。