安装harbor服务器:
安装harbor
root@harbor-vm1:/usr/local/src# ls
harbor-offline-installer-v1.7.5.tgz
root@harbor-vm1:/usr/local/src# tar -xvf harbor-offline-installer-v1.7.5.tgz -C /usr/local/src/
root@harbor-vm1:/usr/local/src# cd harbor/
root@harbor-vm1:/usr/local/src/harbor# mkdir certs
root@harbor-vm1:/usr/local/src/harbor# vim harbor.cfg
ui_url_protocol = https
ssl_cert = /usr/local/src/harbor/cert/server.crt
ssl_cert_key = /usr/local/src/harbor/cert/server.key
harbor_admin_password = 123456
生成证书
root@harbor-vm1:~# mkdir /usr/local/src/harbor/cert
root@harbor-vm1:~# cd /usr/local/src/harbor/cert
root@harbor-vm1:/usr/local/src/harbor/cert# openssl genrsa -out server.key 2048 #生成私有key
root@harbor-vm1:/usr/local/src/harbor/cert# openssl req -x509 -new -nodes -key server.key -subj "/CN=
harbor1.dexter.com" -days 7120 -out server.crt #创建有效期时间的自签名证书
root@harbor-vm2:/usr/local/src/harbor/cert# openssl req -x509 -new -nodes -key server.key -subj "/CN=
harbor2.dexter.com" -days 7120 -out server.crt #创建有效期时间的自签名证书
注:如果无法在ubuntu系统上生成server.crt,可以尝试在centos上生成后在复制到ubuntu上。
安装docker
使用官方安装脚本自动安装 (仅适用于公网环境)
安装docker ce
ubuntu
apt-get install docker-compose -y
centos
yum install -y docker-ce
yum install -y python-pip
yum install -y docker-compose
#配置Harbor
# ./prepare
在当前目录下启动harbor实例
# ./install.sh
配置客户端使用harbor:
注:客户端主要指master和node
[root@k8s-harbor1 harbor]# scp cert/server.crt 172.16.99.121:/etc/docker/certs.d/
harbor1.dexter.com/
#测试登录
Username: admin
Password:
Login Succeeded
修改本机C:\Windows\System32\drivers\etc\hosts文件,添加如下两行
尝试使用浏览器打开harbor,账号:admin,密码:123456。
![]()
顺便新建一个基础镜像库
![]()
测试push镜像到harbor:
root@k8s-m1:~# docker pull alpine
![]()
测试pull镜像
前提是客户端有证书
root@k8s-n1:~# docker pull harbor1.dexter.com/baseimages/alpine:latest
latest: Pulling from baseimages/alpine
c9b1b535fdd9: Pull complete
Digest: sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45
Status: Downloaded newer image for harbor1.dexter.com/baseimages/alpine:latest
harbor1.dexter.com/baseimages/alpine:latest
设置开机启动仓库
echo 'cd /usr/local/src/harbor && ./install.sh' >>/etc/rc.local
chmod +x /etc/rc.local
注:如果只使用http,就简单的多了,不需要证书了。
扩展1:使用http配置harbor
修改harbor.cfg文件
hostname = 172.16.99.127
ui_url_protocol = http
harbor_admin_password = 123456
启动harbor后,可以使用IP访问
![]()
客户端需要修改服务配置文件/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 172.16.99.127
# systemctl daemon-reload
# systemctl restart docker
# ps -ef | grep dockerd
root 3385 1 0 13:15 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 172.16.99.127
# docker login 172.16.99.127
扩展2:使用单独的磁盘(/dev/vdb)存储镜像
好像在centos7.6上默认创建的就是ftype=1
# mkfs.xfs -n ftype=1 /dev/vdb
挂载磁盘
# mount /dev/vdb /var/lib/docker/
开机挂载
# blkid /dev/vdb
/dev/vdb: UUID="36d3a4e3-8ff7-4eb3-b75f-6a30c0eaf802" TYPE="xfs"
# echo 'UUID=36d3a4e3-8ff7-4eb3-b75f-6a30c0eaf802 /var/lib/docker/ xfs defaults 0 0' >>/etc/fstab
挂载完磁盘后再次安装docker
# yum install -y docker-ce
扩展3:harbor镜像仓库高可用
重新部署了2台harbor镜像仓库
172.16.99.152
172.16.99.153
VIP
172.16.99.148
harbor.cfg配置如下
# grep -v '^#\|^$' /usr/local/src/harbor/harbor.cfg
hostname = 172.16.99.152
ui_url_protocol = http
harbor_admin_password = 123456
# grep -v '^#\|^$' /usr/local/src/harbor/harbor.cfg
hostname = 172.16.99.153
ui_url_protocol = http
harbor_admin_password = 123456
172.16.99.153
![]()
客户端
# cat /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 172.16.99.152 --insecure-registry 172.16.99.153 --insecure-registry 172.16.99.148
# docker login 172.16.99.153
Username: admin
Password:
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 tag nginx:v2 172.16.99.153/baseimages/nginx:v2
# docker push 172.16.99.153/baseimages/nginx:v2
![]()
配置高可用
172.16.99.153
![]()
![]()
172.16.99.152
![]()
![]()
![]()
查看结果
172.16.99.152拿到了172.16.99.153上的镜像
![]()
keepalived+harpoxy(VIP)
# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb-master-172.16.99.126
}
vrrp_script check-haproxy {
script "killall -0 haproxy"
interval 5
weight -60
}
vrrp_instance VI-kube-master {
state MASTER
priority 120
unicast_src_ip 172.16.99.126
unicast_peer {
172.16.99.125
}
dont_track_primary
interface eth0
virtual_router_id 111
advert_int 3
track_script {
check-haproxy
}
virtual_ipaddress {
172.16.99.148
}
}
# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lb-backup-172.16.99.125
}
vrrp_script check-haproxy {
script "killall -0 haproxy"
interval 5
weight -60
}
vrrp_instance VI-kube-master {
state BACKUP
priority 63
unicast_src_ip 172.16.99.125
unicast_peer {
172.16.99.126
}
dont_track_primary
interface eth0
virtual_router_id 111
advert_int 3
track_script {
check-haproxy
}
virtual_ipaddress {
172.16.99.148
}
}
# cat /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
nbproc 1
defaults
log global
timeout connect 5000
timeout client 10m
timeout server 10m
listen web
bind 0.0.0.0:80
mode tcp
option tcplog
balance roundrobin
server 172.16.99.152 172.16.99.152:80 check inter 2000 fall 2 rise 2 weight 1
server 172.16.99.153 172.16.99.153:80 check inter 2000 fall 2 rise 2 weight 1
客户端直接从VIP地址访问和拉取镜像
![]()
root@host-172-16-99-151:~# docker login 172.16.99.148
Username: admin
Password:
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
root@host-172-16-99-151:~# docker pull 172.16.99.148/baseimages/nginx:v2
在客户端上传镜像并查看结果
# docker tag mysql:5.6 172.16.99.148/baseimages/mysql:5.6
# docker push 172.16.99.148/baseimages/mysql:5.6
我们在harbor的web段发现2台harbor机器都有了mysql:5.6这个镜像,这样我们就完成了docker镜像仓库的高可用
![]()
- 离线手动部署docker镜像仓库——harbor仓库(HTTPS)
实验环境: harbor服务器系统:CentOS Linux release 7.5.1804 (Core)harbor服务器IP:10.1.12.114harbor版本:v1.5.0docker版本 ...
- 本文介绍如何使用 Docker Swarm 来部署 Nebula Graph 集群,并部署客户端负载均衡和高可用
本文作者系:视野金服工程师 | 吴海胜 首发于 Nebula Graph 论坛:https://discuss.nebula-graph.com.cn/t/topic/1388 一.前言 本文介绍如何 ...
- docker 镜像仓库 Harbor 部署 以及 跨数据复制
docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理 ...
- [Docker]Harbor部署私有镜像仓库
Harbor部署私有镜像仓库 认识: Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器. 部署环境: CentOS7 Python2.7.5 Docker CE ...
- lvs+keepalived部署k8s v1.16.4高可用集群
一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...
- Centos7.6部署k8s v1.16.4高可用集群(主备模式)
一.部署环境 主机列表: 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 master01 7.6. ...
- 你必须知道的Docker镜像仓库的搭建
近期工作中发现用到的容器镜像越来越多(不多的时候没考虑过镜像仓库的问题),同一个容器镜像也存在多个版本,那么镜像仓库的搭建需求就涌现出来,本文就目前的几个常用镜像仓库的搭建进行介绍,我们可以根据需要选 ...
- 自动化kolla-ansible部署centos7.9+openstack-train-超融合高可用架构
自动化kolla-ansible部署centos7.9+openstack-train-超融合高可用架构 欢迎加QQ群:1026880196 进行交流学习 环境说明: 1. 满足一台电脑一个网卡的环境 ...
- Docker笔记2:Docker 镜像仓库
Docker 镜像的官方仓库位于国外服务器上,在国内下载时比较慢,但是可以使用国内镜像市场的加速器(比如阿里云加速器)以提高拉取速度. Docker 官方的镜像市场,可以和 Gitlab 或 GitH ...
随机推荐
- 精尽MyBatis源码分析 - SQL执行过程(三)之 ResultSetHandler
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- 【电子取证:抓包篇】Fiddler 抓包配置与数据分析(简)
Fiddler 抓包配置与分析(简) 简单介绍了Fiddler抓包常用到的基础知识,看完可以大概明白怎么分析抓包数据 ---[suy999] Fiddler 抓包工具,可以将网络传输发送与接受的数 ...
- 【jvm】MinorGC和FullGC
新生代GC(Minor GC)指发生在新生代的垃圾收集动作,因为java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快. 老年代GC(MajorGC/Full GC) ...
- mq中nio
MappedFile#appendMessagesInner
- schema设计陷阱
1.太多的列: mysql的存储引擎api工作时需要在服务器层和存储引擎层之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列.从行缓冲中将编码过的列转换成行数据结构的操作代价是非常高的. ...
- Cloud-Native! 实战 Helm 3 部署 Traefik 2
介绍 Traefik 是什么? Traefik, The Cloud Native Edge Router Traefik 是一种现代 HTTP 反向代理和负载均衡器,用于轻松部署微服务. 这篇文章对 ...
- Event Loop - 事件队列
Event Loop 定义: event - 事件 loop - 循环,既然叫事件循环,那么循环的点在哪? 循环的是一个又一个的任务队列,这些任务队列由宏任务和微任务构成 两条原则 一次处理一个任务 ...
- 洛谷 P3410 拍照(最大流 + 建图)
这道题问的是一群人要和另一群人合影,每个客人都有必须在场的人全部在场才能在场,每个客人给的有收入,但是邀请也需要支出,问最大收入? 我觉得可以总结为一类问题,就是有先决条件的网络流问题.看到费用和支出 ...
- DDD(领域驱动设计)--战术设计
前言 战术设计 战略设计为我们提供一种高层视野来审视我们的软件系统,主要包括领域/子域.通用语言.限界上下文和架构风格等概念, 而战术设计则将战略设计进行具体化和细节化,它主要关注的是技术层面的实施, ...
- JAVA课堂作业(2019.10.21)
1. 代码: package class20191021; class Grandparent { public Grandparent() { System.out.println("Gr ...