zoukankan      html  css  js  c++  java
  • kubernetes使用本地仓库

    k8s与docker的安装

    我参考的是

    https://kuboard.cn/install/install-k8s.html#%E6%96%87%E6%A1%A3%E7%89%B9%E7%82%B9

    我搭建的服务器有三台,一台master、两台worker。master会直接使用docker相关命令创建镜像、并直接在docker里运行和测试容器。以下我将在master上建立本地仓库。

    自建本地仓库

    我参考的是

    https://www.cnblogs.com/justmine/p/8666907.html
    https://www.cnblogs.com/justmine/p/8678758.html

    kubernetes我装的是1.16.3的版本,仓库源必须来自使用https的服务器。所以自建的本地仓库也必须要有SSL证书。有两个办法解决证书问题

    使用通用域名的证书

    如果在运营中的域名购买过通用域名证书,那就好办了。如购买的证书是*.mydomain.com,那么我们只需要想办法将一个二级域名解释为本地的IP地址,举例,使用localdocker.mydomain.com指向本地IP192.168.100.100。为此需要修改master机与work机的/etc/hosts文件,增加以下内容

    192.168.100.100  localdocker.mydomain.com
    

      

    运行本地仓库。注意其中的/opt/data/registry是master放本地仓库的实质文件的目录,请自行创建目录。

    docker run -d  --restart=always  --name registry  
    -v /opt/data/registry:/var/lib/registry 
    -e REGISTRY_HTTP_ADDR=0.0.0.0:443 
    -p 443:443 registry:2
    

      

    你可能想,这是不是跑一个镜像吗?没错,本地仓库在容器里跑。

    使用自制证书

    如果没有买过证书,或没有通用域名证书。可以自己做一个。我的docker版本是18.9,过程简述如下

    创建证书,在master上录入以下命令,我将使用安装k8s时脚本创建的master的本地名称“apiService.demo”来创建,在安装k8s时各大服务器的/etc/hosts已加入该条目指向master,master也是我的本地仓库服务器。

    openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt 
    

      命令会提示你需要录入几个要素,看到hostname时,需要录入“apiService.demo”

    将当前目录的拷贝到 /opt/certs目录下,以下命令会用到

    运行本地仓库

    docker run -d 
      --restart=always 
      --name apiService.demo 
      -v /opt/data/registry:/var/lib/registry 
      -v /opt/certs:/certs 
      -e REGISTRY_HTTP_ADDR=0.0.0.0:443 
      -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt 
      -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key 
      -p 443:443 registry:2
    

      

    因为是自制的证书,所在需要自己手工分发到各大本地的服务器。因为只在docker里使用,master 下执行以下命令

    mkdir -p /etc/docker/certs.d/apiService.demo
    cp /opt/certs/domain.crt /etc/docker/certs.d/apiService.demo/ca.crt
    

      

    其他服务器就想办法拷贝该master服务器上生成的domain.crt为各服务器自己的/etc/docker/certs.d/apiService.demo/ca.crt。

    以此docker准备好了,如何上传到本地仓库?需要两个命令

    docker tag kevin2y/site-d-p apiserver.demo/site-d-p
    docker push apiserver.demo/site-d-p
    

      

    Kubernetes的准备工作

    1.创建命名空间

    kubectl create namespace localdocker-apps
    

      

    2.创建Secret

    kubectl -n localdocker-apps create secret docker-registry registry-key 
    --docker-server=apiService.demo 
    --docker-username=<your-docker-name> 
    --docker-password=<your-docker=password> 
    --docker-email=<you-docker-email>
    

      注意上面三个your-docker开头的内容需要使用自己在docker上注册的相关信息录入

    修改yaml定义,从本地仓库下载镜像

     注意增加方框的内容,并调整箭头所指的地址。

     

  • 相关阅读:
    SuiteCRM-7.7.6 (Ubuntu 16.04)
    Mautic-2.2.0 (Ubuntu 16.04)
    Limesurvey-2.55 (Ubuntu 16.04)
    视频会议20方100点 v2.66.1.18
    cuda和tensorflow对应关系
    pointnet++运行
    ubuntu使用anaconda安装tensorflow
    ubuntu安装搜狗输入法
    add the icon of the pycharm
    ubuntu中文界面改成英文界面
  • 原文地址:https://www.cnblogs.com/kevin-Y/p/12036249.html
Copyright © 2011-2022 走看看