Red de conocimiento informático - Aprendizaje de programación - Guía de aplicación práctica de Spring Boot de implementación de K8s

Guía de aplicación práctica de Spring Boot de implementación de K8s

Tener cierta comprensión de k8s y comprender los conceptos específicos de Pod, implementación, servicio y portal

Preparar un entorno k8s utilizable

Preparar un despliegue El más pequeño La unidad de una aplicación Spring Boot es un Pod, que es un conjunto de contenedores en ejecución. ¿Cómo funcionan los contenedores? Construyendo la imagen. (Actualmente, la tecnología de contenedores que utilizamos se basa en Docker)

Hagamos una imagen juntos

Empaquetamos un proyecto ejecutable en un archivo jar y creamos un archivo DockerFile, colocamos DockerFile y. jar en el mismo directorio y escribe DockerFile

Ejecuta el comando generar imagen

docker build -f ./DockerFile -t "/test/helloworld-server:v1 " . >

Ver las imágenes de la ventana acoplable

Ejecute la imagen para ver si es normal que 9000 sea el puerto de acceso al host

docker run -p 9000: 8080 /test/helloworld. -server :v1

Acceda a localhost:9000 a través de curl o navegador. Si es normal, la imagen se creó correctamente. Comience a preparar la carga en el almacén. , debe determinar si ha iniciado sesión. Si no ha iniciado sesión, ejecute: dirección del repositorio de inicio de sesión de Docker

Si el almacén utiliza la etiqueta de puerto, el formato del nombre se cambia a:

Dirección/almacén/nombre del almacén,

por ejemplo, Harbor.com/test /helloword-service

Modificar etiqueta de imagen

docker tag lt imageidgt; .com/test/helloworld-server:v1

Subir imagen

docker push reg.com/test/helloworld-server:v1

Después de subir la imagen , puede iniciar sesión en el almacén para comprobar si la carga se realizó correctamente.

Crear implementación.yaml

Ejecutar kubectl apply -f implementación.yaml

Verificar si el pod se creó correctamente y está en estado listo

kubectl get pod -o wide

Si no, utilice el registro o la descripción para comprobar si el pod se creó correctamente.

kubectl get pod -o wide

Si el pod no se crea correctamente, verifique el registro o describe para comprender el motivo

kubectl describe pod pod- namexxxxx

Después de reiniciar, la IP del pod cambiará, por lo que para tener acceso fijo al pod, existe el concepto de servicio

El servicio está vinculado al. service Accedemos al pod a través del servicio para acceder al pod. El servicio puede entenderse como un controlador de tráfico de equilibrio de carga dentro del clúster, luego comenzamos a crear servicios

Crear servicios.

ymal

Usamos el tipo de servicio NodePort. Yaml no declara nodePort, por lo que k8s creará un nodePort (30000-40000) de forma predeterminada y luego podremos acceder al servicio a través de la IP del nodo más nodePort.

kubectl apply -f service.yaml

Verifique nodePort kubectl get svc -o -wide

curl node ip: nodePort para verificar si el servicio está enrutado a En el pod, el enrutamiento de servicios es para uso interno, por lo que también debemos proporcionar otro método de acceso externo, que es Ingress (hay otros métodos de acceso, este capítulo usa Ingress. Luego, los siguientes dos pasos son crear Ingress

).

ingress.ymal

kubectl apply -f ingress.ymal

Instalar el controlador de ingreso

Compruebe si el pod del controlador de ingreso se creó correctamente. Necesitas extraer la ventana acoplable manualmente.

Configure el nodoIP del host helloserver.com, al que se puede acceder a través de curl helloserver.com: controlador de ingreso nodePort. Puede configurar el proxy HA para resolver el problema sin agregar un puerto

Ver el controlador de ingreso nodePort

kubectl get svc -o -wide -n ingress-nginx

En este punto, se ha configurado todo el proceso de acceso. Si aún no puede funcionar normalmente después de la configuración

Se ha completado todo el proceso de acceso.

Si aún no está disponible

, podemos solucionar el problema paso a paso

Enlazamiento

Comprueba si el pod funciona correctamente

p>

kubectl describe pod lt; nombre del pod;

Compruebe que el servicio esté correctamente vinculado al pod para que se pueda acceder al pod desde el servicio. Puntos finales

kubectl describe el servicio lt;service-name> | grep Puntos finales

Un punto final es un par de lt;dirección IP:puerto>, cuando un servicio (al menos) se dirige a un pod, el servicio no puede acceder al pod. Hay al menos un par

Verifique la configuración de ingreso

kubectl describe ingress lt;ingress-namegt

Si puede ver el punto final en /Backend; /columna pero si aún no puedes acceder a la aplicación, entonces puede haber un problema:

Si no sabes dónde está el punto final y no puedes acceder a la aplicación, entonces puedes No accede a la aplicación. p>

La resolución de problemas en Kubernetes puede ser una tarea desalentadora si no tienes ni idea.

Siempre debes recordar resolver los problemas en orden de abajo hacia arriba: revisa los Pods ahora y luego continúa hasta Servicios e Ingresos.