Kubernetes viene siendo una forma de gestionar la infraestructura de una o varias aplicaciones en varios proveedores de nube como amazon web services, azure o google cloud
Por infrastructura se quiere decir los servicios(aplicaciones stateless o no), trabajos que se repitan cada x tiempo, bases de datos etc. usualmente se invita a gestionar esta infraestructura en kubernetes como código esto por que tiene algunas ventajas entre ellas:
- que el codigo se puede replicar con increible facilidad, si la infra esta como codigo entonces esta puede ser replicada con extremada facilidad.
- que al código se le puede aplicar un sistema de versionamiento como git que permite controlar los cambios que se hacen y retornar a una versión funcional previa si algo se daña
kubernetes viene a ser parte de un ecosistema mas grande para manipular desde cierto alto nivel aplicaciones que corren en docker o otro(podman etc)
Que busca desde maquinas virtuales(o parecidos como docker) disminuir la incertidumbre en las aplicaciones al darle un ambiente para ejecutarse que se puede replicar y escalar con mayor facilidad.
conozco que kubernetes se usa con archivos de configuracion .yaml del estilo
apiVersion: v1kind: Podmetadata:name: web-declarativelabels:site: blogspec:containers:- name: webimage: nginx:1.18.0
lo que buscan estos archivos es definir como va ser ejecutada una aplicación en el cluster(el cluster es el nombre que se le da a donde se ejecuta por ejemplo en amazon la torre) de kubernetes. estos archivos se aplican en el cluster con un comando como
kubectl apply -f <nombre-archivo>
y apartir de hay kubernetes va mantener una instancia de la aplicacion corriendo(incluso iniciando otra si la primera se cae).
en kubernetes se pueden correr muchos tipos de recursos por ejemplo un recurso Deployment permite que se corran al mismo tiempo varias instancias una aplicacion, aumentando asi posiblemente la disponibilidad. es decir si una aplicacion con los recursos que se le dan solo soporta 500 usos por segundo y llegan 700 usos por segundo se requerirÃan almeno dos aplicaciones corriendo para que el servicio se pueda seguir entregando.
antes de acabar solo comentar que manejar una aplicacion o ambiente por kubernetes puede ser mas complejo que manejarlo sin kubernetes, hay que evaluar pros y contras en cualquier caso, por ejemplo si se requiere alta disponibilidad, escalamiento, solucionar problemas comunes por ambiente. e incluso con un si evaluar soluciones mas sencillas
kubernetes tiene muchÃsimas mas cosas, me parece una herramienta muy robusta y de la que toca aprender mucho para sacarle todo el jugo.
No hay comentarios:
Publicar un comentario