Skip to content
Advertisement

What are the exact system requirements for Knative set up? Why the basic setup guide lead me to exhaustion of resource?

I have been trying to set up Knative development environment on my system. But everytime i deploy Istio , the pilot remain in pending state and i find its because of resource exhaustion.

I followed basic setup guide from Knative docs. i.e. serving/blob/master/DEVELOPMENT.md

Now if i install and deploy istio according to it, the resources get exhausted and istio-pilot remain in pending state due to no node available.

If i try same with the one given on installation guide i.e. https://knative.dev/docs/install/installing-istio/

It works fine until later when i restart the cluster the api-server get stopped which is according to what i found by searching is also due to lack of resources.

So What is the exact requirement for Knative set up?

I used system with 8 -core processor and 32GB RAM.

Am i allocating it wrong? as much I understood we have to give at least 8Gb memory and 6 CPU to a single node kubernetes structures(That’s what i’m using). What about the resources Istio and Knative deployments use?

I checked for the resources and limits in node and got the limits are set to 0%.

I have already tried to limit the CPU and RAM in minikube config, then with –cpu and –memory on the time of starting the minikube, but the output remain the same.

Minikube started with : minikube start

   🔥  Creating virtualbox VM (CPUs=6, Memory=8192MB, Disk=20000MB) ...
   🐳  Preparing Kubernetes v1.15.2 on Docker 18.09.8 ...
   🚜  Pulling images ...

ISTIO Deployed by:

    kubectl apply -f ./third_party/istio-1.2-latest/istio-crds.yaml
    while [[ $(kubectl get crd gateways.networking.istio.io -o 
    jsonpath='{.status.conditions[?(@.type=="Established")].status}') != 
    'True' ]]; do
    echo "Waiting on Istio CRDs"; sleep 1
    done
    kubectl apply -f ./third_party/istio-1.2-latest/istio.yaml

The pilot remain pending and after describing the pod we get :

Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  71s (x4 over 5m12s)  default-scheduler  0/1 nodes are available: 1 Insufficient cpu.

Output for kubectl describe node nodename:

Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests          Limits
  --------           --------          ------
  cpu                5105m (85%)       13800m (229%)
  memory             3749366272 (45%)  9497290Ki (117%)
  ephemeral-storage  0 (0%)            0 (0%)
Events:
  Type    Reason                   Age                From                  Message
  ----    ------                   ----               ----                  -------
  Normal  Starting                 19m                kubelet, minikube     Starting kubelet.
  Normal  NodeHasSufficientMemory  19m (x8 over 19m)  kubelet, minikube     Node minikube status is now: NodeHasSufficientMemory
  Normal  NodeHasNoDiskPressure    19m (x8 over 19m)  kubelet, minikube     Node minikube status is now: NodeHasNoDiskPressure
  Normal  NodeHasSufficientPID     19m (x7 over 19m)  kubelet, minikube     Node minikube status is now: NodeHasSufficientPID
  Normal  NodeAllocatableEnforced  19m                kubelet, minikube     Updated Node Allocatable limit across pods
  Normal  Starting                 18m                kube-proxy, minikube  Starting kube-proxy.

The setup should have been successful as i did set up the limits with RequestQuotas and LimitRange too. But nothing is working.

what am i doing wrong here?

Advertisement

Answer

You definitely don’t have enough resources. Only for Istio on Minikube you need:

16384 MB of memory and 4 CPUs

Add to this requirements for Knative which are not included in the above and you’ll see that resources you provide are not enough.

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement