<p>I have a k8s v1.10.2, 3x3, cluster which I was trying to stress.  I put together the command:</p>

<pre><code>kubectl run stress --replicas=1 --image=lorel/docker-stress-ng -- --cpu 8 --io 8 --vm 4 --vm-bytes 1024m  --fork 4 --timeout 5m --metrics-brief  
</code></pre>

<p>and when I look at the node usage via:</p>

<pre><code>kubectl describe node addons-worker-01
</code></pre>

<p>the node reports no usage by the pod:</p>

<pre><code>Non-terminated Pods:         (6 in total)
  Namespace                  Name                                  CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ---------                  ----                                  ------------  ----------  ---------------  -------------
  default                    stress-765b45bdd5-qwqbj               0 (0%)        0 (0%)      0 (0%)           0 (0%)
</code></pre>

<p>yet when I look at top, the node shows the usage I would expect.  Is this expected?  Am I missing something?</p>

Sancho
<p><code>kubctl describe</code> is used to show your current node configuration.</p>

<p>For example:</p>

<pre><code>Namespace       Name                CPU Requests    CPU Limits Memory Requests  Memory Limits
 ---------      ----                ------------    ---------- ---------------  ------------- 
 default        stress                  100m (1%)       0 (0%)          0 (0%)          0 (0%)
 kube-system    fluentd                 100m (1%)       0 (0%)      200Mi (0%)      300Mi (1%) 
 kube-system    kube-dns                260m (3%)       0 (0%)      110Mi (0%)      170Mi (0%) 
 kube-system    kube-proxy-gke-cluster  100m (1%)       0 (0%)          0 (0%)          0 (0%) 
 kube-system    kubernetes-dashboard    100m (1%)    100m (1%)      100Mi (0%)      300Mi (1%)

Allocated resources: 
(Total limits may be over 100 percent, i.e., overcommitted.) 
CPU Requests CPU Limits Memory Requests Memory Limits 
------------ ---------- --------------- ------------- 
660m (8%) 100m (1%) 410Mi (1%) 770Mi (2%)
</code></pre>

<p>It means that there are 5 pods on the node and, for example, <strong><em>fluentd</em></strong> requires 100m of CPU to start with no 
limit set and 200M of memory to start which is limited to 300M.</p>

<p>You can set limits inside a config <code>yaml</code> file for the pod like the following:</p>

<pre><code>spec:
  containers:
  - name: text
    image: nginx
   resources:
      limits:
        memory: 512Mi
      requests:
        memory: 128Mi
</code></pre>

<p>More about setting limits of memory and CPU you can read in Kubernetes <a href="https://kubernetes.io/docs/tasks/administer-cluster/manage-resources" rel="nofollow noreferrer">manage-resources</a> docs.</p>

<p>For monitoring I would recommend <a href="https://prometheus.io/" rel="nofollow noreferrer">Prometheus</a> or <a href="https://cloud.google.com/monitoring/docs/" rel="nofollow noreferrer">Google Cloud Monitoring</a>.</p>

<p>You can also use <code>kubctl top nodes</code> which will show current load on the nodes:</p>

<pre><code>NAME                                       CPU(cores)   CPU%      MEMORY(bytes)   MEMORY%
gke-cluster-1-default-pool-1                7969m        100%      4708Mi          17%
gke-cluster-1-default-pool-2                56m          0%        491Mi           1%
gke-cluster-1-default-pool-3                60m          0%        568Mi           2%
</code></pre>
