zoukankan      html  css  js  c++  java
  • K8S--docker--搭建私有仓库

    一、环境准备(可以不做)

      1、禁用swap分区 

    vim  /etc/fstab   
    # 将下面的内容注释掉
    #/dev/mapper/centos-swap swap  

      2、修改主机名及时间同步

    # 设置主机名
    hostnamectl set-hostname harbor
    
    # 时间同步
    yum -y install ntp
    systemctl enable ntpd
    systemctl start ntpd
    ntpdate -u cn.pool.ntp.org
    hwclock --systohc
    timedatectl set-timezone Asia/Shanghai

      3、关闭防火墙及升级内核

    # 关闭防火墙 Selinux
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
     
    # 升级内核
    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
    yum --enablerepo=elrepo-kernel install kernel-ml -y&&sed -i s/saved/0/g /etc/default/grub&&grub2-mkconfig -o /boot/grub2/grub.cfg && reboot

      

    二、安装Docker、Docker-compose

      1、安装Docker和Docker Compose

    yum -y install 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安装的相关Docker软件包&安装docker: 
    yum update -y && yum install docker-ce 
    #查看docker版本: 
    docker -v 
    # 安装docker-compose到 /usr/local/bin目录(在该目录下不需要配置环境变量) 
    curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 
    # 赋权 
    chmod 755 /usr/local/bin/docker-compose 
    # 查看docker-compose版本 
    docker-compose -v

      2、设置开机启动并替换docker配置

    # 设置开机启动并启动docker
    systemctl enable docker 
    systemctl start docker 

      3、追加私有仓库域名到各个服务器

    echo "192.168.124.22 hub.menglong.com" >> /etc/hosts
    # 验证是否追加成功
    cat /etc/host

      4、将集群的各个node节点的映射也配置到各个服务器(K8S集群+镜像仓库)的hosts中

    # 加载hostname:
    hostnamectl set-hostname hub.menglong.com
    # 验证:
    hostname

      这里在本机上(windows)也设置一下域名,否则浏览器访问时就只能使用IP访问。

      5、配置daemon.json

    vi /etc/docker/daemon.json
    {"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.menglong.com"]}

    三、安装Harbor

      1、下载Harbor

    wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.2.0.tgz
    # 移动到 /usr/local/src/
    mv harbor-offline-installer-v1.2.0.tgz /usr/local/src/
    tar xf harbor-offline-installer-v1.5.0.tgz

      2、修改harbor配置文件harbor.cfg

      修改以下内容

    # 可以是IP或着域名,但是不能使用127.0.0.1和localhost
    hostname = hub.menglong.com
    # 协议用https
    ui_url_protocol = https

      3、根据harbor.cfg中配置的证书存放目录(ssl_cert配置的目录):mkdir -p /data/cert/

      进入存放证书目录,开始创建证书(伪证书):

    #首先生成证书私钥(这里会让输入key,直接输入即可,我输入的是menglong)
    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
    #给证书签名
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

      4、给所有的证书授权:

    chmod 755 *

      5、给K8S集群的每个节点配置镜像仓库地址(vi /etc/docker/daemon.json),添加如下内容

    "insecure-registries": ["https://hub.menglong.com"]

        

       6、重启K8S集群docker

    systemctl daemon-reload && systemctl restart docker

    四、访问Harbor及Harbor配置

      直接访问IP即可,默认为80端口,如果要修改端口,可以修改docker-compose.yaml对应服务的映射

      管理员用户名为admin,密码为harbor.cfg配置文件中配置的密码

          

      1、创建用户:

             

       2、新建项目:

            

       3、镜像打包命令和上传

        在项目可以新增人员,可以查看镜像打包命令和上传命令

           

         打包和上传样例:

    # 在K8S中登录镜像仓库:
    docker login https://hub.menglong.com
    # 打镜像:
    docker tag lcl-galaxy-k8s:v2.0 hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0
    # 推送镜像:
    docker push hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0

        镜像已经上传,可以将本地打包的镜像(hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0)删除

    docker rmi -f c2d136b74fdd

       4、拉取镜像

         以刚才上传的镜像为例

    docker pull hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0

      说明:如果打开harbor不能访问,可以使用以下步骤排查:

    # 1、查看harbor是否都处于up状态
    docker-compose ps
    # 2、如果存在状态不是UP的,使用下面命令重启
    coker-compose sown
    docker-compose up
    # 3如果还不能访问,有可能是证书设置的问题,可以删除harbor及其文件重新生成证书并重新配置harbor
    rm -rf harbor
    rm -rf /data/*

    五、使用dockerfile创建镜像并上传

      1、新建一个springboot项目,然后打包,并将jar包上传至服务器

       创建dockerfile文件:vi dockerfile

    FROM java:8
    VOLUME /tmp
    ADD lcl-galaxy-k8s-0.0.1-SNAPSHOT.jar /lcl-galaxy-k8s.jar
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/lcl-galaxy-k8s.jar"]

      说明:ADD前的是上传的jar包,后面的是要生成的镜像名称,ENTRYPOINT中第一个参数是用来标识前端项目还是后端项目的

      2、生成镜像

    # 生成镜像 -t后面是镜像的名称
    docker build -t lcl-galaxy-k8s .
    # 查看镜像
    docker images

      3、上传私有仓库

    # 打镜像:
    docker tag lcl-galaxy-k8s:v2.0 hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0
    # 推送镜像:
    docker push hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0

       说明:实际生产上是在项目中添加dockerfile配置文件,然后使用jenkins进行部署。

    六、验证使用镜像仓库部署Pod

      从私服中拉取镜像运行一个pod:

    kubectl run lcl-galaxy-k8s --image=hub.menglong.com/lcl-galaxy/lcl-galaxy-k8s:1.0 --port=8080

      获取pod详细信息:

    kubectl get pod -o wide

          

    访问pod:curl 10.244.2.26:8080/k8s/test1

          

           

    ------------------------------------------------------------------
    -----------------------------------------------------------
    ---------------------------------------------
    朦胧的夜 留笔~~
  • 相关阅读:
    Java之final关键字
    Java之代码块
    Java之单例设计模式
    Java之数组
    python基础知识第九篇(函数)
    css--属性
    css-选择器
    css--引入css的3种方法
    html--多选
    python-列表--处理
  • 原文地址:https://www.cnblogs.com/liconglong/p/15061368.html
Copyright © 2011-2022 走看看