Bin Packing — efficiently pack Pods onto Nodes to maximize resource utilization.
1# Scheduler Configuration2apiVersion: kubescheduler.config.k8s.io/v13kind: KubeSchedulerConfiguration4profiles:5- schedulerName: default-scheduler6 plugins:7 score:8 enabled:9 - name: NodeResourcesFit10 weight: 111 disabled:12 - name: NodeResourcesLeastAllocated13 enabled:14 - name: NodeResourcesMostAllocated15 weight: 116 - name: NodeResourcesBalancedAllocation17 weight: 118 pluginConfig:19 - name: NodeResourcesFit20 args:21 scoringStrategy:22 type: MostAllocated23 resources:24 - name: cpu25 weight: 126 - name: memory27 weight: 128---29# Pod with resource requests for bin packing30apiVersion: apps/v131kind: Deployment32metadata:33 name: myapp34spec:35 replicas: 1036 template:37 spec:38 containers:39 - name: app40 image: myapp:latest41 resources:42 requests:43 cpu: "500m"44 memory: "256Mi"45 limits:46 cpu: "1000m"47 memory: "512Mi"
1# Check node utilization2kubectl top nodes3kubectl describe node node-1 | grep -A 5 "Allocated resources"45# Check Pod distribution6kubectl get pods -o wide | awk 'NR>1{print $7}' | sort | uniq -c | sort -rn78# Verify resource requests vs actual9kubectl get pods -o json | jq '.items[] | {name: .metadata.name, cpu_req: .spec.containers[0].resources.requests.cpu, mem_req: .spec.containers[0].resources.requests.memory}'1011# Check scheduler decisions12kubectl get events --field-selector reason=Scheduled13kubectl logs -n kube-system -l component=kube-scheduler | grep -i "fit\|score"
Scoring Strategies:
Benefits: