diff --git a/docs/node.md b/docs/node.md index 12377794ecb..1300712a323 100644 --- a/docs/node.md +++ b/docs/node.md @@ -149,5 +149,36 @@ unschedulable, run this command: kubectl update nodes 10.1.2.3 --patch='{"apiVersion": "v1", "unschedulable": true}' ``` +### Node capacity + +The capacity of the node (number of cpus and amount of memory) is part of the node resource. +Normally, nodes register themselves and report their capacity when creating the node resource. If +you are doing [manual node administration](#manual-node-administration), then you need to set node +capacity when adding a node. + +The kubernetes scheduler ensures that there are enough resources for all the pods on a node. It +checks that the sum of the limits of containers on the node is less than the node capacity. It +includes all containers started by kubelet, but not containers started directly by docker, nor +processes not in containers. + +If you want to explicitly reserve resources for non-Pod processes, you can create a placeholder +pod. Use the following template: +``` +apiVersion: v1 +kind: Pod +metadata: + name: resource-reserver +spec: + containers: + - name: sleep-forever + image: gcr.io/google_containers/pause:0.8.0 + resources: + limits: + cpu: 100m + memory: 100Mi +``` +Set the `cpu` and `memory` values to the amount of resources you want to reserve. +Place the file in the manifest directory (`--config=DIR` flag of kubelet). Do this +on each kubelet where you want to reserve resources. [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/node.md?pixel)]()