Amazon EKS
Guía del usuario

Tutorial: Implementación de la interfaz de usuario web de Kubernetes (panel)

Este tutorial le guiará en la implementación del panel de Kubernetes en su clúster de Amazon EKS, incluidas las métricas de CPU y memoria. También le ayudará a crear un a cuenta de servicio de administrador de Amazon EKS que podrá utilizar para conectarse de forma segura al panel a fin de ver y controlar el clúster.


            Panel de Kubernetes

Requisitos previos

Este tutorial se basa en los siguientes supuestos:

Paso 1: Implementar el servidor de métricas de Kubernetes

El servidor de métricas de Kubernetes es un agregador de datos de uso de recursos en el clúster. No está implementado en los clústeres de Amazon EKS de forma predeterminada. El panel de Kubernetes utiliza el servidor de métricas para recopilar métricas para el clúster, como el uso del CPU y de la memoria a lo largo del tiempo. Elija la pestaña correspondiente al método de implementación que desee.

curl and jqWeb browser
curl and jq

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con curl y jq

Si tiene un sistema MacOS o Linux con curl, tar, gzip y el analizador de JSON jq instalados, puede descargar, extraer e instalar la última versión con los siguientes comandos. De lo contrario, utilice el siguiente procedimiento para descargar la última versión con un navegador web.

  1. Abra una ventana de terminal y vaya al directorio en el que desea descargar la última versión del metrics-server.

  2. Copie y pegue los siguientes comandos en la ventana de terminal y, a continuación, escriba Enter (Intro) para ejecutarlos. Estos comandos descargan la última versión. Extráigala y aplique los manifiestos de versión 1.8 o superior a su clúster.

    DOWNLOAD_URL=$(curl --silent "https://api.github.com/repos/kubernetes-incubator/metrics-server/releases/latest" | jq -r .tarball_url) DOWNLOAD_VERSION=$(grep -o '[^/v]*$' <<< $DOWNLOAD_URL) curl -Ls $DOWNLOAD_URL -o metrics-server-$DOWNLOAD_VERSION.tar.gz mkdir metrics-server-$DOWNLOAD_VERSION tar -xzf metrics-server-$DOWNLOAD_VERSION.tar.gz --directory metrics-server-$DOWNLOAD_VERSION --strip-components 1 kubectl apply -f metrics-server-$DOWNLOAD_VERSION/deploy/1.8+/
  3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada de pods con el siguiente comando:

    kubectl get deployment metrics-server -n kube-system

    Salida:

    NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE metrics-server 1 1 1 1 56m
Web browser

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con un navegador web

  1. Descargue y extraiga la última versión del código del servidor de métricas de GitHub.

    1. Vaya a la página de la última versión del proyecto metrics-server en GitHub (https://github.com/kubernetes-incubator/metrics-server/releases/latest) y, a continuación, elija un archivo de código fuente de la última versión para descargarlo.

      nota

      Si va a descargar en un servidor remoto, puede utilizar el siguiente comando de curl, sustituyendo el texto rojo por el número de versión más reciente.

      curl --remote-name --location https://github.com/kubernetes-incubator/metrics-server/archive/v0.3.4.tar.gz
    2. Vaya a su carpeta de descargas y extraiga el archivo de código fuente. Por ejemplo, si descargó el archivo .tar.gz en un sistema MacOS o Linux, utilice el siguiente comando para extraerlo (sustituyendo su versión de lanzamiento).

      tar -xzf v0.3.4.tar.gz
  2. Aplique todos los manifiestos YAML en el directorio de metrics-server-0.3.4/deploy/1.8+ (sustituyendo su versión de lanzamiento).

    kubectl apply -f metrics-server-0.3.4/deploy/1.8+/
  3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada de pods con el siguiente comando:

    kubectl get deployment metrics-server -n kube-system

    Salida:

    NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE metrics-server 1 1 1 1 56m

Paso 2: Implementar el panel

Utilice el siguiente comando para implementar el panel de Kubernetes.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml

Salida:

namespace/kubernetes-dashboard created serviceaccount/kubernetes-dashboard created service/kubernetes-dashboard created secret/kubernetes-dashboard-certs created secret/kubernetes-dashboard-csrf created secret/kubernetes-dashboard-key-holder created configmap/kubernetes-dashboard-settings created role.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created deployment.apps/kubernetes-dashboard created service/dashboard-metrics-scraper created deployment.apps/dashboard-metrics-scraper created

Paso 3: Crear una cuenta de servicio de eks-admin y un enlace de rol de clúster

De forma predeterminada, el usuario del panel de Kubernetes tiene permisos limitados. En esta sección creará una cuenta de servicio eks-admin y un enlace de rol de clúster con los que poder conectarse de forma segura al panel con permisos de nivel de administrador. Para obtener más información, consulte Managing Service Accounts en la documentación de Kubernetes.

Para crear la cuenta de servicio eks-admin y el enlace de rol de clúster

importante

La cuenta de servicio de ejemplo creada con este procedimiento tiene todos los privilegios de cluster-admin (superusuario) para el clúster. Para obtener más información, consulte Using RBAC Authorization en la documentación de Kubernetes.

  1. Cree un archivo llamado eks-admin-service-account.yaml con el siguiente texto. Este manifiesto define una cuenta de servicio y un enlace de rol de clúster llamado eks-admin.

    apiVersion: v1 kind: ServiceAccount metadata: name: eks-admin namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: eks-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: eks-admin namespace: kube-system
  2. Aplique la cuenta de servicio y el enlace de rol de clúster al clúster:

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

    Salida:

    serviceaccount "eks-admin" created clusterrolebinding.rbac.authorization.k8s.io "eks-admin" created

Paso 4: Conectar con el panel

Ahora que el panel de Kubernetes ya está implementado en el clúster y dispone de una cuenta de servicio administrativa que le permite ver y controlar el clúster, puede conectarse al panel utilizando esa cuenta de servicio.

Para conectarse al panel de Kubernetes

  1. Obtenga un token de autenticación para la cuenta de servicio eks-admin. Copie el valor <authentication_token> del resultado. Con este token podrá conectarse al panel.

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

    Salida:

    Name: eks-admin-token-b5zv4 Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name=eks-admin kubernetes.io/service-account.uid=bcfe66ac-39be-11e8-97e8-026dce96b6e8 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: <authentication_token>
  2. Inicie kubectl proxy.

    kubectl proxy
  3. Para obtener acceso al punto de enlace del panel, abra el enlace siguiente con un navegador web: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login

  4. Elija Token, pegue el valor de la salida <authentication_token> del comando anterior en el campo Token y elija SIGN IN (Iniciar sesión).

    
                        Token de autenticación de Kubernetes

    nota

    Pueden pasar algunos minutos antes de que aparezcan las métricas de CPU y memoria en el panel.

Paso 5: Siguientes pasos

Una vez conectado al panel de Kubernetes para el clúster, podrá ver y controlar el clúster con su cuenta del servicio eks-admin. Para obtener más información sobre cómo usar el panel, consulte la documentación de proyecto en GitHub.