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
图像docker image ls
显示图像iddocker build
命令以在容器上部署映像。我需要这样做吗?或kubectl
服务部门会处理李>
kubectl apply-f Prod.yaml
。它表明kubectl获取服务
返回
kubectl获取pod
返回
kubectl获取部署
返回
YAML
文件之前是否需要构建容器?我试过了,但仍然kubernetes
没有运行Pending
状态挂起
状态入口
,但无法访问它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污染节点——所有节点角色.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
)。然后,您可以在部署中使用该映像名称YAMLimage:/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