k8s之安装私有仓库Harbor以及从harbor推送/拉取镜像实战
Posted 爱上口袋的天空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s之安装私有仓库Harbor以及从harbor推送/拉取镜像实战相关的知识,希望对你有一定的参考价值。
1.简介
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。
2.和前面的k8s联合使用我们需要配置/etc/hosts,4台机器都配置
注意:这个在我们的客户端window机器上也配置一下harbor的映射。
3.在centos005服务器上安装依赖环境
命令:yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git iproute lrzsz bash-completion tree bridge-utils unzip bind-utils gcc
4.在centos005服务器上关闭防火墙
命令:systemctl stop firewalld && systemctl disable firewalld
5.在centos005服务器上安装docker
命令:yum install -y yum-utils device-mapper-persistent-data lvm2
紧接着配置一个稳定(stable)的仓库、仓库配置会保存到/etc/yum.repos.d/docker-ce.repo文件 中
命令:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
更新Yum安装的相关Docke软件包&安装Docker CE:
命令:yum update -y && yum install -y docker-ce
创建/etc/docker目录
命令:mkdir /etc/docker
更新daemon.json文件,在/etc/docker/目录下创建daemon.json文件,内容如下
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"registry-mirrors":["https://pee6w651.mirror.aliyuncs.com"],"insecure-registries":["https://hub.harbor.com"]}
创建,存储docker配置文件
命令:mkdir -p /etc/systemd/system/docker.service.d
重启docker重新加载daemon.json文件
命令:systemctl daemon-reload && systemctl restart docker && systemctl enable docker
6.配置上阿里云镜像以及信任我们的harbor镜像
在k8s的集群3台机器上更新daemon.json文件,在/etc/docker/目录下创建daemon.json文件内容如下
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"registry-mirrors":["https://pee6w651.mirror.aliyuncs.com"],"insecure-registries":["https://hub.harbor.com"]}
重启docker重新加载daemon.json文件
命令:systemctl daemon-reload && systemctl restart docker
7.安装docker-compose
- 打开github.com官网,在登录页面的右上角搜索compose找到docker/compose再找releases, (网址:https://github.com/docker/compose/releases) 如下:
- 首选将我们的docker-compose软件上传到centos005服务器上
- 将docker-compose移动到/usr/local/bin目录下,并且赋权
- 这样其实docker-compose就安装成功了,我们查看docker-compose版本
命令:docker-compose -version
8.安装harbor
- github官网搜索harbor,再点击goharbor/harbor,再点击“releases”,根据自己所需,下载相应 的版本,上传至服务器(网址如下:https://github.com/goharbor/harbor/releases 也可下载在线安 装的包,没试过,可自行尝试),如下:
- 将下载下来的harbor安装包上传到centos005服务器上并解压
命令:tar -zxvf harbor-offline-installer-v1.2.0.tgz- 编辑/opt/harbor目录下的harbor.cfg文件
命令:mkdir -p /data/cert/
注意:harbor默认用户为“admin”,密码为“Harbor12345"- 开始生成证书
1)首先进入/data/cert目录下
2)首先生成证书私钥
命令:openssl genrsa -des3 -out server.key 2048
在上面的过程中我们输入密码123456
3)生成证书的服务
命令:openssl req -new -key server.key -out server.csr
4)备份私钥
命令:cp server.key server.key.org
5)转换为证书
命令:openssl rsa -in server.key.org -out server.key
6)给证书签名
命令:openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
7)给所有的证书授权
命令:chmod 755 *
- 进入/opt/harbor目录下执行自带的安装脚本,安装完毕,浏览器即可访问
命令:./install.sh- 开始访问:https://hub.harbor.com/
用户名/密码:admin/Harbor12345- 如果需要重新启动harbor,可以使用下面命令
#重新加载配置文件
systemctl daemon-reload
#重启docker服务
systemctl restart docker
#停止所有容器
docker-compose stop
#启动所有容器
docker-compose start- 我们也可以在centos002这个master主机上通过命令登录harbor
命令:docker login https://hub.harbor.com/- 上面使用命令登录成功后我们可以通过命令向harbor推送一个镜像
1)首先查看我们要推送的镜像信息
2)推送命令参考页面
在项目中标记镜像:docker tag SOURCE_IMAGE[:TAG] hub.harbor.com/library/IMAGE[:TAG]
推送镜像到当前项目:docker push hub.harbor.com/library/IMAGE[:TAG]
3)我们开始标记我们要推送的镜像
命令:
docker tag ikubernetes/myapp:v1 hub.harbor.com/library/myapp:v1
docker tag ikubernetes/myapp:v2 hub.harbor.com/library/myapp:v2
docker tag ikubernetes/myapp:v3 hub.harbor.com/library/myapp:v3
4)下面我们开始推送我们标记的镜像
命令:
docker push hub.harbor.com/library/myapp:v1
docker push hub.harbor.com/library/myapp:v2
docker push hub.harbor.com/library/myapp:v3
上面我推送了4个上去。- 下面我们测试将本地的镜像删掉,重新从harbor上面拉取我们上传的镜像并且创建我们的svc
1)删除本地镜像
2)删除我们之前创建的svc
命令:kubectl delete svc my-nginx
3)删除我们创建的deployment
命令:kubectl delete deployment my-nginx
可以发现我们之前的所有pod都没有了
4)通过命令远程拉取harbor的镜像并创建pod
命令:kubectl run my-app --image=hub.harbor.com/library/myapp:v1 --port=80
5)我们为刚刚创建的服务扩容
命令:kubectl scale deployment/my-app --replicas=3
6)通过curl访问一下
命令:curl 10.244.1.18
7)创建service
命令:kubectl expose deployment/my-app --port=30000 --target-port=80
8)下面我们通过service访问服务测试负载均衡
9)开启物理端口对外网提供服务
命令:kubectl edit svc my-app
10)通过新建的物理端口访问
以上是关于k8s之安装私有仓库Harbor以及从harbor推送/拉取镜像实战的主要内容,如果未能解决你的问题,请参考以下文章
Kubeadmin 搭建K8S 环境 与 Harbor 私有仓库