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

  1. 打开github.com官网,在登录页面的右上角搜索compose找到docker/compose再找releases, (网址:https://github.com/docker/compose/releases) 如下:
  2. 首选将我们的docker-compose软件上传到centos005服务器上
  3. 将docker-compose移动到/usr/local/bin目录下,并且赋权
  4. 这样其实docker-compose就安装成功了,我们查看docker-compose版本
    命令:docker-compose -version

8.安装harbor

  1. github官网搜索harbor,再点击goharbor/harbor,再点击“releases”,根据自己所需,下载相应 的版本,上传至服务器(网址如下:https://github.com/goharbor/harbor/releases 也可下载在线安 装的包,没试过,可自行尝试),如下:
  2. 将下载下来的harbor安装包上传到centos005服务器上并解压

    命令:tar -zxvf harbor-offline-installer-v1.2.0.tgz
  3. 编辑/opt/harbor目录下的harbor.cfg文件

    命令:mkdir -p /data/cert/
    注意:harbor默认用户为“admin”,密码为“Harbor12345"
  4. 开始生成证书
    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 *
         
  5. 进入/opt/harbor目录下执行自带的安装脚本,安装完毕,浏览器即可访问

    命令:./install.sh
  6. 开始访问:https://hub.harbor.com/

    用户名/密码:admin/Harbor12345
  7. 如果需要重新启动harbor,可以使用下面命令
    #重新加载配置文件
    systemctl daemon-reload
    #重启docker服务
    systemctl restart docker
    #停止所有容器
    docker-compose stop
    #启动所有容器
    docker-compose start
  8. 我们也可以在centos002这个master主机上通过命令登录harbor
    命令:docker login https://hub.harbor.com/
  9. 上面使用命令登录成功后我们可以通过命令向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个上去。
  10. 下面我们测试将本地的镜像删掉,重新从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推送/拉取镜像实战的主要内容,如果未能解决你的问题,请参考以下文章

K8S部署Harbor仓库实战

Docker搭建私有仓库之Harbor

Kubeadmin 搭建K8S 环境 与 Harbor 私有仓库

Kubeadmin 搭建K8S 环境 与 Harbor 私有仓库

Harbor单点仓库部署

docker harbor私有仓库