Node Scheduling
Node scheduling can be very beneficial when you want to control Kubeshark’s resource consumption and limit its work to certain nodes at certain times.
For example, if you want to have Kubeshark installed and running in the cluster on a single node or on no nodes at all on idle, and unleash its power when nessasery.
We use K8s’ nodeSelector as the mechanism and can set the various conditions in the nodeSelectorTerms
Kubeshark config property.
Using the CLI
When we set this example in ~/.kubeshark/config.yaml
:
tap:
nodeSelectorTerms:
- matchExpressions:
- key: kubeshark-active
operator: In
values:
- 'true'
We can use the following kubectl
sequence to schedule and unschedule certain nodes:
> kubectl get nodes
NAME STATUS ROLES AGE
ip-192-168-77-217.us-east-2.compute.internal Ready <none> 3d15h
> kubectl label nodes ip-192-168-77-217.us-east-2.compute.internal kubeshark-active=false --overwrite
> kubectl label nodes ip-192-168-77-217.us-east-2.compute.internal kubeshark-active==true --overwrite
In the above example, when a node is labeled with kubeshark-active=false
the worker’s DaemonSet pod will not run and vice versa.
Using Helm
Use the following option when you install Kubeshark with Helm:
helm install kubeshark kubeshark/kubeshark \
--set-json 'tap.nodeSelectorTerms=[{"matchExpressions": [ {"key":"kubeshark-active", "operator": "In", "values": ["true" ] } ] }]'