使用Kubernetes文件时,如何避免使用`ErrImagePull`,应用本地docker映像和使用`kubectl`?

时间:2019-07-14 01:19:29

标签: docker kubernetes

我有这个正在工作...

  {
  "data": {
    "allEmployees": {
      "nodes": [
         {
             firstName: 'Russell'
             lastName: 'Dodds'
             tags: ['teamplayer', 'punctual']
         },
         {
             firstName: 'Emma'
             lastName: 'Samsin'
             tags: ['teamplayer']
         }
      ]
    }
  }
}

我可以按预期访问端点。现在,我正在尝试使用.yml文件进行这样的部署...

# Set docker env
eval $(minikube docker-env)

# Build image
docker build -t jrg/hw .

# Run in minikube
kubectl run hello-world --image=jrg/hw:latest --image-pull-policy=Never --port=8080
kubectl expose deployment hello-world --type=NodePort --name=hello-service

但是当我运行apiVersion: v1 kind: Pod metadata: name: hello-world-dev labels: purpose: simple spec: containers: - name: hello-world-dev-container image: jrg/hw:latest env: - name: WORKING value: "Yup Working" 时,我得到...

kubectl apply -f k8s/ineject/dev.envvars.yml

那么为什么有人可以看到我的本地docker来获取图像,而1却有问题呢?

1 个答案:

答案 0 :(得分:0)

在有关Pre-pulling Images的文档中,我们可以阅读:

  

默认情况下,kubelet将尝试从指定的注册表中提取每个图像。但是,如果容器的imagePullPolicy属性设置为IfNotPresentNever,则将使用本地图像(分别为优先或排他)。

也请在Container Images文档中查看带有imagePullPolicy的其他选项。

  

imagePullPolicy尝试提取指定的图像时,图像的kubelet和标签会受到影响。

     
      
  • imagePullPolicy: IfNotPresent:仅在本地不存在图像时才将其拉出。

  •   
  • imagePullPolicy: Always:每次启动广告连播时都会拉动图像。

  •   
  • imagePullPolicy被省略,图像标签为:latest或被省略:Always被应用。

  •   
  • imagePullPolicy被省略并且存在图像标签,但没有:latestIfNotPresent被应用。

  •   
  • imagePullPolicy: Never:假定图像在本地存在。没有尝试拉图像。

  •