Kubernetes utilizează fișiere de configurare numite manifeste pentru a defini modul în care aplicațiile, containerele și serviciile ar trebui să ruleze în cadrul unui cluster. Aceste fișiere sunt scrise de obicei în format YAML și permit administratorilor și dezvoltatorilor să implementeze infrastructura în mod consecvent și automat.
Un manifest Kubernetes poate descrie numeroase resurse diferite, printre care:
- Poduri
- Implementări
- Servicii
- ConfigMaps
- Secrete
- Reguli Ingress
- Volume persistente
Mai jos este prezentat un exemplu simplu de configurare a unui Pod Kubernetes.
apiVersion: v1
kind: Pod
metadata:
name: example-pod
labels:
app: my-application
spec:
containers:
- name: application-container
image: my-application:latest
ports:
- containerPort: 80
Cuprins
Înțelegerea configurației
apiVersion
Câmpul apiVersion specifică ce versiune a API-ului Kubernetes trebuie utilizată pentru resursă.
apiVersion: v1
Pentru resurse de bază, cum ar fi Pod-urile, versiunea cea mai des utilizată este v1.
kind
Câmpul kind definește tipul resursei Kubernetes care se creează.
kind: Pod
În acest exemplu, Kubernetes va crea un singur Pod.
metadata
Secțiunea de metadate conține informații de identificare despre resursă.
metadata:
name: example-pod
labels:
app: my-application
Valorile obișnuite ale metadatelor includ:
- Numele resursei
- Etichete
- Adnotări
- Informații despre spațiul de nume
Etichetele sunt deosebit de utile, deoarece permit altor resurse Kubernetes să identifice Pod-ul și să interacționeze cu acesta.
spec
Secțiunea de specificații definește starea dorită a resursei.
spec:
Aici configurați containerele, stocarea, rețeaua și alte setări de execuție.
containere
Un Pod poate conține unul sau mai multe containere.
containere:
Fiecare container necesită propria configurație.
nume
Numele containerului este utilizat intern de Kubernetes.
nume: application-container
imagine
Câmpul "image" specifică ce imagine de container trebuie descărcată și executată.
image: my-application:latest
În mediile de producție, se recomandă adesea utilizarea unor versiuni specifice ale imaginii în locul etichetei latest.
Exemplu:
image: my-application:v1.2.0
porturi
Secțiunea "ports" definește porturile containerului care trebuie expuse.
ports:
- containerPort: 80
În acest exemplu, aplicația ascultă pe portul 80 din interiorul containerului.
Implementarea manifestului
Salvați configurația într-un fișier, de exemplu:
pod.yaml
Apoi implementați-l folosind:
kubectl apply -f pod.yaml
Kubernetes va crea podul conform configurației.
Verificarea stării Pod-ului
Pentru a verifica dacă Podul funcționează corect:
kubectl get pods
Pentru a vizualiza informații detaliate:
kubectl describe pod example-pod
Pentru a vizualiza jurnalele aplicației:
kubectl logs example-pod
De ce se preferă de obicei Deployments
Deși podurile pot fi create direct, mediile de producție utilizează de obicei Deployments în schimb.
Deployments oferă:
- Recuperare automată
- Actualizări progresive
- Scalare ușoară
- Gestionarea replicilor
O implementare recreează automat podurile defecte și contribuie la asigurarea disponibilității aplicației.
Exemplu de manifest de implementare
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-application
spec:
replicas: 3
selector:
matchLabels:
app: my-application
template:
metadata:
labels:
app: my-application
spec:
containers:
- name: application-container
image: my-application:v1.0
ports:
- containerPort: 80
Această configurație lansează trei poduri identice și înlocuiește automat orice pod care devine indisponibil.
Rezumat
Manifestele Kubernetes sunt fișiere de configurare care definesc modul în care resursele ar trebui să funcționeze în cadrul unui cluster. Exemplul de mai sus ilustrează o configurație simplă de Pod, incluzând metadate, definiții de containere și setări de rețea.
Deși crearea directă a unui Pod este utilă pentru testarea și învățarea Kubernetes, majoritatea mediilor de producție se bazează pe Deployments și Services pentru a oferi scalabilitate, reziliență și o gestionare mai ușoară a aplicațiilor.