无法运行kubenetes部署

时间:2019-12-01 08:08:37

标签: asp.net docker asp.net-core kubernetes

我将kubernetes配置为具有3个图像(我的API,Elastic Search和Kibana)

这是我的deployment.yml文件

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: tooseeweb-deployment
spec:
  selector:
    matchLabels:
      app: tooseeweb-pod
  template:
    metadata:
      labels:
        app: tooseeweb-pod
    spec: 
      containers:
      - name: tooseewebcontainer
        image: tooseewebcontainer:v1
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 80
      - name: elasticsearch
        image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 9200
      - name: kibana
        image: docker.elastic.co/kibana/kibana:6.2.4
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 5601

当我运行kubectl get deployments时,我看到了

enter image description here

它停留在0/1就绪状态。我尝试重新启动docker等。这没有帮助。我该如何解决?

更新

我运行kubectl describe pod并出现此错误

Warning  FailedScheduling  19s   default-scheduler  0/1 nodes are available: 1 Insufficient cpu.

我该如何解决?

3 个答案:

答案 0 :(得分:0)

删除每个吊舱中的这些资源限制。

resources:
   limits:
      memory: "128Mi"
      cpu: "500m"

如果您想限制资源,请在成功应用一次部署之后再做。

答案 1 :(得分:0)

我看到您在安排广告连播时遇到了麻烦。 Kubernetes错误消息:0/1 nodes are available: 1 Insufficient cpu,表示您没有足够的资源来运行pod。

您的每个容器都要求0.5个cpu核心,因此整个吊舱需要1.5个cpu核心才能运行。 Kubernetes无法找到具有备用1.5 cpu内核的节点,因此无法调度。如果要运行它,则需要降低限制/向节点添加更多资源的要求。

我还注意到您将所有容器放在同一个容器中,这不是一个好习惯。只要您可以将每个容器放在单独的容器中。这还将允许在节点之间更好地分散负载。仅在必须将多个容器放在一起且没有其他方法的情况下,才将多个容器放入同一容器中。

还要注意,elasticsearch是一个Java应用程序,因此将其内存限制为128Mi可能会导致频繁重启,这对于数据库来说是非常不希望的行为。

答案 2 :(得分:0)

分析:

  • 这取决于已在节点中调度的Pod。
  • Kubernetes调度程序跟踪节点中的资源以及在每个节点中调度的Pod
  • 调度新容器时,调度程序会尝试识别可以调度容器的节点
  • 如果找不到具有Pod请求的必要资源的节点,则调度程序将无法调度Pod,并且Pod会停留在“待处理”状态

解决方案:

  1. 减少分配给现有Pod的资源/删除不必要的Pod
  2. 增加工作节点中的可用资源