为kubernetes创建本地镜像仓库
通过k8s部署应用,需要从远程镜像仓库拉取镜像,默认的远程镜像为dock hub,访问这个仓库难免出现各种超时和龟速问题。那么有什么解决方案吗?k8s直接运行本地镜像我们可以将直接用k8s运行本地镜像将容器跑起来。但是前置条件得保证所有的node节点都有这个镜像,然后指定镜像拉取策略为imagePullPolicy: Never 即可。1)将镜像同步到所有node节点:假设当前镜像为spring-
通过k8s部署应用,需要从远程镜像仓库拉取镜像,默认的远程镜像为dock hub,访问这个仓库难免出现各种超时和龟速问题。那么有什么解决方案吗?
k8s直接运行本地镜像
我们可以将直接用k8s运行本地镜像将容器跑起来。但是前置条件得保证所有的node节点都有这个镜像,然后指定镜像拉取策略为imagePullPolicy: Never
即可。
1)将镜像同步到所有node节点:
假设当前镜像为spring-app:20200906-130657
,将镜像tar包,然后scp到各个node节点:
docker save spring-app:20200906-130657 -o spring-app-20200906-130657.tar
scp spring-app-20200906-130657.tar 192.168.6.131:/root/Desktop/docker-image/
scp spring-app-20200906-130657.tar 192.168.6.132:/root/Desktop/docker-image/
node1执行:
docker load < spring-app-20200906-130657.tar
node2执行:
docker load < spring-app-20200906-130657.tar
2)修改你的Deployment资源得yaml文件
containers:
- name: spring-app
image: spring-app:20200906-130657
imagePullPolicy: Never
最后执行apply命令即可,当然这个方案只是下下策,每次同步它不浪费时间吗。
创建本地仓库
以本地仓库代替默认的中央仓库,每次部署时,镜像发送到本地仓库,k8s调度到具体得节点时,再本地仓库拉取镜像,就能快得多。
1)选择master节点搭建本地仓库:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
2)所有的节点要更新daemon.json,指定insecure-registries
为本地仓库地址。这里我填的本地仓库地址为master节点的ip。
echo '{ "insecure-registries": ["192.168.6.128:5000"] }' > /etc/docker/daemon.json
3)打镜像并推送
- 如果是在本地仓库节点操作,则可以指定registry为
localhost:5000
或者192.168.6.128:5000
docker build -t localhost:5000/spring-app:20200906-130657 .
docker push localhost:5000/spring-app:20200906-130657
- 如果是在其它节点操作,则必须指定registry为
192.168.6.128:5000
docker build -t 192.168.6.128:5000/spring-app:20200906-130657 .
docker push 192.168.6.128:5000/spring-app:20200906-130657
查看私有镜像仓库的所有镜像及其tag:
curl -X GET http://192.168.6.128:5000/v2/_catalog
curl -X GET http://192.168.6.128:5000/v2/spring-app/tags/list
4)部署阶段,Deployment的yaml文件要指定为:
containers:
- name: spring-app
image: 192.168.6.128:5000/spring-app:20200906-130657
注意:每次打镜像时,镜像的仓库可以为localhost:5000
,也可以为192.168.6.128:5000
,但实际部署时yaml中的仓库必须要指定为192.168.6.128:5000
。因为k8s默认将应用部署到node节点,node节点是没有安装本地仓库的,所以要在yaml指定实际镜像仓库的ip。
至此本地仓库创建完毕。
更多推荐
所有评论(0)