Setting Up a Frontend Load Balancer for the Kubernetes API

1 hour
  • 2 Learning Objectives

About this Hands-on Lab

One way to manage access to the Kubernetes API across distributed control nodes is to use a load balancer. This activity will guide you through the process of setting up an Nginx load balancer to manage traffic to the Kubernetes API across multiple nodes. You’ll learn more about the relationship between the Kubernetes API and the different Kubernetes components, such as kubelet and kubectl. After completing this activity, you will have a basic understanding of how to load balance Kubernetes API traffic.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Install Nginx on the load balancer server.

You can install Nginx like this:

sudo apt-get install -y nginx
sudo systemctl enable nginx
Configure Nginx to balance Kubernetes API traffic across the two controllers.

Do the following to configure the Nginx load balancer:

sudo mkdir -p /etc/nginx/tcpconf.d
sudo vi /etc/nginx/nginx.conf

Add the following configuration at the bottom of nginx.conf:

include /etc/nginx/tcpconf.d/*;

Create a config file to configure Kubernetes API load balancing:

cat << EOF | sudo tee /etc/nginx/tcpconf.d/kubernetes.conf
stream {
    upstream kubernetes {
        server <controller 0 private ip>:6443;
        server <controller 1 private ip>:6443;

    server {
        listen 6443;
        listen 443;
        proxy_pass kubernetes;

Reload the Nginx configuration:

sudo nginx -s reload

You can verify that everything is working by making a request to the Kubernetes API through the load balancer:

curl -k https://localhost:6443/version

This request should return some Kubernetes version data.

Additional Resources

Your team is working on setting up a new Kubernetes cluster. Two Kubernetes controllers have been configured, but the team wants to use a load balancer to manage traffic to the Kubernetes API. You have been given the task of setting up an Nginx load balancer that will balance traffic across the Kubernetes API services running on the two Kubernetes controllers.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?