Knative: Operator’s Handbook

Resource Footprint of Knative Serving

To find how much memory and CPU resources are allocated to running Knative itself, you can look at the Deployment/Pod objects of the components.

For example use the view-allocations kubectl plugin to see the view CPU/memory usage of knative-serving namespace:

$ kubectl view-allocations -g pod -n knative-serving

Resource                         Requested  %Requested   Limit  %Limit  Allocatable  Free
  cpu                                  450m          2%   2500m     13%           19    17
  ├─ activator-7688586ccb-gl9qx        300m                   1
  ├─ autoscaler-85f5b489d7-t55nt        30m                300m
  ├─ controller-55bb588dbd-ztjds       100m                   1
  └─ webhook-5dcf9dc6b5-5xkj8           20m                200m
  memory                              220Mi          0%  2200Mi      4%         60Gi  58Gi
  ├─ activator-7688586ccb-gl9qx        60Mi               600Mi
  ├─ autoscaler-85f5b489d7-t55nt       40Mi               400Mi
  ├─ controller-55bb588dbd-ztjds      100Mi              1000Mi
  └─ webhook-5dcf9dc6b5-5xkj8          20Mi               200Mi

As it can be seen here, this Knative installation components take up 450MiB memory and 0.22 vCPUs.

Alternatively you can run this command to see the same result:

kubectl get pods -o=json --namespace knative-serving \
    | jq '.items[].spec.containers[].resources.requests'

Make sure to check other namespaces like istio-system (and/or gke-system) and knative-eventing.

Keep in mind that some Knative components, such as the activator can be autoscaled, and therefore increase the footprint of Knative components in your cluster.