Sahas
Sahas

Reputation: 3186

Kubernetes - node capacity

I'm running a small node in gcloud with 2 pods running. Google cloud console shows all resources utilization

<40% cpu utilization

about 8k n\w bytes

about 64 disk bytes.

When adding the next pod, it fails with below error.

FailedScheduling:Failed for reason PodExceedsFreeCPU and possibly others

Based on the numbers I see in google console, ~60% CPU is available. is there anyway to get more logs? Am I missing something obvious here?

Thanks in advance !

Upvotes: 7

Views: 22431

Answers (2)

Tommy
Tommy

Reputation: 13632

In your helm chart or Kubernetes yaml, check the resources section. Even if you have free capacity, if your request would put the cluster over, even if your pod etc wouldn't actually use that much, it will fail to schedule. The request is asking for a reservation of capacity. IE:

spec:
  serviceAccountName: xxx
  containers:
  - name: xxx
    image: xxx
    command:
    - cat
    tty: true
    resources:
      requests:
        memory: "256Mi"
        cpu: "250m"
      limits:
        memory: "256Mi"
        cpu: "250m"

If the value for cpu there could make the cluster oversubscribed, it won't schedule the pod. So make sure your request reflect actual typical usage. If your requests do reflect actual typical usage, then you need more capacity.

Upvotes: 0

agares
agares

Reputation: 386

As kubernetes reserve some space if more cpu or memory is needed you should check the capacity allocated by the cluster instead of the utilization.

kubectl describe nodes

You can find a deeper description about the capacity of the nodes in: http://kubernetes.io/docs/user-guide/compute-resources/

Upvotes: 10

Related Questions