Amazon EKS
User Guide

Tutorial: Deploy the Kubernetes Web UI (Dashboard)

This tutorial guides you through deploying the Kubernetes dashboard to your Amazon EKS cluster, complete with CPU and memory metrics. It also helps you to create an Amazon EKS administrator service account that you can use to securely connect to the dashboard to view and control your cluster.


Kubernetes versions 1.11 and above do not support heapster memory and CPU metrics in the dashboard by default. The community is working to replace heapster in the dashboard with the Kubernetes metrics server to fix this issue. For more information, see and

When the dashboard project is updated to use the Kubernetes metrics server, this topic will be updated with information about how to restore the CPU and memory metrics functionality. Until that time, CPU and memory metrics are not visible in the dashboard on Amazon EKS cluster versions 1.11 and above.

There is a potential workaround posted on GitHub, but the Amazon EKS team has not evaluated the risk of setting the insecure=true flag on the heapster source, so we cannot recommend the workaround at this time.

            Kubernetes dashboard


This tutorial assumes the following:

Step 1: Deploy the Dashboard

Use the following steps to deploy the Kubernetes dashboard, heapster, and the influxdb backend for CPU and memory metrics to your cluster.

To deploy the Kubernetes dashboard

  1. Deploy the Kubernetes dashboard to your cluster:

    kubectl apply -f


    secret "kubernetes-dashboard-certs" created serviceaccount "kubernetes-dashboard" created role "kubernetes-dashboard-minimal" created rolebinding "kubernetes-dashboard-minimal" created deployment "kubernetes-dashboard" created service "kubernetes-dashboard" created
  2. Deploy heapster to enable container cluster monitoring and performance analysis on your cluster:

    kubectl apply -f


    Although heapster is deprecated, it is currently the only supported metrics provider for the Kubernetes dashboard. For more information, see


    serviceaccount "heapster" created deployment "heapster" created service "heapster" created
  3. Deploy the influxdb backend for heapster to your cluster:

    kubectl apply -f


    deployment "monitoring-influxdb" created service "monitoring-influxdb" created
  4. Create the heapster cluster role binding for the dashboard:

    kubectl apply -f


    clusterrolebinding "heapster" created

Step 2: Create an eks-admin Service Account and Cluster Role Binding

By default, the Kubernetes dashboard user has limited permissions. In this section, you create an eks-admin service account and cluster role binding that you can use to securely connect to the dashboard with admin-level permissions. For more information, see Managing Service Accounts in the Kubernetes documentation.

To create the eks-admin service account and cluster role binding


The example service account created with this procedure has full cluster-admin (superuser) privileges on the cluster. For more information, see Using RBAC Authorization in the Kubernetes documentation.

  1. Create a file called eks-admin-service-account.yaml with the text below. This manifest defines a service account and cluster role binding called eks-admin.

    apiVersion: v1 kind: ServiceAccount metadata: name: eks-admin namespace: kube-system --- apiVersion: kind: ClusterRoleBinding metadata: name: eks-admin roleRef: apiGroup: kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: eks-admin namespace: kube-system
  2. Apply the service account and cluster role binding to your cluster:

    kubectl apply -f eks-admin-service-account.yaml


    serviceaccount "eks-admin" created "eks-admin" created

Step 3: Connect to the Dashboard

Now that the Kubernetes dashboard is deployed to your cluster, and you have an administrator service account that you can use to view and control your cluster, you can connect to the dashboard with that service account.

To connect to the Kubernetes dashboard

  1. Retrieve an authentication token for the eks-admin service account. Copy the <authentication_token> value from the output. You use this token to connect to the dashboard.

    kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')


    Name: eks-admin-token-b5zv4 Namespace: kube-system Labels: <none> Annotations: Type: Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: <authentication_token>
  2. Start the kubectl proxy.

    kubectl proxy
  3. Open the following link with a web browser to access the dashboard endpoint: http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

  4. Choose Token, paste the <authentication_token> output from the previous command into the Token field, and choose SIGN IN.

                        Kubernetes token auth


    It may take a few minutes before CPU and memory metrics appear in the dashboard.

Step 4: Next Steps

After you have connected to your Kubernetes cluster dashboard, you can view and control your cluster using your eks-admin service account. For more information about using the dashboard, see the project documentation on GitHub.