我正在使用支持 Kubernetes 的 Mac Docker,并且我正在努力创建一个引用本地构建的映像的 Kubernetes 部署。
输出docker镜像
:
REPOSITORY TAG IMAGE
test latest 2c3bdb36a5ed
这是我的部署。yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: helloworld-deployment
spec:
selector:
matchLabels:
app: helloworld
replicas: 1
template:
metadata:
labels:
app: helloworld
spec:
containers:
- name: aaa
image: test:latest
ports:
- containerPort: 8080
当我运行<code>时,kubectl应用-f解聚剂。yamlpod已创建,但:
helloworld-deployment-764b8b85d8-2c4kl 0/1 ImagePullBackOff 0
helloworld-deployment-764b8b85d8-rzq7l 0/1 ImagePullBackOff 0
库贝特描述
其中一个豆荚给出了:
Normal Scheduled 20s default-scheduler Successfully assigned helloworld-deployment-79f66d97c6-7tj2x to docker-for-desktop
Normal SuccessfulMountVolume 19s kubelet, docker-for-desktop MountVolume.SetUp succeeded for volume "default-token-72f44"
Normal BackOff 16s kubelet, docker-for-desktop Back-off pulling image "test:latest"
Warning Failed 16s kubelet, docker-for-desktop Error: ImagePullBackOff
Normal Pulling 4s (x2 over 19s) kubelet, docker-for-desktop pulling image "test:latest"
Warning Failed 2s (x2 over 17s) kubelet, docker-for-desktop Failed to pull image "test:latest": rpc error: code = Unknown desc = Error response from daemon: pull access denied for test, repository does not exist or may require 'docker login'
Warning Failed 2s (x2 over 17s) kubelet, docker-for-desktop Error: ErrImagePull
有趣的是,如果我尝试运行一些托管在dockerhub上的图像,那么一切都很好,我还尝试使用skaffold,它也像一个魅力一样工作……
我看到了一些关于minikube的类似问题,解决方案是使用minikube docker守护进程来构建图像,以便它们可以从库伯内特斯集群中引用。
我想避免设置本地回购,那么我如何让它与Docker的Kubernetes一起工作?
除了techtrainer的评论和回答,我想提供一些如何做到这一点的例子。
一般规则。您必须使用图像的标记版本,而不是< code >最新。有了Docker标签,你能得到的越具体越好。具体一点,避免使用错误的图像。如果你不想让你的同事或其他Docker用户下载图片,并且不知道它们有多新,请考虑这一点。变得具体以避免这样的问题。
docker tag IMAGE ID image/TAG:version.d.m.y
为了更好地管理您的图像,您应该有一些明智的命名约定。我更喜欢使用图像的创建阶段、版本和日期。例如:
docker tag 113a43faa138 ubuntu/prod:v1.8.6.2018
它表示制作阶段,版本1,创建于2018年6月8日。
仅此而已。您的版本可用,并且命名对您和此图像的其他用户来说更容易理解。
使用标记版本的映像而不是最新版本的映像,因为如果您要将Docker映像传送到正式生产环境,您应该忽略最新的标记。不要使用它。不要被它所诱惑。很容易看到它,并认为您的部署脚本应该只拉取“最新”,您的构建过程将确保这是有效的。
我可以通过将< code > imagepulpolicy 设置为< code>Never来运行本地映像。
例如:
apiVersion: v1
kind: Pod
metadata:
name: local-image-test
spec:
containers:
- name: local-image-container
image: local-image:latest
imagePullPolicy: Never
(本解决方案归功于https://github . com/kubernetes/kubernetes/issues/1293 # issue comment-357326426)
我在Linode上有一个K8s集群和另一个用于操作的VM。 我已经安装了Docker 注意:我还没有在这个虚拟机上安装迷你库贝。 我可以构建我的映像,但无法将其从本地注册表拉到k8s pod。 以下是我已经做过的事情 创建docker镜像并将其推送到本地注册表 从图像中运行docker容器,但不会在K8s中被拉入 创建“regcred”secret并在部署yaml中使用它 创建映像并使用VM的IP
我尝试使用minikube从本地docker镜像和docker hub部署kubernetes。但两者都不起作用。 方法1:使用保存和加载tar文件,创建了图像,它可用于kubectl。 执行以下命令以创建部署: 从kubectl描述pod命令, 方法2:我将映像推送到我的docker hub存储库(https://hub.docker.com/r/get2arun/elk/tags),然后在终端
我有以下文件夹结构: 这里,我的是: 当我运行时,我希望有两个输出图像,一个用于,一个用于。 我使用(仅与版本2的语法兼容)。
我有慢的互联网连接,但我已经有我需要的docker映像。: 或使用通用的: 但结果是错误的: 如何优化testcontainers以使用本地映像?
问题内容: 我在机器上安装了docker,并且在其中安装了docker的minikube上,所以可能我有两个在不同VM上运行的docker实例 我建立一个图像并对其进行标记,然后将其推入本地注册表,并成功将其推入,我也可以从注册表中将其拉出,也可以在运行curl以获取标签列表时得到结果,这就是我所做的 以上所有步骤均正常进行,没有任何问题。 我的问题是当我运行minikube并尝试在其中的本地注册
所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。