Ejercicios de K8s.
Primer taller de la unidad de Kubernetes.
Creado en February 10, 2023.
Tabla de Contenido.
Vamos a crear nuestro primer Pod, y para ellos vamos a desplegar una imagen que nos ofrece un servidor web con una página estática. Para ello realiza los siguientes pasos:
Crea un fichero yaml con la descripción del recurso Pod, teniendo en cuenta los siguientes aspectos:
-
Indica nombres distintos para el Pod y para el contenedor.
-
La imagen que debes desplegar es iesgn/test_web:latest.
-
Indica una etiqueta en la descripción del Pod.
El contenido del fichero es el siguiente:
apiVersion: v1
kind: Pod
metadata:
name: pod-t1
labels:
app: nginx
service: web
spec:
containers:
- image: iesgn/test_web:latest
name: contenedor-t1
imagePullPolicy: Always
Crea el Pod.
Para crear el pod usamos el siguiente comando:
alemd@debian:~/minikube$ kubectl create -f pod-t1.yaml
pod/pod-t1 created
Comprueba que el Pod se ha creado y está corriendo.
Para comprobar que el pod está creado usamos el siguiente comando:
alemd@debian:~/minikube$ kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-t1 0/1 ImagePullBackOff 0 2m11s
Obtén información detallada del Pod creado.
Con el siguiente comando vemos información detallada del pod:
alemd@debian:~/minikube$ kubectl describe pod pod-t1
Name: pod-t1
Namespace: default
Priority: 0
Service Account: default
Node: minikube/192.168.39.178
Start Time: Fri, 10 Feb 2023 08:47:38 +0100
Labels: app=nginx
service=web
Annotations: <none>
Status: Running
IP: 10.244.0.4
IPs:
IP: 10.244.0.4
Containers:
contenedor-t1:
Container ID: docker://0dca5570cfa08f80d86a65045f964124dc1c994a7be10885e75a5015dee87904
Image: iesgn/test_web:latest
Accede de forma interactiva al Pod y comprueba los ficheros que están en el DocumentRoot (usr/local/apache2/htdocs/).
Los comandos ejecutados son los siguientes:
alemd@debian:~/minikube$ kubectl exec -it pod-t1 -- /bin/bash
root@pod-t1:/usr/local/apache2# ls
bin build cgi-bin conf error htdocs icons include logs modules
root@pod-t1:/usr/local/apache2# cd htdocs/
root@pod-t1:/usr/local/apache2/htdocs# ls
index.html
Crea una redirección con kubectl port-forward utilizando el puerto de localhost 8888 y sabiendo que el Pod ofrece el servicio en el puerto 80. Accede a la aplicación desde un navegador.
Muestro el comando usado para redireccionar el puerto:
alemd@debian:~/minikube$ kubectl port-forward pod-t1 8888:80
Forwarding from 127.0.0.1:8888 -> 80
Forwarding from [::1]:8888 -> 80
Handling connection for 8888
Muestro una captura accediendo por el puerto 8888.
Muestra los logs del Pod y comprueba que se visualizan los logs de los accesos que hemos realizado en el punto anterior.
El comando para mostrar los logs el siguiente:
alemd@debian:~/minikube$ kubectl logs pod-t1
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.244.0.4. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.244.0.4. Set the 'ServerName' directive globally to suppress this message
[Fri Feb 10 07:50:08.134095 2023] [mpm_event:notice] [pid 1:tid 140490452923520] AH00489: Apache/2.4.46 (Unix) configured -- resuming normal operations
[Fri Feb 10 07:50:08.135109 2023] [core:notice] [pid 1:tid 140490452923520] AH00094: Command line: 'httpd -D FOREGROUND'
127.0.0.1 - - [10/Feb/2023:07:55:18 +0000] "GET / HTTP/1.1" 200 2884
127.0.0.1 - - [10/Feb/2023:07:55:19 +0000] "GET /favicon.ico HTTP/1.1" 404 196
127.0.0.1 - - [10/Feb/2023:07:57:24 +0000] "GET / HTTP/1.1" 200 2884
127.0.0.1 - - [10/Feb/2023:07:57:24 +0000] "GET /favicon.ico HTTP/1.1" 404 196
Elimina el Pod, y comprueba que ha sido eliminado.
La instrucción usada para eliminar el pod es:
alemd@debian:~/minikube$ kubectl delete pod pod-t1
pod "pod-t1" deleted
Muestro los pods para verificar que se ha borrado:
alemd@debian:~/minikube$ kubectl get pod
No resources found in default namespace.
Documento realizado por:
✒️ Alejandro Montes Delgado - 2º ASIR
Siguiente post
Cortafuegos I: De nodo con iptables.
Post anterior.