Lab 4.4 - LoadBalancer and Cloud Integration
Lab Objectives
By the end of this lab, you will be able to:
- Understand the LoadBalancer Service type.
- Configure a LoadBalancer Service.
- Understand integration with cloud load balancers.
- Test external access via LoadBalancer.
Estimated Duration
30-45 minutes
Prerequisites
- kubectl installed and configured.
- Functional local Kubernetes cluster (minikube or kind).
- Knowledge of Services (Chapters 4.1 and 4.2).
Part 1: Understanding LoadBalancer
A LoadBalancer Service type exposes the Service externally using a load balancer provided by the cloud provider (AWS ELB, Azure Load Balancer, GCP Load Balancer).
On a local cluster (minikube/kind), the LoadBalancer behaves like a NodePort, but in cloud production, it automatically provisions an external load balancer.
Part 2: Creating a LoadBalancer Service
Step 2.1: Deploy an Application
Create a simple Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80
Apply:
kubectl apply -f deployment.yaml
Step 2.2: Create a LoadBalancer Service
Create service-loadbalancer.yaml:
apiVersion: v1
kind: Service
metadata:
name: web-app-lb
spec:
type: LoadBalancer
selector:
app: web-app
ports:
- port: 80
targetPort: 80
protocol: TCP
Apply:
kubectl apply -f service-loadbalancer.yaml
Part 3: Verification
Step 3.1: Verify the Service
kubectl get svc web-app-lb
On minikube, you will see <pending> for the EXTERNAL-IP. Enable the tunnel:
minikube tunnel
In another terminal, check again:
kubectl get svc web-app-lb
You should see an EXTERNAL-IP.
Step 3.2: Test Access
Test the access:
curl http://<EXTERNAL-IP>
Part 4: Cloud Integration (Conceptual)
On a cloud cluster (AWS, Azure, GCP), the LoadBalancer automatically provisions:
- AWS: Elastic Load Balancer (ELB)
- Azure: Azure Load Balancer
- GCP: Google Cloud Load Balancer
The cloud provider automatically handles the creation and configuration of the load balancer.
Part 5: Cleanup
kubectl delete svc web-app-lb
kubectl delete deployment web-app
Lab Summary
In this lab, you created a LoadBalancer Service and understood how it works. On a cloud cluster, this Service type automatically provisions an external load balancer to expose your application.
Next Steps
This module on Services and Networking is now complete. You can move on to Module 5 on Configuration and Secrets.
Module 5: Configuration and Secrets
Lab created: December 2024