În acest curs vom explora modul în care sistemele de operare implementează virtualizarea și containerizarea, conceptele de hypervisor, mașini virtuale (VM), containere și orchestrarea acestora.
Virtualizarea este tehnologia care permite crearea de instanțe multiple de sisteme de operare pe un singur hardware fizic.
- Tipuri de virtualizare:
- Virtualizare hardware: Separarea completă a resurselor fizice (ex: KVM, VMware ESXi).
- Paravirtualizare: OS-ul virtualizat conștientizează faptul că rulează într-un mediu virtualizat (ex: Xen).
- Containere: Partajarea aceluiași kernel pentru mai multe aplicații izolate (ex: Docker, Kubernetes).
- Hypervisor Type 1 vs. Type 2:
- Type 1 (Bare Metal): Rulează direct pe hardware (ex: ESXi, Hyper-V, Xen).
- Type 2 (Hosted): Rulează ca o aplicație în interiorul unui OS gazdă (ex: VirtualBox, VMware Workstation).
- Principalele soluții de virtualizare:
- KVM (Kernel-based Virtual Machine): Implementat în Linux, performant și open-source.
- Xen: Utilizat de AWS pentru instanțele EC2.
- VMware ESXi: Platformă comercială pentru centre de date.
- Microsoft Hyper-V: Hypervisor nativ Windows.
- Crearea și gestionarea unei mașini virtuale:
virt-install --name=ubuntu_vm --ram=2048 --vcpus=2 --disk path=/var/lib/libvirt/images/ubuntu.img,size=20 --os-variant=ubuntu20.04 --network bridge=br0 --graphics none --location http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/
- Diferențe esențiale între containere și VM-uri:
- VM-urile emulează un sistem de operare complet, containerele rulează în cadrul OS-ului gazdă.
- Containerele sunt mai ușoare și pornesc mai rapid decât VM-urile.
- Principalele tehnologii de containerizare:
- Docker: Standard de facto pentru containere.
- Podman: Alternativă rootless la Docker.
- LXC (Linux Containers): Tehnologie avansată pentru virtualizare la nivel de sistem de operare.
- De ce avem nevoie de orchestrare?
- Gestionarea automată a containerelor la scară mare.
- Load balancing, failover și autoscaling.
- Principalele sisteme de orchestrare:
- Kubernetes: Standard industrial pentru orchestrarea containerelor.
- Docker Swarm: Soluție simplă pentru gestionarea clusterelor Docker.
- OpenShift: Soluție enterprise bazată pe Kubernetes.
- Networking și securitatea containerelor:
- Namespace-uri și izolarea rețelei în Kubernetes.
- Politici de securitate pentru containere.
docker build -t myapp .
docker run -d -p 8080:80 myapp
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: myapp
kubectl get pods