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.