Skip to main content

Lab 2.2 - Analyzing Worker Nodes

Objectives

By the end of this lab, you will be able to:

  • Inspect Worker Nodes
  • Understand the role of kubelet
  • Analyze kube-proxy
  • Examine the Container Runtime

Prerequisites

  • Working Kubernetes cluster
  • kubectl installed and configured
  • Cluster access

Exercise 1: Inspect Nodes

Step 1: List Nodes

# View all nodes
kubectl get nodes

# View node details
kubectl describe node <node-name>

# View nodes with more information
kubectl get nodes -o wide

Question: How many Worker Nodes do you have? What are their roles?

Step 2: Node Information

# View node labels
kubectl get node <node-name> --show-labels

# View annotations
kubectl get node <node-name> -o jsonpath='{.metadata.annotations}'

Exercise 2: Analyze kubelet

Step 1: Verify kubelet

# View system Pods related to kubelet
kubectl get pods -n kube-system | grep kubelet

# View node events
kubectl get events --field-selector involvedObject.name=<node-name>

Step 2: Node Metrics

# View node resource usage
kubectl top node <node-name>

# View resource details
kubectl describe node <node-name> | grep -A 10 "Allocated resources"

Exercise 3: Analyze kube-proxy

Step 1: Verify kube-proxy

# View kube-proxy Pod
kubectl get pods -n kube-system -l k8s-app=kube-proxy

# View kube-proxy logs
kubectl logs -n kube-system -l k8s-app=kube-proxy --tail=50

Step 2: Verify Services

# List all Services
kubectl get services --all-namespaces

# View Service Endpoints
kubectl get endpoints <service-name>

Exercise 4: Container Runtime

Step 1: Identify the Runtime

# View node information (contains the runtime)
kubectl describe node <node-name> | grep "Container Runtime"

# View images in use
kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.spec.containers[*].image}{"\n"}{end}' | sort -u

Exercise 5: Pods on a Node

Step 1: Assigned Pods

# View all Pods on a specific node
kubectl get pods --all-namespaces --field-selector spec.nodeName=<node-name>

# Count Pods per node
kubectl get pods --all-namespaces -o wide | awk '{print $7}' | sort | uniq -c

Step 2: Resources Used

# View resource usage by Pod
kubectl top pods --all-namespaces

# Filter by node
kubectl top pods --all-namespaces | grep <node-name>

Reflection Questions

  1. How many Pods can run on each node?
  2. How does kubelet manage resources?
  3. What is the role of kube-proxy on each node?
  4. How is the Container Runtime used?

Cleanup

No cleanup needed.


Next Steps

Lab 2.3: Monitoring System Components
Module 3: Pods and Deployments


Lab created: December 2024