k8s学习(2):Harbor配置私有镜像仓库

Harbor是一个用于存储和分发Docker镜像的企业级registry服务器

镜像在docker distribution(registry v2版本)基础上增加了安全、访问控制、管理的功能,以满足企业对于镜像仓库的需求

基本配置

参考k8s集群安装,一直执行到docker安装完毕即可

docker配置

1
2
3
4
# 所有节点操作(4个节点)
# 在/etc/docker/daemon.json中添加
"insecure-registries": ["https://hub.test.com"]
systemctl restart docker

安装docker-compose

1
2
curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

导入harbor包,并解压

http://harbor.orientsoft.cn/

harbor-offline-installer-v1.2.0.tgz

我自己安装的是1.5.0版本

配置harbor.cfg

1
2
3
4
必选参数
hostname:主机名 hub.test.com
ui_url_protocol:http或https(配置为https)
db_password:密码

创建ssl目录文件

1
2
3
4
5
6
7
8
9
10
11
12
13
mkdir -p /data/cert
cd /data/cert
# 生成私钥
openssl genrsa -des3 -out server.key 2048
# 创建证书请求csr
openssl req -new -key server.key -out server.csr
# 备份私钥
cp server.key server.key.org
# 转换成证书(私钥取消密码)
openssl rsa -in server.key.org -out server.key
# 证书请求签名
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
chmod -R 777 /data/cert

image-20200128171040738

运行脚本安装

1
2
cd harbor
./install

配置hosts文件

1
echo "192.168.128.xx hub.test.com" >> /etc/hosts

web访问测试

1
2
https://hub.test.com
用户名密码 admin/Harbor12345

其他节点登录测试

1
2
3
4
docker login https://hub.test.com
docker pull wangyanglinux/myapp:v1
docker tag wangyanglinux/myapp:v1 hub.test.com/library/myapp:v1
docker push xxx

创建一个pod

1
2
3
4
5
6
7
8
9
10
# 查看帮助
kubectl run --help
kubectl run nginx-deployment --image=hub.test.com/library/myapp:v1 --port=80 --replicas=1
kubectl get deployment
kubectl get rs
kubectl get pod [-o wide]
# 在线扩容
kubectl scale --replicas=3 deployment/nginx-deployment
kubectl get pod
kubectl delete pod xxx

创建svc

1
2
3
4
5
6
7
8
# 查看帮助
kubectl expose --help
kubectl expose deployment nginx-deployment --port=8000 --target-port=80
kubectl get svc
curl xxx:8000/hostname.html ## 可以看到正在轮询

ipvsadm -Ln

修改ClusterIP为NodePort

1
2
3
kubectl edit svc nginx-deployment 
将ClusterIP改为NodePort
kubectl get svc ## 查看