The nginx-proxy container is deployed on every node that does not have the controlplane role. It provides access to all the nodes with the controlplane role by dynamically generating the NGINX configuration based on available nodes with the controlplane role.

Check if the Container is Running

The container is called nginx-proxy and should have status Up. The duration shown after Up is the time the container has been running.

docker ps -a -f=name=nginx-proxy

Example output:

docker ps -a -f=name=nginx-proxy
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS               NAMES
c3e933687c0e        rancher/rke-tools:v0.1.15   "nginx-proxy CP_HO..."   3 hours ago         Up 3 hours                              nginx-proxy

Check Generated NGINX Configuration

The generated configuration should include the IP addresses of the nodes with the controlplane role. The configuration can be checked using the following command:

docker exec nginx-proxy cat /etc/nginx/nginx.conf

Example output:

error_log stderr notice;

worker_processes auto;
events {
  multi_accept on;
  use epoll;
  worker_connections 1024;
}

stream {
        upstream kube_apiserver {
            
            server ip_of_controlplane_node1:6443;
            
            server ip_of_controlplane_node2:6443;
            
        }

        server {
            listen        6443;
            proxy_pass    kube_apiserver;
            proxy_timeout 30;
            proxy_connect_timeout 2s;

        }

}

nginx-proxy Container Logging

The logging of the containers can contain information on what the problem could be.

docker logs nginx-proxy