Docker Pod在单节点Kubernetes群集上处于挂起状态

Docker Pod在单节点Kubernetes群集上处于挂起状态,docker,kubernetes,dockerfile,containers,kubernetes-ingress,Docker,Kubernetes,Dockerfile,Containers,Kubernetes Ingress,我正在使用YAML文件在Kubernetes上部署容器,并在托管机器上使用一些复制因子 YAML文件 步骤: 使用'Docker Build-t mojo:1.0构建Docker图像 docker image ls显示图像id 跳过docker build命令以在容器上部署映像。我需要这样做吗?或kubectl服务部门会处理 运行kubectl apply-f Prod.yaml。它表明 deployment.apps/mojo-deployment已创建 已创建服务/mojo服务 ingres

我正在使用
YAML
文件在
Kubernetes
上部署容器,并在托管机器上使用一些复制因子

YAML文件 步骤:

  • 使用'Docker Build-t mojo:1.0构建
    Docker
    图像
  • docker image ls
    显示图像id
  • 跳过
    docker build
    命令以在容器上部署映像。我需要这样做吗?或
    kubectl
    服务部门会处理
  • 运行
    kubectl apply-f Prod.yaml
    。它表明
  • deployment.apps/mojo-deployment已创建

    已创建服务/mojo服务

    ingress.networking.k8s.io/mojo-ingress已创建

  • kubectl获取服务
    返回

  • kubectl获取pod
    返回
  • kubectl获取部署
    返回
  • 有问题吗

  • 部署
    YAML
    文件之前是否需要构建容器?我试过了,但仍然
    kubernetes
    没有运行

  • 为什么所有POD都显示
    Pending
    状态

  • 部署也显示了
    挂起
    状态

  • 虽然我正试图使用:80访问
    入口
    ,但无法访问它

  • 编辑 吊舱说明

    Name:           mojo-deployment-6665bdc557-s57m7
    Namespace:      default
    Priority:       0
    Node:           <none>
    Labels:         app=mojo
                pod-template-hash=6665bdc557
    Annotations:    <none>
    Status:         Pending
    IP:            
    IPs:            <none>
    Controlled By:  ReplicaSet/mojo-deployment-6665bdc557
    Containers:
    mojo:
     Image:        mojo:1.0
     Port:         9000/TCP
     Host Port:    0/TCP
     Environment:  <none>
     Mounts:
     /var/run/secrets/kubernetes.io/serviceaccount from default-token-tjx6p 
    (ro)
    Conditions:
    Type           Status
    PodScheduled   False
    Volumes:
    default-token-tjx6p:
     Type:        Secret (a volume populated by a Secret)
     SecretName:  default-token-tjx6p
     Optional:    false
    QoS Class:       BestEffort
    Node-Selectors:  <none>
    Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                node.kubernetes.io/unreachable:NoExecute for 300s
     Events:
      Type     Reason            Age                 From               
    
    名称:mojo-deployment-6665bdc557-s57m7
    名称空间:默认值
    优先级:0
    节点:
    标签:app=mojo
    pod模板哈希=6665bdc557
    注释:
    状态:待定
    知识产权:
    IPs:
    控制人:ReplicaSet/mojo-deployment-6665bdc557
    容器:
    魔咒:
    图片:mojo:1.0
    端口:9000/TCP
    主机端口:0/TCP
    环境:
    挂载:
    /来自default-token-tx6p的var/run/secrets/kubernetes.io/servicecomport
    (ro)
    条件:
    类型状态
    播客计划错误
    卷数:
    default-token-tx6p:
    类型:Secret(由Secret填充的卷)
    SecretName:default-token-tjx6p
    可选:false
    QoS等级:最佳努力
    节点选择器:
    容差:node.kubernetes.io/未就绪:不执行300秒
    node.kubernetes.io/不可访问:不执行300秒
    活动:
    类型原因年龄从
    
    信息 ---- ------ ---- ---- ------- 警告失败调度70s(x45超过67m)默认调度程序0/1 节点可用:1个节点无法计划

    编辑2 从主节点移除污染后。 1. <代码>kubectl获取节点返回

  • kubectl获取pod
    返回
  • kubectl描述节点:
  • 您的容器清单应包括可下载的docker映像,或者k8s节点应已包含docker映像:
  • 请回答:您的mojo:1.0.1 docker图像如何显示在kubernetes节点上

  • 所有吊舱等待图像可用

  • 所有吊舱的部署等待将处于运行状态

  • K8s服务使入口在部署准备就绪后可用

  • 您的容器清单应包括可下载的docker映像,或者k8s节点应已包含docker映像:
  • 请回答:您的mojo:1.0.1 docker图像如何显示在kubernetes节点上

  • 所有吊舱等待图像可用

  • 所有吊舱的部署等待将处于运行状态

  • K8s服务使入口在部署准备就绪后可用

  • 如果您只有一个节点(主节点),那么通常会向其添加一个污点,这将使主节点不可调度。使用以下命令从主节点(以及所有其他节点,如果有多个节点)移除污染

    kubectl污染节点——所有节点角色.kubernetes.io/master-

    编辑:根据节点描述输出,CNI未就绪。 请确保所有与CNI相关的POD都运行正常

    如果您只有一个节点(主节点),则通常会添加一个污点,这将使主节点无法调度。使用以下命令从主节点(以及所有其他节点,如果有多个节点)移除污染

    kubectl污染节点——所有节点角色.kubernetes.io/master-

    编辑:根据节点描述输出,CNI未就绪。
    请确保所有与CNI相关的pod都在运行且健康

    是否可以发送
    kubectl Descripte pod的输出
    挂起状态指示调度程序无法找到合适的节点来运行您的pod。正如@MajidRajabi所问的,我们需要
    描述
    输出来找到原因。此外,您构建的容器映像将不会根据部署YAML使用。图像将从docker hub下载。确保在生成期间标记映像(
    docker-build-t/mojo:1.0.
    ),然后登录(
    docker-login
    )将其推送到docker中心(
    docker-push/mojo:1.0
    )。然后,您可以在部署中使用该映像名称YAML
    image:/mojo:1.0.1
    @Ansil我不推到docker hub。图像在我的计算机上可用。@Majid请签出编辑部分如果您只有一个节点,则可以将其作为默认值本地可用
    imagePullPolicy
    IfNotPresent
    。似乎您只有一个主机,并且您的主机上有污点。请更新
    kubeclt get nodes
    &
    kubectl descripe node
    。您是否可以发送
    kubectl descripe pod
    挂起状态的输出,表明计划程序找不到合适的节点来运行您的pod。正如@MajidRajabi所问的,我们需要
    描述
    输出来找到原因。此外,您构建的容器映像将不会根据部署YAML使用。图像将从docker hub下载。确保在构建期间标记映像(
    docker build-t/mojo:1.0.
    ),然后登录(
    do)
    
    Name:           mojo-deployment-6665bdc557-s57m7
    Namespace:      default
    Priority:       0
    Node:           <none>
    Labels:         app=mojo
                pod-template-hash=6665bdc557
    Annotations:    <none>
    Status:         Pending
    IP:            
    IPs:            <none>
    Controlled By:  ReplicaSet/mojo-deployment-6665bdc557
    Containers:
    mojo:
     Image:        mojo:1.0
     Port:         9000/TCP
     Host Port:    0/TCP
     Environment:  <none>
     Mounts:
     /var/run/secrets/kubernetes.io/serviceaccount from default-token-tjx6p 
    (ro)
    Conditions:
    Type           Status
    PodScheduled   False
    Volumes:
    default-token-tjx6p:
     Type:        Secret (a volume populated by a Secret)
     SecretName:  default-token-tjx6p
     Optional:    false
    QoS Class:       BestEffort
    Node-Selectors:  <none>
    Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                node.kubernetes.io/unreachable:NoExecute for 300s
     Events:
      Type     Reason            Age                 From               
    
    containers:
            - name: mojo
              image: mojo:1.0.1
              ports:
                - containerPort: 9000