Documente Academic
Documente Profesional
Documente Cultură
Curs 3
Subiecte tratate
Orchestrare
Docker Swarm – definire de aplicații multi-container care rulează pe mai
multe noduri gazdă.
Docker : Compunere containere
În general :
CONCEPTE :
Aplicație = set de containere care rulează împreună și care partajează
un set de resurse și de canale de comunicare. Fiecare container
include o anumită componentă a aplicației (serviciu).
Service = componentă a aplicației; concept abstract implementat pe
platforme prin rularea aceleiași imagini (și configurare), posibil de mai
multe ori.
Serviciile comunică prin rețea.
Network = abstractizarea capabilității platformei de a stabili rute IP de
comunicare între serviciile din containere.
Docker : Compunere containere
CONCEPTE (cont):
Serviciile pot memora și partaja date persistente.
Volum = sistem de fișiere de nivel înalt montat la container.
Config = fișier montat în container în care sunt definite date de
configurare dependente de contextul de execuție sau de platformă.
(abstractizează diferite resurse și servicii de platformă)
Secret = fișier montat în container în care sunt definite date de
configurare senzitive care nu trebuie să fie expuse oricum.
Explorați exemplul de la :
https://github.com/compose-spec/compose-spec/blob/master/spec.md
Docker : Compunere containere
https://github.com/compose-spec/compose-spec/blob/master/spec.md
În context de dezvoltare :
Comanda Compose up –
- Copiază volumele din containerul vechi în cel nou
- Re-creaza doar containerele care s-au modificat
Compunere
Docker Compose – definire de aplicații simple multi-container ce rulează
pe aceeași gazdă.
Orchestrare
Docker Swarm – definire de aplicații multi-container care rulează pe mai
multe noduri gazdă.
Orchestrare (gestionare) a unui swarm.
Operații
- Creare swarm
- Instalare servicii ale aplicației în swarm
- Gestionare comportament swarm
Docker : Orchestrare containere
Caracteristici :
Caracteristici (cont.):
6. Rețea multi-host : Se poate specifica o rețea (suprapusă serviciilor).
Managerul asignează automat containerelor adrese din această rețea
la inițializarea sau actualizarea aplicației.
7. Descoperire servicii: Server DNS înglobat : Fiecarui serviciu i se
asignează un nume (DNS) după care poate fi descoperit.
8. Echilibrare încărcare: Porturile de acces la servicii se pot expune unui
load balancer extern. Intern, swarm permite specificarea modului de
distribuire pe noduri a containerelor serviciului.
9. Securitate implicită: Fiecare nod din swarm impune autentificare și
criptare TLS la comunicarea cu alte noduri.
10.Rulare actualizări: Se pot aplica incremental actualizări ale serviciului
la noduri. Managerul swarm permite controlul asupra întârzierilor între
instalarea serviciului pe diferite noduri. Dacă apar probleme se poate
face rollback la o versiune anterioară a serviciului.
Docker : Orchestrare containere
Swarm - grup de mașini pe care rulează Docker Engine în mod swarm (SwarmKit
integrat în Docker Engine)
Node - instanță de Docker engine participantă la un swarm :
- manager – gestionează resursele cluster și delegarea taskurilor la noduri worker
- worker – execută task-uri (rulează serviciu swarm) și notifică managerul referitor la stare.
OBS. Operatorul poate actualiza dinamic rolul unui nod.
Nodurile manager
- execută operații de orchestrare și de administrare cluster cu scopul de a
menține starea definită pentru swarm.
- aleg unul din nodurile manager pentru a conduce activitățile de orchestrare
- implicit pot fi concomitent și noduri worker
Nodurile worker
- recepționează și execută task-urile distribuite de noduri manager
- pe fiecare nod rulează un agent care notifică nodul manager despre starea
curentă a task-urilor care îi sunt asignate.
https://docs.docker.com/engine/swarm/key-concepts/
Orchestrare containere – Docker Swarm
https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/
https://docs.docker.com/engine/swarm/how-swarm-mode-works/services/
Docker : Orchestrare containere
https://docs.docker.com/engine/swarm/how-
swarm-mode-works/services/
Docker : Orchestrare containere
Servicii replicate și
servicii globale.
https://docs.docker.com/engine/swarm/
how-swarm-mode-works/services/
Swarmkit
• descoperire nod,
Avantaje SwarmKit:
• Distribuire: Utilizează algoritmul Raft de stabilire a consensului pentru
coordonarea mai multor componente implicate în luarea de decizii =>
se evită punct unic de cădere.
• Securitate: Comunicarea între noduri și calitatea de membru în
swarm sunt securizate față de exterior; folosește TLS (autentificare nod,
autorizare rol, encriptare date transferate).
• Simplitate: simplu din punct de vedere operațional, minimizează
dependențele de infrastructură, nu necesită bază de date externă.
• Modificare dinamică automată a configurației unui serviciu (inclusiv
rețele și volume la care este conectat) fără restartarea manuală a
serviciului:
• actualizare configurație
• oprire taskuri cu configurare veche
• creare taskuri cu configurare nouă.
Subiecte tratate
COMPONENTE https://kubernetes.io/docs/concepts/overview/components/
CONCEPTE
Workload – aplicație ce rulează pe Kubernetes, într-un set de Pods.
Workload resource – resursă pentru creare și gestionare Pods.
CONCEPTE
Pod – conține și administrează unul sau mai multe containere în care este
instalată o instanță de aplicație.
Replica Set – gestionează instanțe multiple ale unei aplicații
• scalare
• toleranță la defecte – la căderea infrastructurii unui Pod se crează
alt Pod, iar dacă Pod-ul căzut revine, Kubernetes va elimina un Pod
pentru a păstra același număr de instanțe ale aplicației
• Modificare aplicație – creare n Pods cu noua versiune și păstrarea
celor anterioare până la eliminarea lor explicită
Deployment - gestionează instanțe multiple ale unei aplicații
• Utilizare Replica Sets pentru gestionare replici => scalare și
toleranță la defecte
• Facilități suplimentare orientate pe evoluția aplicației
Kubernetes : Orchestrare
Pod – conține și administrează unul sau mai multe containere în care este
instalată o instanță de aplicație.
Replica Set – gestionează instanțe multiple ale unei aplicații
Deployment - gestionează instanțe multiple ale unei aplicații
• Utilizare Replica Set pentru gestionare replici => scalare și toleranță
la defecte.
• Facilități suplimentare orientate pe evoluția aplicației
• Creare n Pods gradual în compensare cu eliminarea celor din
vechea versiune. (2 seturi de replici : old și new)
• Verificarea fiecărui container al noii versiuni pe măsură ce este
creat
• Eroare la container nou creat => păstrarea vechii versiuni a
acestuia și oprire instalare (deployment)
• Rollback deployment – inversare semnificație seturi de replici și
eliminare/recreare containere gradual.
Experiment
LAB – Experimentați :
https://docs.docker.com/get-started/orchestration/
https://docs.docker.com/get-started/swarm-deploy/
https://docs.docker.com/get-started/kube-deploy/
Studiați :
https://semaphoreci.com/blog/2017/09/13/continuous-integration-with-
docker-compose.html
• CICD_with_Docker_Kubernetes_Semaphore.pdf