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
- Ingresar la URL de Rancher Server con el usuario y contraseña, haga clic en ☰ > Administración de clústeres
- Vaya al clúster al que desea acceder con Kubectl (cluster-users)
- En el menú de navegación superior, haga clic en el botón Kubectl Shell
- Utilice la ventana que se abre para interactuar con su clúster de Kubernetes
- Ejecute el siguiente comando para verificar las versiones del ambiente
kubectl version - Listar los pods de un Namespace
kubectl get pods -n ingress-nginx - Crear un nuevo Namespace
kubectl create ns shell-demo - 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 - - Verificar que el pod se encuentre en estado running
kubectl get pod shell-demo -n shell-demo - Acceder al shell del pod en ejecución
kubectl -n shell-demo exec --stdin --tty shell-demo -- /bin/bash - Escribir una nueva página web dentro del contenedor
echo 'Hello shell demo' > /usr/share/nginx/html/index.html - Ejecutar comandos dentro del contenedor
apt-get update apt-get install curl curl http://localhost/ - El texto mostrado debería ser similar al siguiente:
Hello shell demo - Salga del shell del contenedor
exit - 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 - Eliminar el pod creado anteriormente
kubectl -n shell-demo delete pod shell-demo - 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)
- Ingrese a la línea de comandos del sistema operativo, con el usuario y la contraseña proporcionados al servidor del laboratorio
- 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" - Instale kubectl en el directorio ~/.local/bin
chmod +x kubectl mkdir -p ~/bin/ mv ./kubectl ~/bin/kubectl - Ejecute el siguiente comando para verificar las versiones del ambiente
kubectl version - Inicie sesión en Rancher Server por medio de la Web Console. Haga clic en ☰ >
Administración de clústeres
- Vaya al clúster al que desea acceder con kubectl (cluster-users)
- En la barra de navegación superior, haga clic en el botón Descargar KubeConfig
- Guarde el archivo YAML en su computadora local
- 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.
- Ejecute el siguiente comando para verificar las versiones del ambiente
kubectl version - Configure la auto completación para usuario regular.
Nota: El paquete bash-completion, debe estar instalado por su administrador de
sistemas.
Haga el cambio de manera permanente:
kubectl completion bash > ~/.completion-bash.sh source ~/.completion-bash.shecho 'source ~/.completion-bash.sh' >> .bashrc - 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 - 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" … - Cree los siguientes directorios (Si no existen)
mkdir ~/bin mkdir -p ~/.local/bin - Cree un archivo con el contenido qué se muestra a continuación:
Use el siguiente comando para crear el archivo
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)
vi ~/bin/kubectl-whoami#!/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 }}' - Guarde y cierre el archivo
- Asigne permisos de ejecución al archivo creado anteriormente
chmod +x ~/bin/kubectl-whoami - Ejecute el siguiente comando para listar los plugins disponibles
Debe mostrar un resultado como el siguiente:
kubectl plugin listThe following compatible plugins are available: /home/student/bin/kubectl-whoami - Ejecute el plugin creado anteriormente con el siguiente comando:
Debe mostrar un resultado como el siguiente:
kubectl whoami... Current user: admink8s ... - 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 - 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 ) - 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 - Con el siguiente comando puede leer nuevamente la configuración de las variables de entorno a partir del archivo ~/.bash_profile:
source ~/.bash_profile - Validar que la herramienta KREW esta instalada correctamente con el siguiente comando:
kubectl krew - 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 - 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 - Ejecute el comando siguiente para verificar los recursos de hardware de los nodos de un cluster de Kubernetes:
kubectl top nodes - Ejecute el comando siguiente para verificar los recursos de hardware de los PODS de un cluster de Kubernetes:
kubectl top pods -A - Ejecute el comando siguiente para verificar los recursos de hardware de un nodo del cluster de Kubernetes:
kubectl describe node student-X-master - Utilice el Plugin instalado anteriormente ejecutando y observando el resultado con los siguientes comandos:
kubectl resource-capacitykubectl resource-capacity --pods --util - Puede utilizar los siguientes comandos para llevar a cabo la limpieza de los ejercicios ejecutados anteriormente:
rm -rf -- ~/.krewrm -f bin/kubectl-whoamirm -f .kube/config