Saltar al contenido principal

🌐 Gestión del Cluster Kubernetes

Esta guía muestra de forma sencilla cómo Gestionar un Cluster Kubernetes en Nuvion de SaveinCloud.


🚀 1. Acceso SSH al Cluster

  • Puedes acceder a los nodos maestro y de trabajo de Kubernetes vía SSH, usando la clave SSH asignada y el nombre de usuario core.

  • Desde nuestra VM Linux Bastion realizaremos el acceso SSH con la clave privada y IP local del Master Node(Control Plane) del Cluster Kubernetes con el siguiente comando:

ssh -i /root/.ssh/id_rsa [email protected]

Acesso SSH Cluster


🚀 2. Acceso al Panel Kubernetes

  • Una vez que el cluster esté listo, haz clic en Acceso a Kubernetes para obtener instrucciones sobre cómo acceder al panel de control.

Acesso Kubernetes

  • Descarga el archivo "kubeconfig" a tu máquina desde la pestaña de propiedades de tu cluster Kubernetes. Especifica la ruta a este archivo en la variable de entorno "KUBECONFIG".
export KUBECONFIG=config
  • Inicia un proxy para tu cluster Kubernetes.
kubectl proxy

Proxy Kubernetes

Download Kubeconfig

  • En esta parte configuraremos el acceso al panel de Kubernetes en nuestra máquina local siguiendo los pasos anteriores. En nuestra máquina crearé una carpeta llamada k8s, dentro de ella crearé un archivo y copiaré el contenido del KUBECONFIG que fue descargado a este nuevo archivo, luego guardar y salir:
mkdir k8s
cd k8s/
vim lab-k8s-11_03_2026_15_42
  • Ahora ejecutaremos el export KUBECONFIG=archivo y luego el comando echo para validar si el archivo está en la variable de entorno KUBECONFIG, si todo está configurado correctamente, a continuación podemos ejecutar el comando kubectl proxy:
echo $KUBECONFIG

CLI Kubectl

  • Luego abre tu navegador y pega el enlace generado por Kubernetes Access.

  • selecciona el método de autenticación "Kubeconfig" y selecciona el archivo "kubeconfig" descargado y haz clic en el botón Sign in, como se muestra en la imagen a continuación.

Acesso Kubeconfig

  • Después de configurar el acceso, a continuación imagen de demostración del DASHBOARD del Cluster Kubernetes.

Kubernetes Dashboard


🚀 3. Creación de Namespaces

  • En Kubernetes, un namespace se usa para separar recursos dentro del cluster (pods, services, deployments, etc.). Es muy común para separar entornos, equipos o aplicaciones.

  • Crear namespace con kubectl

Ejecuta:

kubectl create namespace meu-namespace

Ejemplos:

kubectl create namespace treinamento
kubectl create namespace homolog
kubectl create namespace producao
  • Verificar namespaces existentes:
kubectl get namespaces
kubectl get ns
  • Crear recursos en un namespace específico

Ejecuta:

kubectl create deployment nginx --image=nginx -n treinamento

o

kubectl get pods -n treinamento
  • Definir namespace por defecto en kubectl (para no tener que usar -n siempre)

Ejecuta:

kubectl config set-context --current --namespace=treinamento

🚀 4. Creación de Clase de Almacenamiento

  • Kubernetes permite el uso de volúmenes de computación como almacenamiento persistente para pods. Los volúmenes persistentes (PVs) existen independientemente de los pods, lo que significa que un volumen de este tipo persiste incluso después de la eliminación del pod al que está montado. Este PV puede ser montado en otros pods para acceder a los datos almacenados en él. Puedes provisionar PVs dinámicamente, sin necesidad de crearlos manualmente, o estáticamente, usando volúmenes que ya existen en el cluster de computación.

  • Para crear una clase de almacenamiento crearemos un archivo manifest llamado storage-class.yaml, pegaremos el contenido abajo y guardaremos el archivo y saldremos:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: default
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: cinder.csi.openstack.org
parameters:
type: default
  • Este manifiesto describe la clase de almacenamiento por defecto con la política de almacenamiento por defecto. También marca esta política de almacenamiento como predeterminada para el cluster Kubernetes. La política de almacenamiento debe existir en el cluster de computación y ser especificada en las cuotas de almacenamiento del proyecto actual.

  • A continuación ejecuta el siguiente comando:

kubectl apply -f storage-class.yaml
  • Verificar clases de almacenamiento existentes:
kubectl get storageclass
kubectl get sc

🚀 5. Provisionamiento estático de Volúmenes Persistentes

  • En el Panel de Nuvion navegaremos hasta la pantalla de Volúmenes, y luego crearemos un nuevo volumen, haciendo clic en el botón Create Volume:

Select Volume

  • En la ventana que se abre, definiremos el nombre, ejemplo: vg-static-k8s, definiremos el tamaño en Size de 10GB y la Storage Policy será la Default, y luego haz clic en el botón Create:

Criacao Volume

  • Después de crear el nuevo volumen en el panel, haremos clic en él, y en la ventana lateral copiaremos el número de ID de este volumen, y luego pegaremos este número de ID en el archivo manifest de creación de volumen persistente estático.

ID Volume

  • Ahora crearemos nuestro archivo manifest llamado pv-static.yaml para añadir un volumen persistente estático en nuestro cluster, copia el contenido abajo y pégalo en tu archivo, en la línea donde está el campo VolumeHandle pegaremos el ID de nuestro nuevo volumen que fue creado en el panel, luego guarda y sal y cierra:
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: cinder.csi.openstack.org
name: mypv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 10Gi
csi:
driver: cinder.csi.openstack.org
fsType: ext4
volumeHandle: 9a14ca98-5ffa-4e46-9775-3044cb713a60
persistentVolumeReclaimPolicy: Delete
storageClassName: default
  • A continuación ejecuta el siguiente comando:
kubectl apply -f pv-static.yaml
  • Verificar volúmenes persistentes estáticos existentes:
kubectl get pv 

🚀 6. Provisionamiento dinámico de Volúmenes Persistentes

  • Los volúmenes persistentes pueden ser provisionados dinámicamente mediante solicitudes de volúmenes persistentes (PVCs). Un PVC solicita un PV de una clase de almacenamiento, modo de acceso y tamaño específicos. Si existe un PV adecuado en el cluster, se vinculará a la solicitud. Si no existen PVs adecuados, pero pueden ser provisionados, se creará un nuevo volumen y se vinculará a la solicitud. Kubernetes usa un PVC para obtener el PV correspondiente y montarlo en el pod.

Requisitos previos

  • Un pod y la declaración de volumen persistente que utiliza deben existir en el mismo namespace.

  • Crearemos nuestro archivo manifest llamado pv-dinamic.yaml para añadir un volumen persistente dinámico en nuestro cluster, también definiremos un tamaño de 2Gi para este volumen, copia el contenido abajo y pégalo en tu archivo, luego guarda y sal:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: default
  • Este archivo manifest especifica la solicitud de volumen persistente mypvc que requiere de la clase de almacenamiento default un volumen de al menos 1 GiB que pueda ser montado en modo de lectura/escritura por un solo nodo.

  • A continuación ejecuta el siguiente comando:

kubectl apply -f pv-dinamic.yaml
  • Verificar volúmenes persistentes dinámicos existentes:
kubectl get pvc
  • Para eliminar un PVC (PersistentVolumeClaim) usa el comando:
kubectl delete pvc nome-do-pvc -n namespace
  • Ejemplo de creación de un pod nginx con volumen persistente dinámico:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: nginx
ports:
- container: 80
protocol: TCP
volumeMounts:
- mountPath: /var/lib/www/html
name: mydisk
volumes:
- name: mydisk
persistentVolumeClaim:
claimName: mypvc1
  • Ejecuta
kubectl apply -f nginx-mypv-pod.yaml

🚀 7. Ingress Controllers en Kubernetes

  • Para este escenario instalaremos Traefik como ingress controller de nuestro cluster Kubernetes.

  • Para instalar Traefik en Kubernetes, utilizaremos el gestor de paquetes Helm para añadir el repositorio oficial, crear un namespace dedicado e instalar el chart.

Pasos para la instalación:

  • Añadir el repositorio Helm:
helm repo add traefik https://helm.traefik.io/traefik
  • Actualizar el repositorio:
helm repo update
  • Crear un namespace dedicado (recomendado):
kubectl create ns traefik
  • Instalar Traefik:
helm install traefik traefik/traefik -n traefik
  • Al concluir la instalación de Traefik en nuestro cluster kubernetes, este devolverá el siguiente mensaje en tu shell, como se muestra en la imagen a continuación:

Install Traefik

  • Verificar si el pod de Traefik está en ejecución en el namespace Traefik:
kubectl get pods -o wide -n traefik

🧠 ¿Dudas?

¡Habla con nuestro equipo de soporte técnico de SaveinCloud!