zoukankan      html  css  js  c++  java
  • 基于kubernetes 部署 Harbor 仓库

    第一步:配置所有节点的Docker的daemon.json文件。

    vim /etc/docker/daemon.json
    
    "insecure-registries":["https://hub.atguigu.com"]

      重启docker

     systemctl restart docker

    需要再找一台机器,安装Harbor。(就是再找一台上面hub.atguigu.com的机器)

    如果本地有docker-compose文件,跳过第一步:

    1、linux里面,放入docker-compose文件

    mv docker-compose /usr/local/bin/  #挪动docker-compose文件
    chmod a+x /usr/local/bin/docker-compose

     2、往linux里面放入harbor-offline-installer-v1.2.0文件

     也可以从网上down

    一、Harbor 安装(尚硅谷资料)

    安装:Harbor 官方地址:官方地址:https://github.com/vmware/harbor/releases

    1、解压软件包

    下载解压

    tar xvf harbor-offline-installer-<version>.tgz https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-offline-installer-v1.2.0.tgz

     本地直接解压

    tar -zxvf harbor-offline-installer-v1.2.0.tgz
    mv harbor /usr/local/   #移动harbor目录到系统目录里

    2、配置harbor.cfga

    必选参数

      • hostname:目标的主机名或者完全限定域名:目标的主机名或者完全限定域名
      • ui_url_protocol::http或https。默认为。默认为http
      • db_password:用于db_auth的的MySQL数据库的根密码。更改此密码进行任何生产用途数据库的根密码。更改此密码进行任何生产用途
      • max_job_workers:(默认值为:(默认值为3)作业服务中的复制工作人员的最大数量。对于每个映像复制作业,)作业服务中的复制工作人员的最大数量。对于每个映像复制作业,工作人员将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工工作人员将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工作人员都会消耗一定数量的网络作人员都会消耗一定数量的网络/ CPU / IO资源,请根据主机的硬件资源,仔细选择该属性的值资源,请根据主机的硬件资源,仔细选择该属性的值
      • customize_crt:(:(on或或off。默认为。默认为on)当此属性打开时,)当此属性打开时,prepare脚本将为注册表的令牌的生成脚本将为注册表的令牌的生成/验证创验证创建私钥和根证书建私钥和根证书
      • ssl_cert::SSL证书的路径,仅当协议设置为证书的路径,仅当协议设置为https时才应用时才应用
      • ssl_cert_key:SSL密钥的路径,仅当协议设置为密钥的路径,仅当协议设置为https时才应用时才应用
      • secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径:用于在复制策略中加密或解密远程注册表的密码的密钥路径

    修改harbor.cfg文件的hostname和ui_url_protocol。(都是在harbor的机器上执行linux命令)

    cd harbor/
    vim harbor.cfg

     查看证书存放的位置:

     创建证书存放的目录

    mkdir -p /data/cert/   #创建证书存放目录
    cd !$

    3、创建 https 证书以及配置相关目录权限

    什么是CSR以及CSR的作用和生成

    复制代码
    cd /data/cert/
    openssl genrsa -des3 -out server.key 2048 #生成私钥,需要输入密码,两次密码要一致 openssl req -new -key server.key -out server.csr #创建证书签名请求文件,输入上面刚输入过的私钥密码 cp server.key server.key.org #备份私钥 openssl rsa -in server.key.org -out server.key #把密码退掉,重新生成私钥,linux里面有密码不支持,私钥里面就不包含密码了 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt #通过证书签名请求文件和签名私钥创建证书

    chmod -R 777 /data/cert #给证书赋予权限
    复制代码

     

     

    4、运行脚本进行安装

    cd -
    ./install.sh

     在master和node机器添加harbor机器的ip和hostname解析

    echo "192.168.0.82 hub.atguigu.com" >> /etc/hosts   #特别注意:用>>追加,不是>替换

     

    harbor机器上也同样增加ip和hostname的设置

     

     客户端windows也同样设置hosts文件,

    start notepad "C:WindowsSystem32driversetchosts"

     harbor机器上执行一下docker ps,看一下harbor是否启动了。如果本地linux之前已经运行了nginx,需要关闭之前的nginx的docker,在启动harbor的nginx就可以了。

    5、访问测试

    请注意,默认管理员用户名认管理员用户名/密码为密码为:admin / Harbor12345

    vim harbor.cfg  #密码存放在这个文件里

     密码:

     客户端windows浏览器里访问:https://hub.atguigu.com 

     默认有一个项目名称为:library

     

     每台master和node的linux机器上测试仓库是否可以正常访问

    docker login https://hub.atguigu.com
    输入用户名:admin
    密码:Harbor12345

     Login Succeeded

     

     Login Succeeded

     

     Login Succeeded

    6、上传镜像进行上传测试、上传镜像进行上传测试

    a、指定镜像仓库地址

     每个master和node上设置好了。没有设置好,在设置一次。

    vim /etc/docker/daemon.json
    {
     。。。。
       "insecure-registries":["https://hub.atguigu.com"]
    }

    b、下载测试镜像

    docker pull nginx:latest

    c、给镜像重新打标签,先复制harbor里面的镜像路径

     重新打标签

    docker tag nginx:latest hub.atguigu.com/library/nginx:latest

    d、登录Harbor仓库

    docker login hub.atguigu.com

    e、进行上传,复制推送镜像地址并修改

    docker push hub.atguigu.com/library/nginx:latest

     改标签+推送

     

    推送成功可以从浏览器里看到

     

    7、删除本地镜像和仓库里下载的镜像文件,命令为:

    docker rmi -f nginx:latest hub.atguigu.com/library/nginx:latest

    8、使用Harbor私有镜像仓库下载镜像文件,命令为:

     docker pull hub.atguigu.com/library/nginx:lastest

    9、删除本地镜像仓库里下载的私有镜像仓库文件

    docker rmi -f hub.atguigu.com/library/nginx:latest

    10、删除私有服务器镜像仓库的镜像文件

    在master上面运行pod进行测试,看看k8s和harbor仓库是否联通

    [root@k8s-master01 ~]# kubectl run nginx-deployment --image=hub.atguigu.com/library/nginx:latest --port=80 --replicas=1
    [root@k8s-master01 ~]# kubectl get deployment #等同于 kubectl get rs
    [root@k8s-master01 ~]# kubectl get pod -o wide #详细信息

     在node1上,看看nginx是否在docker里面运行成功,注意还有一个“/pause”的docker,只要运行一个pod就会有一个pause

    [root@k8s-node01 ~]# docker ps -a | grep nginx

     在master机器上访问nginx服务器

    [root@k8s-master01 ~]# curl 10.244.1.3  #为node1的ip地址

     删除pod,测试一下--replicas=1是否管用

    kubectl get pod
    kubectl delete pod nginx-deployment-77d6d48c9b-twhj5

     又重新运行了一个新的nginx,注意后面的值改变了了。

    扩容为三个nginx的pod

    [root@k8s-master01 ~]# kubectl get deployment
    [root@k8s-master01 ~]# kubectl scale --replicas=3 deployment/nginx-deployment

     查看pod的数量和所运行的node节点信息

    [root@k8s-master01 ~]# kubectl get pod -o wide

     node1

    [root@k8s-node01 ~]# docker ps -a | grep nginx

     node2

    [root@k8s-node02 ~]# docker ps -a | grep nginx

     现在master上面有三个node节点了,之前的一个80端口没法用了。怎么访问nginx呢?需要设置expose

    kubectl get svc
    kubectl get deployment
    kubectl expose deployment nginx-deployment --port=30080 --target-port=80   #设置外部访问端口为30080
    kubectl get svc
    curl 10.99.10.46:30080  #访问ip+port,注意ip地址已经不是上面刚刚用80端口访问的那个ip

    每次访问10.99.10.46:30080的时候都是轮训的方式获取页面信息

     验证轮训的ip

    [root@k8s-master01 ~]# ipvsadm -Ln | grep 10.99.10.46
    [root@k8s-master01 ~]# ipvsadm -Ln
    [root@k8s-master01 ~]# kubectl get pod -o wide

     以上都是在master机器访问的,如果是外部客户端访问怎么实现呢?

    [root@k8s-master01 ~]# kubectl get svc
    [root@k8s-master01 ~]# kubectl edit svc nginx-deployment  #编辑nginx-deployment

     

      将ClusterIP改成NodePort

    [root@k8s-master01 ~]# kubectl get svc

     看一下master机器端口映射,会出现一个新的端口

    [root@k8s-master01 ~]# netstat -anpt | grep :30141

     外部浏览器访问:http://192.168.4.86:30141/

     用另外两个node的ip也可以访问了:http://192.168.4.87:30141/http://192.168.4.88:30141/

    以上内容摘自https://www.cnblogs.com/qiyebao/p/13047739.html,此处仅做记录

  • 相关阅读:
    剑指offer的前16题-java版
    JAVA基本数据类型所占字节数是多少?(32位系统)
    二叉树的镜像
    阿里简历问题
    javaSE基础总结
    小心情
    九九乘法表-for循环和while循环
    Python PEP8 编码规范及中文版
    比大小和猜数字
    猜拳游戏
  • 原文地址:https://www.cnblogs.com/Nanaya/p/13086242.html
Copyright © 2011-2022 走看看