Skip to content

Acceso a Rancher y Kubernetes cluster

Laboratorio: Acceso a Rancher y Kubernetes cluster

Descripción

Esta guía muestra la posibilidad de acceder a desplegar aplicaciones y/o administrar el cluster de Kubernetes por medio de la consola web de Rancher o utilizando la línea de comandos. Este laboratorio mostrará los diferentes mecanismos para acceder a un cluster.

Objetivos

  • Conocer las diferentes formas para ingresar a un cluster
  • Instalar la interfaz Kubectl
  • Ingresar a la consola web de Rancher
  • Ingresar por medio de Kubectl
  • Utilizar archivo de configuracion (Kubeconfig)
  • Elaborar un plugin básico para Kubectl

Antes de comenzar

  • Contar con el acceso al ambiente de laboratorio
  • Haber realizado la Instalación de Rancher Kubernetes Engine (RKE)

Inicio de laboratorio

Kubectl en Rancher Web Console

  1. Ingresar la URL de Rancher Server con el usuario y contraseña, haga clic en ☰ > Administración de clústeres
  2. Vaya al clúster al que desea acceder con Kubectl (cluster-users)
  3. En el menú de navegación superior, haga clic en el botón Kubectl Shell
  4. Utilice la ventana que se abre para interactuar con su clúster de Kubernetes
  5. Ejecute el siguiente comando para verificar las versiones del ambiente
    kubectl version
    
  6. Listar los pods de un Namespace
    kubectl get pods -n ingress-nginx
    
  7. Crear un nuevo Namespace
    kubectl create ns shell-demo
    
  8. Crear un nuevo pod
    echo "
    apiVersion: v1
    kind: Pod
    metadata:
      name: shell-demo
      namespace: shell-demo
    spec:
      volumes:
      - name: shared-data
        emptyDir: {}
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: shared-data
          mountPath: /usr/share/nginx/html
    " | kubectl apply -f -
    
  9. Verificar que el pod se encuentre en estado running
    kubectl get pod shell-demo -n shell-demo
    
  10. Acceder al shell del pod en ejecución
    kubectl -n shell-demo exec --stdin --tty shell-demo -- /bin/bash
    
  11. Escribir una nueva página web dentro del contenedor
    echo 'Hello shell demo' > /usr/share/nginx/html/index.html
    
  12. Ejecutar comandos dentro del contenedor
    apt-get update
    apt-get install curl
    curl http://localhost/
    
  13. El texto mostrado debería ser similar al siguiente:
    Hello shell demo
    
  14. Salga del shell del contenedor
    exit
    
  15. Ejecutar comandos individuales en un contenedor. Experimente ejecutando algunos comandos:
    kubectl -n shell-demo exec shell-demo -- date
    kubectl -n shell-demo exec shell-demo -- ls /
    kubectl -n shell-demo exec shell-demo -- df
    kubectl -n shell-demo exec shell-demo -- ping
    
  16. Eliminar el pod creado anteriormente
    kubectl -n shell-demo delete pod shell-demo
    
  17. Eliminar el Namespace creado anteriormente
    kubectl delete ns shell-demo
    

Instalación y configuración del cliente en línea de comandos "Kubectl" (Omitir esta sección si ya cuenta con kubectl, instalado)

  1. Ingrese a la línea de comandos del sistema operativo, con el usuario y la contraseña proporcionados al servidor del laboratorio
  2. Descargue la última versión del CLI de Kubernetes, el siguiente comando debe escribirlo en una sola línea
    cd
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    
  3. Instale kubectl en el directorio ~/.local/bin
    chmod +x kubectl
    mkdir -p ~/bin/
    mv ./kubectl ~/bin/kubectl
    
  4. Ejecute el siguiente comando para verificar las versiones del ambiente
    kubectl version
    
  5. Inicie sesión en Rancher Server por medio de la Web Console. Haga clic en ☰ >

Administración de clústeres

  1. Vaya al clúster al que desea acceder con kubectl (cluster-users)
  2. En la barra de navegación superior, haga clic en el botón Descargar KubeConfig
  3. Guarde el archivo YAML en su computadora local
  4. Mueva el archivo descargado a ~/.kube/config. Nota: La ubicación predeterminada que usa kubectl para el archivo kubeconfig es ~/.kube/config. Pero puede usar cualquier directorio y especificarlo usando la opción --kubeconfig, Como en este ejemplo: kubectl --kubeconfig /custom/path/kube.config get pods.
  5. Ejecute el siguiente comando para verificar las versiones del ambiente
    kubectl version
    
  6. Configure la auto completación para usuario regular. Nota: El paquete bash-completion, debe estar instalado por su administrador de sistemas.
    kubectl completion bash > ~/.completion-bash.sh
    source  ~/.completion-bash.sh
    
    Haga el cambio de manera permanente:
    echo 'source  ~/.completion-bash.sh' >> .bashrc
    
  7. Ejecute el siguiente comando para comprobar la instalación y configuración de kubectl, el comando se utiliza para obtener una explicación sobre un recurso
    kubectl explain pod
    
  8. Elabore un plugin básico por medio de la línea de comandos de Kubectl, el cual puede ser utilizado para crear scripts que faciliten la administración y/o las operaciones diarias. Edite el archivo ~/.kube/config y cambie el nombre de usuario que coloca Rancher en el archivo ( "cluster-users") utilice el siguiente ejemplo: Siguiendo el ejemplo:
    …
    users:
    - name: "admink8s"
      user:
        token: "kubeconfig-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    contexts:
    - name: "cluster-users"
      context:
        user: "admink8s"
        cluster: "cluster-users"
  9. Cree los siguientes directorios (Si no existen)
    mkdir ~/bin
    mkdir -p ~/.local/bin
    
  10. Cree un archivo con el contenido qué se muestra a continuación: Use el siguiente comando para crear el archivo
    vi ~/bin/kubectl-whoami
    
    Asegúrese que los comandos se encuentren en una sola línea y de incluir la línea "#!/bin/bash", referencia Shebang: https://en.wikipedia.org/wiki/Shebang_(Unix)
    #!/bin/bash
    kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
    kubectl config view --template='{{ range .contexts }}{{ if eq .name "'$(kubectl config current-context)'" }}Current user: {{ printf "%s\n" .context.user }}{{ end }}{{ end }}'
    
  11. Guarde y cierre el archivo
  12. Asigne permisos de ejecución al archivo creado anteriormente
    chmod +x ~/bin/kubectl-whoami
    
  13. Ejecute el siguiente comando para listar los plugins disponibles
    kubectl plugin list
    
    Debe mostrar un resultado como el siguiente:
    The following compatible plugins are available:
    /home/student/bin/kubectl-whoami
    
  14. Ejecute el plugin creado anteriormente con el siguiente comando:
    kubectl whoami
    
    Debe mostrar un resultado como el siguiente:
    ...
    Current user: admink8s
    ...
    
  15. Para aumentar las capacidades de administración y operación de un cluster de Kubernetes, podemos utilizar otros Plugins ya elaborados por terceros, a continuación ejecutaremos la instalación de un Plugin. Instalar la herramienta Krew, el cual es el administrador de complementos para la herramienta de línea de comandos. Llevar a cabo la instalación de la herramienta GIT
    sudo yum install git -y
    
  16. Ejecute los siguientes comandos para descargar e instalar krew:
    cd ~/
    
    (
      set -x; cd "$(mktemp -d)" &&
      OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
      ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
      KREW="krew-${OS}_${ARCH}" &&
      curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
      tar zxvf "${KREW}.tar.gz" &&
      ./"${KREW}" install krew
    )
    
  17. Agregue el directorio $HOME/.krew/bin a sus variables de entorno del sistema operativo.
    echo export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" >> .bash_profile
    
  18. Con el siguiente comando puede leer nuevamente la configuración de las variables de entorno a partir del archivo ~/.bash_profile:
    source ~/.bash_profile
    
  19. Validar que la herramienta KREW esta instalada correctamente con el siguiente comando:
    kubectl krew
    
  20. Llevar a cabo la instalación del plugin kube-capacity, es una CLI simple que proporciona una descripción general de las solicitudes de recursos, los límites y la utilización en un clúster de Kubernetes. Intenta combinar las mejores partes de la salida desde kubectl top y kubectl describe:
    kubectl krew install resource-capacity
    
  21. Asegurese de contar con los accesos a su cluster de Kubernetes, lo cual puede hacerse con el siguiente comando:
    export KUBECONFIG=~/rke-cluster-users/kube_config_cluster.yml
    
  22. Ejecute el comando siguiente para verificar los recursos de hardware de los nodos de un cluster de Kubernetes:
    kubectl top nodes
    
  23. Ejecute el comando siguiente para verificar los recursos de hardware de los PODS de un cluster de Kubernetes:
    kubectl top pods -A
    
  24. Ejecute el comando siguiente para verificar los recursos de hardware de un nodo del cluster de Kubernetes:
    kubectl describe node student-X-master
    
  25. Utilice el Plugin instalado anteriormente ejecutando y observando el resultado con los siguientes comandos:
    kubectl resource-capacity
    
    kubectl resource-capacity --pods --util
    
  26. Puede utilizar los siguientes comandos para llevar a cabo la limpieza de los ejercicios ejecutados anteriormente:
    rm -rf -- ~/.krew
    
    rm -f bin/kubectl-whoami
    
    rm -f .kube/config