Kubernetes Deployment Strategies for Zero Downtime

2 min read
#kubernetes#devops#deployment#high-availability

Zero-downtime deployments are critical for maintaining high availability in production systems. In this post, we'll explore three key deployment strategies in Kubernetes that enable seamless updates without service interruption.

1. Rolling Updates

Rolling updates are the default deployment strategy in Kubernetes. They gradually replace pods with new versions while maintaining service availability.

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    spec:
      containers:
      - name: app
        image: my-app:v2.0

Key Parameters

  • maxSurge: Maximum number of pods that can be created above the desired count
  • maxUnavailable: Maximum number of pods that can be unavailable during the update

2. Blue-Green Deployments

Blue-green deployments maintain two identical environments. Traffic is switched from the old version (blue) to the new version (green) after validation.

bash
# Deploy green environment
kubectl apply -f deployment-green.yaml

# Switch traffic using service selector
kubectl patch service my-app -p '{"spec":{"selector":{"version":"green"}}}'

# Verify and cleanup blue environment
kubectl delete deployment my-app-blue

3. Canary Releases

Canary releases gradually roll out changes to a subset of users before making them available to everyone.

yaml
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: my-app
spec:
  http:
  - match:
    - headers:
        canary:
          exact: "true"
    route:
    - destination:
        host: my-app
        subset: v2
  - route:
    - destination:
        host: my-app
        subset: v1
      weight: 90
    - destination:
        host: my-app
        subset: v2
      weight: 10

Best Practices

  1. Implement Health Checks: Ensure readiness and liveness probes are configured
  2. Use Resource Limits: Prevent resource exhaustion during deployments
  3. Monitor Rollouts: Track deployment progress and automate rollbacks
  4. Test Thoroughly: Validate in staging before production deployments

Conclusion

Choosing the right deployment strategy depends on your specific requirements. Rolling updates offer simplicity, blue-green provide quick rollback capabilities, and canary releases enable gradual validation with real traffic.

Remember: zero-downtime deployments require proper planning, monitoring, and automation.

$ find ./blog --related