🌐 Despliegue de Aplicaciones en el Clúster Kubernetes
Esta guía muestra de forma sencilla cómo Implementar sus aplicaciones en Clúster Kubernetes en Nuvion de SaveinCloud.
🚀 1. Despliegue de Aplicación
Vamos a publicar de forma simple y funcional un Pod Apache en internet por el puerto 80 usando Ingress con Traefik en Kubernetes. La estructura será:
- 1.Pod + Service de Apache
- 2.Ingress usando Traefik
- 3.Prueba de Acceso Externo
- Crear el Pod Apache con archivo apache-pod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: apache
spec:
replicas: 3
selector:
matchLabels:
app: apache
template:
metadata:
labels:
app: apache
spec:
terminationGracePeriodSeconds: 0
tolerations:
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 2
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 2
containers:
- image: httpd
imagePullPolicy: IfNotPresent
name: apache
ports:
- containerPort: 80
protocol: TCP
-Aplicar:
kubectl apply -f apache-pod.yaml
-Verificar:
kubectl get pods
kubectl get pods -o wide
- Crear el Service para exponer el Pod con archivo apache-service.yaml
- El Ingress no apunta directamente al Pod, él apunta al Service.
apiVersion: v1
kind: Service
metadata:
name: apache-service
spec:
selector:
app: apache
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
-Aplicar:
kubectl apply -f apache-service.yaml
-Verificar:
kubectl get svc
- Crear Ingress usando Traefik con archivo apache-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: apache-ingress
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: treinamento.seudominio.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: apache-service
port:
number: 80
-Aplicar:
kubectl apply -f apache-ingress.yaml
-Verificar:
kubectl get ingress
-Ejemplo de salida:

- Verificar si Traefik está en ejecución:
kubectl get pods -A | grep traefik
kubectl get svc -A | grep traefik
- En el Panel Nuvion, podemos navegar hasta la pantalla de Load Balancers y notar que se creó un Load Balancer Traefik, para los puertos TCP/80 y TCP/443 con estado Activo y 3 miembros para cada uno, también podemos validar que tiene IP privada y en el siguiente paso crearemos y asociaremos un Floating IP (IP Pública) para que con esta IP pública podamos crear un registro A en nuestra Zona DNS y apuntar a nuestro subdominio. Con el subdominio respondiendo, los usuarios ya podrán acceder a la aplicación web.

-
En el Panel Nuvion navegue hasta la pantalla de Floating IPs y agregue un nuevo Floating IP para nuestro Load Balancing Traefik haciendo clic en el botón + Add Floating IP:
-
Seleccione la red public
-
Asociamos esta nueva IP a nuestro Load Balancing
-
En IP address seleccione la red Private
-
Haga clic en el botón ADD para crear

- Configurar DNS - Cree un registro A apuntando a la IP del Clúster:
apache.seudominio.com -> IP_DO_NODE_TRAEFIK
- O probar vía /etc/hosts:
IP_PUBLICO treinamento.seudominio.com
- Probar el Acceso:
curl http://treinamento.seudominio.com
- O abrir en el navegador (Debe aparecer la página estándar de Apache It Works!)
http://treinamento.seudominio.com

- Captura con la Arquitectura Final de este simple proyecto:

🚀 1. Solución de Problemas en Kubernetes
Estos son los comandos más usados para solución de problemas en un clúster. Ayudan a investigar problemas de pods, nodos, red, almacenamiento, eventos y logs.
- Verificar el estado general del Clúster:
kubectl cluster-info
kubectl cluster-info dump
kubectl get componentstatuses
kubectl get nodes
kubectl get namespaces
- Resumen Completo:
kubectl get all -A
- Debug avanzado con contenedor temporal:
kubectl debug pod/pod-name -it --image=busybox
- Comando más usado para solución rápida de problemas:
kubectl describe pod pod-name && kubectl logs pod-name
- Reiniciar Pods / Deployments
kubectl rollout restart deployment deployment-name
- Ver estado del rollout:
kubectl rollout status deployment deployment-name
-
Solución de problemas de Pods
-
Ver detalles completos del pod:
kubectl describe pod pod-name
- Ver logs del contenedor:
kubectl logs pod-name
- Logs en tiempo real:
kubectl logs -f pod-name
- Logs del contenedor anterior (cuando reinicia):
kubectl logs pod-name --previous
🧠 ¿Dudas?
¡Hable con nuestro equipo de soporte técnico de SaveinCloud!