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定义,从本地仓库下载镜像

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

 

kubernetes使用本地仓库的更多相关文章

  1. Kubernetes 本地仓库

    1.Kubernetes本地私有仓库 Docker仓库主要用于存放Docker镜像,Docker仓库分为公共仓库和私有仓库,基于registry可以搭建本地私有仓库.使用私有仓库有如下优点: 1)节省 ...

  2. 使用Nexus搭建Maven本地仓库

    阅读目录 序 Nexus 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 在工作中可能存在有 ...

  3. maven上传jar到nexus本地仓库

    一.nexus新增本地仓库 Hosted Repository:本地仓库,部署组织内部的版本内容 Proxy Repository:代理仓库,代理远程的公共仓库,如maven中央仓库 Virtual ...

  4. maven向本地仓库导入jar包(处理官网没有的jar包)

    对于官网没有的jar包,maven向本地仓库导入jar包用如下命令 mvn install:install-file -DgroupId=包名 -DartifactId=项目名 -Dversion=版 ...

  5. Git 创建本地仓库

    前面已经搭好环境了,现在我们缺的是一个管理版本控制的仓库.这次的实验是在电脑本地创建本地仓库.指定路径 默认的位置是在你所安装Git的目录下.Git的仓库你可以建在你电脑的任何目录下(最好不要包含有中 ...

  6. 如何将本地的jar包上传到maven本地仓库中

    首先需要将本地的jar包做mvn install到本地仓库中 mvn install:install-file -Dfile=D:\skyeye-ruleInfo\lib\lucene-querypa ...

  7. maven 本地仓库和远程仓库

    在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件. Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依赖和插件的地方) 任何的 ...

  8. git将本地仓库推送到远程仓库

    如何将本地仓库推送到公司远程仓库? 1:前提是你本地安装好git.先把远程git仓库克隆到本地  git clone 远程仓库的地址(SSH) 2: git  branch //查看本地分支 3: g ...

  9. (三)Maven仓库介绍与本地仓库配置

    1.Maven本地仓库/远程仓库的基本介绍 示意图: 本地仓库是指存在于我们本机的仓库,在我们加入依赖时候,首先会跑到我们的本地仓库去找,如果找不到则会跑到远程仓库中去找.对于依赖的包大家可以从这个地 ...

随机推荐

  1. 我对xss以及sql的理解

    我对xss以及sql的理解 本文作者:情殇(查看作者所有博文) 作者邮箱:3135117931@qq.com 发布时间: Fri, 12 Jul 2019 19:16:00 +0800 Xss和sql ...

  2. iOS 毛玻璃效果的实现方法

    iOS开发中有的时候需要将图片设置模糊,来实现特定的效果获取更好的用户体验, iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果,可以通过高斯模糊和毛玻璃效 ...

  3. Vue指令之`v-model`和`双向数据绑定

     v-bind 只能实现数据的单向绑定,从 M 自动绑定到 V, 无法实现数据的双向绑定 <input type="text" v-bind:value="msg& ...

  4. 爬虫之 BeautifulSoup与Xpath

    知识预览 BeautifulSoup xpath BeautifulSoup 一 简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: '' ...

  5. Python_for语句

    1.for语句: myuser={ 'id':1, 'name':'张三', '语文':98, '数学':99, '英语':40 } for key in myuser: print('学生的'+ke ...

  6. python2.7 安装pycrypto库报错

    windows + python2.7 先安装VC包 https://download.microsoft.com/download/7/9/6/796EF2E4-801B-4FC4-AB28-B59 ...

  7. 修改httpd端口

    修改httpd端口 默认httpd端口为80,现在改成800 修改两个地方: 1.修改配置文件httpd.conf listen 把80改成需要的端口 2.修改配置文件httpd-vhosts.con ...

  8. GIS 基础知识简介

    前言 前一段时间,在公司进行了分析 GIS 基础信息的介绍.之所以会有这个介绍以及为什么是我?这个个中缘由说下. 公司不是一个GIS方面的公司,但是由于业务的需要,经常需要用到地图(要和地图打交道), ...

  9. web上常见的攻击方式及简单的防御方法

    SQL注入最常见的攻击方式,所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大 ...

  10. React 之 高阶组件的理解

    1.基本概念 高阶组件是参数为组件,返回值为新组件的函数. 2.举例说明 ① 装饰工厂模式 组件是 react 中的基本单元,组件中通常有一些逻辑(非渲染)需要复用处理.这里我们可以用高阶组件对组件内 ...