Kubernetes-5:搭建企业级私有仓库Harbor
搭建企业级私有仓库Harbor
安装需求
python版本 >= 2.7
Docker引擎版本 >= 1.10
docker-compose版本 >= 1.6.0
安装环境
一、Python安装
yum -y install python3
二、Docker上章节中已经安装,不再赘述
三、docker-compose安装
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
四、Harbor安装
## 因为docker 默认不允许http 方式推送镜像,所以要修改docker配置文件,添加以下行,每个k8s节点都要做
vim /etc/docker/daemon.json
...
{
"insecure-registries": ["https://hub.vfancloud.com"]
}
... ## 每个节点的hosts文件也必须添加此解析,包括你将要访问的windows主机
vim /etc/hosts
...
192.168.152.252 hub.vfancloud.com
... ## 下载harbor,curl和wget都太慢,直接迅雷下的,然后上传到服务器
curl -L https://github.com/goharbor/harbor/releases/download/v1.10.2/harbor-offline-installer-v1.10.2.tgz -o /usr/local/harbor-offline-installer-v1.10.2.tgz ## 解压,编辑配置文件
tar xvf harbor-offline-installer-v1.10.2.tgz
cd harbor/
vim harbor.yml
...
hostname: hub.vfancloud.com #域名
http: #协议及端口,若开启了https,则将http自动转发至https
port: https:
port:
# The path of cert and key files for nginx
certificate: /data/cert/server.crt #证书位置
private_key: /data/cert/server.key #私钥位置 database: #数据库密码,可以修改
password: root123 harbor_admin_password: Harbor12345 #harbor的admin密码
... —————————————— 生成局域网证书 —————————————————
[root@kubenode2 ~]# mkdir -p /data/cert
[root@kubenode2 ~]# cd /data/cert/
# 生成私钥
[root@kubenode2 cert]# openssl genrsa -des3 -out server.key
Generating RSA private key, bit long modulus ( primes)
.....................................+++++
...........................+++++
e is (0x010001)
Enter pass phrase for server.key: 填写密码
Verifying - Enter pass phrase for server.key: 确认密码 # 创建csr证书请求
[root@kubenode2 cert]# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name ( letter code) [XX]:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) [Default City]:BJ
Organization Name (eg, company) [Default Company Ltd]:vfancloud
Organizational Unit Name (eg, section) []:vfancloud
Common Name (eg, your name or your server's hostname) []:hub.vfancloud.com
Email Address []:vfan8991@.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []: # 去除私钥的连接密码,harbor是以Nginx当前端,若不去掉密码,则会请求https失败
[root@kubenode2 cert]# cp server.key server.key.org
[root@kubenode2 cert]# openssl rsa -in server.key.org -out server.key
Enter pass phrase for server.key.org: 输入私钥密码
writing RSA key 去除成功 # 证书签名
[root@kubenode2 cert]# openssl x509 -req -days -in server.csr -signkey server.key -out server.crt
Signature ok
subject=C = CN, ST = BJ, L = BJ, O = vfancloud, OU = vfancloud, CN = hub.vfancloud.com, emailAddress = vfan8991@.com
Getting Private key 签名成功 # 赋予执行权限
[root@kubenode2 cert]# chmod +x ./*
————————————————— 证书生成完毕 ————————————————— [root@kubenode2 harbor]# ./install.sh
----Harbor has been installed and started successfully.---- [root@kubenode2 harbor]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1dcd38feb29d goharbor/nginx-photon:v1.10.2 "nginx -g 'daemon of…" 34 seconds ago Up 32 seconds (healthy) 0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp nginx
063509e49573 goharbor/harbor-jobservice:v1.10.2 "/harbor/harbor_jobs…" 34 seconds ago Up 32 seconds (healthy) harbor-jobservice
1c37e61f9479 goharbor/harbor-core:v1.10.2 "/harbor/harbor_core" 35 seconds ago Up 28 seconds (health: starting) harbor-core
cf7e7bd46982 goharbor/registry-photon:v1.10.2 "/home/harbor/entryp…" 39 seconds ago Up 35 seconds (healthy) 5000/tcp registry
977f5ca9214a goharbor/redis-photon:v1.10.2 "redis-server /etc/r…" 39 seconds ago Up 35 seconds (healthy) 6379/tcp redis
86fdcb7b988b goharbor/harbor-registryctl:v1.10.2 "/home/harbor/start.…" 39 seconds ago Up 35 seconds (healthy) registryctl
8fc55f981c54 goharbor/harbor-db:v1.10.2 "/docker-entrypoint.…" 39 seconds ago Up 35 seconds (healthy) 5432/tcp harbor-db
10057d8629a0 goharbor/harbor-portal:v1.10.2 "nginx -g 'daemon of…" 39 seconds ago Up 35 seconds (healthy) 8080/tcp harbor-portal
8485731461d8 goharbor/harbor-log:v1.10.2 "/bin/sh -c /usr/loc…" 40 seconds ago Up 38 seconds (healthy) 127.0.0.1:1514->10514/tcp harbor-log
测试访问Harbor
1、浏览器输入:https://hub.vfancloud.com/
2、登录,账号为admin,密码为harbor.yml中的 harbor_admin_password 的值
3、可以自己创建一些用户,或者上传一些镜像等
新建Pod测试
## 首先docker login登录仓库
[root@Centos8 rbac]# docker login hub.vfancloud.com
Username: admin
Password:
## 启动一个deployment
[root@Centos8 ~]# kubectl run nginx-deployment --image=hub.vfancloud.com/test/myapp:v1 --port= --replicas=
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/nginx-deployment created ## 查看deployment
[root@Centos8 ~]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment / 8s ## 新建一个deployment会自动创建一个rs
[root@Centos8 ~]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deployment-5bc446d899 74s ## 再来查看pod
[root@Centos8 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deployment-5bc446d899-ndd57 / Running 81s 10.244.3.6 testcentos7 <none> <none> ## 测试访问
[root@Centos8 ~]# curl 10.244.3.6
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@Centos8 ~]# curl 10.244.3.6/hostname.html
nginx-deployment-5bc446d899-ndd57 ## 添加副本数
[root@Centos8 ~]# kubectl scale --replicas= deployment/nginx-deployment
deployment.extensions/nginx-deployment scaled
[root@Centos8 ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deployment-5bc446d899-jsgvf / Running 37s 10.244.3.7 testcentos7 <none> <none>
nginx-deployment-5bc446d899-lbsfp / ContainerCreating 7m32s <none> kubenode2 <none> <none>
nginx-deployment-5bc446d899-v2lrx / ContainerCreating 37s <none> kubenode2 <none> <none> ## 创建svc,实现自动的负载均衡
[root@Centos8 ~]# kubectl expose deployment nginx-deployment --port= --target-port=
service/nginx-deployment exposed [root@Centos8 ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> /TCP 4d17h
nginx-deployment ClusterIP 10.96.14.172 <none> /TCP 7s [root@Centos8 ~]# curl 10.96.14.172:/hostname.html
nginx-deployment-78d674b868-mqkqf
[root@Centos8 ~]# curl 10.96.14.172:/hostname.html
nginx-deployment-78d674b868-8jdhl
[root@Centos8 ~]# curl 10.96.14.172:/hostname.html
nginx-deployment-78d674b868-jcd42 ## 可以使用ipvsadm -Ln来查看当前负载的ip地址
[root@Centos8 ~]# ipvsadm -Ln
TCP 10.96.14.172: rr
-> 10.244.3.12: Masq
-> 10.244.3.13: Masq
-> 10.244.3.14: Masq
测试外网访问
##修改svc TYPE,实现可以外网访问
[root@Centos8 ~]# kubectl edit svc nginx-deployment
service/nginx-deployment edited [root@Centos8 ~]# grep type /tmp/kubectl-edit-1h3zf.yaml
type: NodePort #修改此行 ## 查看TYPE 已经修改为nodeport
[root@Centos8 ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> /TCP 3d17h
nginx-deployment NodePort 10.97.134.6 <none> :/TCP 16m ## 修改完毕后,进入外网进行测试访问,还是访问不到,后来得知为iptables规则问题
## 将 FORWARD 链放行即可
[root@Centos8 ~]# iptables -P FORWARD ACCEPT ## 测试访问
[root@Centos8 ~]# curl 192.168.152.53:
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
Kubernetes-5:搭建企业级私有仓库Harbor的更多相关文章
- 使用docker搭建“企业级镜像仓库”Harbor
一.前沿 docker的官方镜像仓库registry,功能比较单一,不太好用,特别是删除镜像操作,不够友好. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一 ...
- Docker学习笔记六:Docker搭建企业级私有仓库
前言 Docker不仅是一个强大的服务器部署工具,而且它还有一个官方的Docker Hub registry用于储存Docker镜像.上传镜像到Docker Hub是免费的,上传的镜像文件同时也对公共 ...
- Docker:企业级私有仓库harbor[十六]
一.安装配置 1.下载安装包 链接:https://pan.baidu.com/s/1Z9I7zYXSt-8ve3lFT2YCeg 提取码:iuqj 2.安装docker和docker-compose ...
- 企业级镜像仓库harbor搭建
企业级镜像仓库harbor搭建 一. Harbor概述 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服 ...
- 菜鸟系列docker——搭建私有仓库harbor(6)
docker 搭建私有仓库harbor 1. 准备条件 安装docker sudo yum update sudo yum install -y yum-utils device-mapper-per ...
- Kubernets二进制安装(5)之私有仓库harbor搭建
在IP地址为192.168.80.50,机器名为mfyxw50上搭建私有仓库harbor harbor下载地址: harbor下载连接地址:https://github.com/goharbor/ha ...
- Docker: 企业级镜像仓库Harbor的使用
上一节,演示了Harbor的安装部署 这次我们来讲解 Harbor的使用. 我们需要了解到: 1. 如何推镜像到镜像仓库 2. 如何从镜像仓库拉取镜像 3. 如何运行从私有仓库拉取的镜像 # 查看 h ...
- 一步步搭建docker私有仓库并从私有仓库中下载镜像
一步步搭建docker私有仓库 #下载镜像 docker pull registry#查看镜像 docker images #运行私有仓库,指定端口和数据卷 docker run -d -p : -v ...
- 搭建docker私有仓库
保存镜像的地方成为仓库(registry).目前有2种仓库:公共仓库和私有仓库. 最方便的是使用公共仓库上传和下载镜像,下载不需要注册,上传需要到公共仓库注册.公共仓库网站:https://hub.d ...
随机推荐
- Python基础入门知识点——if 语句简介
前言 if 语句是最简单的选择结构.如果满足条件就执行设定好的操作,不满足条件就执行其他其他操作. 判断的定义 如果 条件满足,才能做某件事情, 如果 条件不满足,就做另外一件事情,或者什么也不做 判 ...
- day3 基本语句
代码缩进为一个tab键 就是四个空格 断点 在代码首行前空白处,双击 然后点右上角臭虫 然后点下面箭头朝下的 1.if 语句 if 判断条件: ...
- SG 函数学习
\(Mex\) 运算 \(mex(S)\) 为不属于集合 \(S\) 的最小非负整数,即: \[mex(S)=\min \limits_{x \in \mathbb{N},x \not\in S} \ ...
- offer收割机也有方法论
秋招的战火就像这夏天的温度一样炙热,陆陆续续很多学弟学妹问我秋招的注意事项,作为温暖型大叔的我此刻必须出场了. 看仔细了,接下来龙叔就把这offer收割机的秘密都告诉你们. 如果你还没点关注的话,记得 ...
- Salesforce学习笔记之lwc
1.在Flow中使用Lightning Web Component(lwc)时,发现一个问题.给这个组件设置了一个输入参数,其值取自前一个Screen.第一次运行时,参数的值正确,但是如果这时退回前一 ...
- 区分多个web driver实例
固然可以用加载不同cookie的办法,让3个帐号共享一个web driver登陆,但总感觉切换麻烦,干脆用了3个web driver实例.问题来了,如何区分?不是说程序里如何区分,机器比人聪明,知道外 ...
- 动态数组java实现
数组是一种顺序存储的线性表,所有元素的内存地址是连续的. 动态数组相对于一般数组的优势是可以灵活地添加或删除元素.而一般数组则受限于固定的内存空间.只能有限的添加元素 动态数组(Dynamic Arr ...
- 【测试技术分享】Liunx常用操作命令集合
Linux命令 ls 查看文件目录内容 ls -lha l:详细信息 h:人性化显示 a:查看隐藏目录 ls -目录名 查看指定目录 d rwx rwx rwx d:文件夹 -:文件 rwx:拥有 ...
- client-go workqueue demo
链接地址:https://github.com/kubernetes/client-go [root@wangjq examples]# tree . ├── create-update-delete ...
- Istio的流量管理(实操三)
Istio的流量管理(实操三) 涵盖官方文档Traffic Management章节中的egress部分.其中有一小部分问题(已在下文标注)待官方解决. 目录 Istio的流量管理(实操三) 访问外部 ...