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定义,从本地仓库下载镜像
注意增加方框的内容,并调整箭头所指的地址。
最新文章
- MPAndroidChart 3.0——LineChart(折线图)
- python基础3
- haligong2016
- Linux之find命令用于统计信息
- 支付宝APP支付之Java后台生成签名具体步骤
- [AX2012 R3]关于Alerts
- Vbox 安装 OS X 10.11
- [转]android Intent机制详解
- 苹果有益让老iPhone变慢以迫使消费者购买新一代的iPhone?
- 学习如何写PHP MVC框架(1) -- 路由
- 【转】通过 ulimit 改善系统性能
- AseoZdpAseo.init(this, AseoZdpAseo.INSERT_TYPE);
- 项目管理实践 -- 健身小管家(Fitness housekeeper)的管理(5)(终结)
- html5移动端meta自动适应标签
- linux 获取CPU个数
- Vue(二十六)父子组件通信
- Mysql数据库远程链接、权限修改、导入导出等基本操作
- Spring 系列目录
- 如何在 ASP.NET Core 测试中操纵时间?
- Linux命令(十)打包压缩、软件安装