Docker for Mac(Edge) - Kubernetes - 参考本地图像

use*_*058 14 kubernetes docker-for-mac

我正在使用docker for mac 18.05.0-ce-mac66(24545)(边缘)和Kubernetes支持,我正在努力创建引用本地构建映像的kubernetes部署.

产量docker images: kubectl apply -f deplyment.yaml

我的deployment.yaml: kubectl describe

当我运行docker imagespods时,会创建但是:

kubectl apply -f deplyment.yaml

描述其中一个豆荚给出: kubectl describe

有趣的是,如果我尝试运行在dockerhub上托管的一些图像,那么一切都很好,我也尝试使用skaffold,它也可以作为一个魅力......

我看到一些关于minikube的类似问题,其中解决方案是使用minikube docker deamon来构建图像,以便可以从kubernetes集群中引用它们.我想避免设置本地回购,但我怎样才能使它与Docker Edge Kubernetes一起使用?

ano*_*non 28

我能够通过设置来运行本地图像imagePullPolicyNever.

例如:

apiVersion: v1
kind: Pod
metadata:
  name: local-image-test
spec:
  containers:
  - name: local-image-container
    image: local-image:latest
    imagePullPolicy: Never
Run Code Online (Sandbox Code Playgroud)

(感谢https://github.com/kubernetes/kubernetes/issues/1293#issuecomment-357326426此解决方案)

  • B/C 如此处解释的 https://kubernetes.io/docs/concepts/containers/images/#updating-images 使用“latest”标签将始终强制拉动,就像设置 imagePullPolicy:always 而默认值为 IfNotPresent 一样。设置 imagePullPolicy:IfNotPresent 也应该有效。 (5认同)

Pra*_*ain 6

使用映像的标记版本,而不是最新版本,因为如果要将Docker映像运送到生产环境,则应该忽略最新标记。不要使用它。不要被它吸引。很容易看得出来,并认为您的部署脚本应该只是“最新”的,并且您的构建过程将确保该脚本是有效的。

  • 你是绝对正确的。我的想法是仅将“最新”标签用于Docker Edge上的Kubernetes进行本地开发。开发工作流程将是:1.修改应用程序代码。2.运行docker build(以便始终使用最新标签创建映像)3.运行kubectl apply -f deployment.yaml。这样,我每次在应用程序中更改某项内容时都不需要新标签,(更糟糕的是)在我的deploy.yaml中引用该“新标签”。这就是简化我的开发流程的全部想法 (3认同)