在从属机器上运行kubernetes部署时出现ImagePullBackOff错误,其中docker docker镜像存在于主机

时间:2018-05-25 07:49:31

标签: ubuntu docker kubernetes

我在裸机上有2台机器的kubernetes集群,其中主机包含我想仅在从节点上部署的docker镜像,但我不想使用云存储库进行图像存储,我正在构建docker来自jenkins作业的图像在主机上运行,​​如果我使用来自dockerhub的docker镜像,部署工作正常,但是当图像在主机中时,它在部署到从属节点时出现错误,

NAME                            READY     STATUS             RESTARTS  AGE

dash-deploy-5bd7cb4484-wvwcr    0/1       ImagePullBackOff   0         22h

hello-deploy-5756df7ff4-mwzcw   1/1       Running            0         21h

hello-deploy使用来自docker hub的docker镜像,而dash-deploy使用主节点上存在的docker镜像,两个部署都在slave节点上完成。 我知道有很多其他方法可以做到这一点,但任何有关这方面的帮助将不胜感激。 我使用的是ubuntu 16.04

  

kubeadm版本:& version.Info {Major:“1”,Minor:“10”,   GitVersion: “v1.10.2的”,   GitCommit: “81753b10df112992bf51bbc2c2f85208aad78335”   GitTreeState:“clean”,BuildDate:“2018-04-27T09:10:24Z”,   GoVersion:“go1.9.3”,编译器:“gc”,平台:“linux / amd64”}

     

kubectl version客户端版本:version.Info {Major:“1”,Minor:“9”,   GitVersion: “v1.9.3”   GitCommit: “d2835416544f298c919e2ead3be3d0864b52323b”   GitTreeState:“clean”,BuildDate:“2018-02-07T12:22:21Z”,   GoVersion:“go1.9.2”,编译器:“gc”,平台:“linux / amd64”}

     

服务器版本:version.Info {Major:“1”,Minor:“10”,   GitVersion: “v1.10.3”   GitCommit: “2bba0127d85d5a46ab4b778548be28623b32d0b0”   GitTreeState:“clean”,BuildDate:“2018-05-21T09:05:37Z”,   GoVersion:“go1.9.3”,编译器:“gc”,平台:“linux / amd64”}

我的yaml文件看起来像

---
apiVersion: extensions/v1beta1     
kind: Deployment    
metadata:    
  name: dash-deploy    
spec:    
  replicas: 1    
  minReadySeconds: 1    
  strategy:    
    type: RollingUpdate    
    rollingUpdate:    
      maxUnavailable: 1    
      maxSurge: 1    
  template:    
    metadata:    
      labels:    
        app: dashboard    
    spec:    
      containers:    
      - name: dash-pod    
        image: 32:32    
        imagePullPolicy: IfNotPresent    
        ports:    
        - containerPort: 8080    
---    
apiVersion: v1    
kind: Service    
metadata:    
  name: dash-svc    
  labels:    
    app: dashboard    
spec:    
  type: NodePort    
  ports:    
  - port: 8080    
    nodePort: 30002    
    protocol: TCP    
  selector:    
    app: dashboard    
---

3 个答案:

答案 0 :(得分:1)

奴隶需要从某个地方下载图像。图像不会自动分发给从属设备。

如果您不想使用dockerhub,则需要在群集中托管自己的Docker Registry以从中下载图像。 This guide will help you do it

答案 1 :(得分:0)

正如fiunchinho所说,您可以设置一个Docker注册表并将其用于您的部署。

另一种解决方案是从Jenkins导出图像,docker import在您的奴隶上

答案 2 :(得分:0)

如果您的环境中未设置Docker注册表,则需要使用docker load -i命令在工作程序节点上加载映像