Teorica 11 (Containers & Kubernetes) Flashcards
Containers & Kubernetes (36 cards)
Que son los containers
permiten que cada aplicacion se ejecute en un entorno propio separado del resto de las aplicaciones que estan en el SO
Que problemas resuelven los containers
Crean un entorno completo que permite la construccion de un paquete para que luego se pueda ejecutar en otro ambiente (deploy & run)
deploy&run sin tener que preocuparse por las dependencias
Se suele usar Docker
Workflow de containers
por un lado hay un entorno (un docker) donde vos haces el build y generas la imagen del container
Una vez que lo construis lo subis a un registry (para distribuirlo)
Despues el que lo quiera lo baja del registry y lo corre
Dockerfile
lo que define la forma en la que se va a construir la imagen de docker
Nomeclatura - container
Container: proceso y ambiente que utilizan la imagen para ejecutar
Nomeclatura - image registry y container runtime
Container Runtime: el que ejecuta el container
Image Registry: repositorio de imagenes
Nomeclatura - image e imageBuilder
image: paquete que incluye todo lo necesario para ejecutar un proceso
imageBuilder: el que genera la imagen
Image layers de los containers
la imagen se construye por capas
el file system que se crea se llama overlay file system
cada capa tiene como dependencia su capa inferior
Todo lo que se escribe durante la ejecucion va a una Layer efimera que se borra al terminar el container
Para que no se pierda es necesario usar un Volume
ejemplo de image layers
python app 1
custom python libs
python 3.8.15
Ubuntu 22.04
(si cambia unicamente la capa app se bajaria solo esa capa)
cual es el registry mas usado
Docker hub es el mas usado y el default (a donde va a ir a buscar las imagenes)
CGroups
control group
restringen el uso del CPU y memoria
Se genera un CGroup de CPU y otro de memoria por container
Se le asigna una cuota a cada CGroup. El container puede usar como maximo esa cantidad de recursos
Namespaces
Generan un entorno acotado para los procesos que corren en el (osea no deberia ver otros procesos que no sean del container)
Siempre hay un namespace default
tipos de namespaces
○ pid - Se asignan pids distintos dentro del NS
○ user - usuarios propios del NS ( root dentro del
container != root dentro del host )
○ uts - hostname que ve el container
○ ipc - interprocess communication
○ mnt - ve su propio FS que es el overlay
○ net - ve su propio stack de red e interfaces
que son Capabilites en los containers
Son los permisos de bajo nivel que tiene cada usuario
El usuario root tmb tiene capabilities (CAP_SYS_ADMIN o CAP_NET_ADMIN)
Algunas capabilities estan limitadas para usuarios dentro de los containers por motivos de seguridad
seccomp_bpf
Maneras de controlar la system calls que puede ejecutar el proceso
Docker bloquea varias system calls peligrosas ( por
ejemplo reboot )
pivot_root
Cambia el root del filesystem a un subdirectorio del host para ese container (para que el filesystem vea el / en donde esta la imagen)
Kubernetes
“Capitan de barco” en griego
Orquestador de containers
Algo que me administra una gran cantidad de containers de forma bastante automatica
yo tengo por un lado un registry y por otro una cierta configuracion que quiero que tenga un grupo de hosts que corran una serie de containers. Kubernetes en el medio intenta hacer que esta configuracion se respete en el grupo de containers
Funcionalidades principales de kubernetes
Rollback & rollout: Instalar algo nuevo o volver a una version anterior
Service Discovery: Configurar las relaciones entre servicios por nombres (como un dns)
Service Load Balancing: balancear pedidos entre servicios
Storage Orchestration: montar volumenes
Self Healing: reiniciar containers caidos, health checks, etc
Horizontal Scaling: Escala automatica o manual en containers
Manejo de config y secretos: guardar de forma segura la configuracion e info sensible
Conceptos principales de kubernetes
Cluster: deployment completo de ckubernetes
Nodo: donde se corren los pods
Pod: la unidad minima de ejecucion puede tener uno o mas container. Es como un container intermedio
Service: la manera de acceder a los podes que implementan algun servicio particular
Componentes de kubernetes
Api server: Interfaz por la que se ejecutan los comandos sobre el cluster
kubectl: interfaz de configuracion y admin de kubernetes. ejecuta los comandos llamando a la api
Controllers (controller manager, scheduler, kubelet): Ejecutan un loop donde checkean el estado de la config, el estado real del sistema , ejecutan acciones para que converjan
etcd: Base de datos key value con config distribuida redundante
Kubeproxy: manejo del networking del nodo en base a la config de iptables
Definicion de objetos en kubernetes
se definen en archivos Manifest con formato YAML
parametros:
- apiVersion de kubernetes
- kind: tipo de objeto
-metadata
Labels kubernetes
Key Values que identifican, describen y agrupan un grupo de objetos
La idea es que apliquen a muchos objetos
Parte de la metadata
Selectors kubernetes
Se usan los labels para especificar a que objetos aplican los comandos u otros objetos
Replica set
Manejo de replicas en los pods
Su mision es asegurar que siempre exista el numero requerido de pods de cadatipo