需要在客户的内网服务器环境中(没有因特网连接)交付一套部署在 k8s 上的软件。 现在计划方案是用硬盘把所有的程序镜像打包,在他们的内网启动一个私有 registry 服务,随后开始正常的部署。
网上看到用的比较多的 registry 方案:
Harbor 的功能比较多。Docker registry 安装更简单一些。
这个 registry 只需要只读功能(部署的时候拉取镜像使用,不需要镜像写入,也没有租户管理之类的需求),程序部署完之后基本就没用了。
这样的情况是不是选项 1 更好一些。或者大家有其他更好的建议吗?
1
XiLingHost 2022-04-20 02:42:17 +08:00
直接在虚拟机里部署好整套 k8s 环境然后打包成 ova/ovf 到客户的环境里部署
|
2
dayeye2006199 OP @XiLingHost 因为需要多机集群 + GPU 直通,所以不知道虚拟机的方案是否可以方便的支持
|
3
oldboy627 2022-04-20 07:24:43 +08:00
我们是 registry ,挺方便的
|
4
yijihu 2022-04-20 08:37:34 +08:00
Harbor 不错,我们在用
|
5
feelinglucky 2022-04-20 09:00:05 +08:00
无脑选 Harbor 就是了,不会错
|
6
eudore 2022-04-20 09:02:08 +08:00
交付场景
1 、所有机器上 docker load 一下就好。 2 、弄个 registry 不推荐 harbor 太麻烦。 |
7
Suaxi 2022-04-20 09:11:44 +08:00
镜像不是太多的情况下手动 load 一下就好,如果镜像特别多的话就 harbor
|
8
idblife 2022-04-20 09:20:46 +08:00
harbor 吧
貌似 gitlab 也有,还没测试过 |
9
Judoon 2022-04-20 09:27:53 +08:00 2
既然是集群,应该是多机吧,如果镜像仓库部署完了就关掉不用了,怎么保证以下几个场景
1 、应用主动或被动漂移到另一个节点上,没有镜像 2 、(如果 1 的解决方案是在初始状态每个机器都同步一下镜像的话) k8s 在磁盘空间快满了会做 image GC ,未在使用的镜像会被清理。此时再遇到 1 场景,怎么办 3 、上层应用需要升级的时候,是每个机器上导入一遍镜像? |
10
salmon5 2022-04-20 09:34:26 +08:00
harbor ,为什么不用 harbor ?需要一点机器成本?
|
11
Aliencn 2022-04-20 10:42:39 +08:00
想想这两个方案那个更方便配合脚本做自动化,需求简单我推荐 registry
|
12
XSG 2022-04-20 10:49:09 +08:00
docker load 不推荐,实际长时间使用场景,磁盘空间快满时会触发 pod 驱逐,也会删除本地镜像,到时候 pod 就没法启动了
|
13
cloverstd 2022-04-20 11:01:19 +08:00
看你的需求,官方 registry 自部署就可以了,harbor 还要部署数据库
|
14
anonymousar 2022-04-20 11:47:05 +08:00
harbor
|
15
kaneg 2022-04-20 12:42:15 +08:00 via iPhone
这么简单的需求,docker registry 足矣,它本身也有官方提供的 docker image 启动
|
16
anubu 2022-04-20 13:00:17 +08:00
如果真是临时部署,一次性使用,registry 就够了,harbor 复杂了些。但应该还有后续的重新调度、应用升级问题吧,个人认为隔离环境运行 k8s ,私有 registry 是必须的,长期使用还是推荐 harbor 。
|
17
codefever 2022-04-20 13:01:47 +08:00
registry 应该可以满足你的需求啊,官方的东西靠谱一点
|
18
chronos 2022-04-20 13:09:37 +08:00
直接用 docker registry 就行,harbor 复杂一些,在你的这个场景下没什么必要。
|
19
MoonWalker 2022-04-20 13:20:44 +08:00
nexus 貌似也支持 docker 仓库
|
20
pydiff 2022-04-20 16:34:07 +08:00
我有个疑问,你们这是要帮人家部署一套 k8s ,然后再部署自己的产品吗?那后面的 k8s 维护也是你们搞吗?是不是表达有误,就是客户已经有了 k8s ,你只是在上面部署产品。如果是这种方式的,正常来讲,客户那边已经有了自己的镜像仓库的,你把自己的镜像保存下来再导入进去即可,然后在 deployment 中配置好 pullsecret 即可
|
21
dayeye2006199 OP @pydiff k8s 也是部署的一部分。现在考虑交付一个轻量级的版本,例如 k3s ,同时使用集群管理工具例如 rancher 来降低运维负担。
|
22
pepesii 2022-04-21 11:19:00 +08:00
如果就用一次,我在想是不是也可以不用部署 registry 和 harbor ;
1. 在其中一个机器上跑个 docker-registry-proxy ,把需要的镜像倒入到这个容器的缓存目录下; 2. 写个脚本,将其他机器的 docker proxy 配置成上面那个 proxy 地址,同时也给其他机器配置上自己的根证书; |