有没有一种方法可以在不通过容器注册中心的情况下将单个镜像加载到Kubernetes集群中?
例如,如果我在我的笔记本电脑上本地构建一个镜像,kubectl是否可以执行类似于docker save/load的操作,使该镜像在远程Kubernetes集群中可用?
发布于 2019-12-06 00:30:58
我不认为kubectl
可以创建一个节点来加载不是基于其自身构建的映像,但我认为您可以使用类似的方式使用docker Daemon CLI
(创建远程工作节点以从本地环境构建映像)来实现。
类似于:
$ docker -H tcp://0.0.0.0:2375 build <Dockerfile>
或者将docker主机设置为本地(笔记本电脑)环境中的环境。
$ export DOCKER_HOST="tcp://0.0.0.0:2375"
$ docker ps
请记住,您的远程工作节点需要能够访问所有依赖项才能构建映像(请参阅documentation
另外,我不确定您为什么要绕过远程存储库,但如果原因是因为您不想公开您的映像,我建议您长期设置一个自定义docker注册表。
发布于 2019-12-06 01:51:44
Kubernetes requires容器镜像要放在注册表中-公共或私有,作为pod/容器在集群本身运行,或者相对于集群远程运行。即使注册表位于其中一个集群节点上--通常用于本地minikube --注册表也是由节点的IP/主机名引用的。
为了让远程Kubernetes集群从您的本地笔记本电脑中提取映像,您必须在本地运行注册表(例如,通过docker run -d -p 5000:5000 --name registry registry:2
),并且您的笔记本电脑可以通过网络访问。
请注意,将需要使用来自Let's Encrypt或其他信誉良好的CA的可信证书和密钥的securing the local registry,或者如果运行不安全的注册表,则Kubernetes集群节点上的Docker必须配置为信任您的insecure registry。
https://stackoverflow.com/questions/59198376
复制相似问题