kubectl replace în Kubernetes (kubectl)

Înlocuiește complet un obiect existent cu definiția din fișier; cu --force îl șterge și îl recreează.

Sintaxă comandă
kubectl replace -f <fișier> [--force] [--grace-period=N]

Ce face kubectl replace

kubectl replace trimite obiectul întreg și îl înlocuiește pe cel din cluster. Spre deosebire de kubectl apply, nu combină modificările: câmpurile care lipsesc din fișier dispar din obiect. Obiectul trebuie să existe deja.

Dacă fișierul conține metadata.resourceVersion (de exemplu a fost obținut cu kubectl get -o yaml), API-ul refuză înlocuirea când obiectul a fost modificat între timp de altcineva, cu o eroare Conflict. Cu --force, obiectul este șters și creat din nou: util pentru câmpuri care nu se pot modifica (de exemplu selectorul unui Job), dar Pod-urile asociate sunt recreate.

Parametri

Parametru Descriere
-f, --filename Fișierul (sau - pentru intrarea standard) cu definiția completă.
--force Șterge obiectul și îl creează din nou.
--grace-period=N Cu --force: câte secunde au Pod-urile să se oprească.
--save-config Salvează configurația în adnotare, pentru folosirea ulterioară a lui apply.
--subresource Înlocuiește o subresursă (de exemplu status).

Exemple

Exemplul 1: Exportare, modificare, înlocuire

Luăm ConfigMap-ul actual, îl edităm local și îl înlocuim.

kubectl get configmap setari-magazin -n magazin -o yaml > setari.yaml
sed -i 's/ORAS: Cluj/ORAS: Iasi/' setari.yaml
kubectl replace -f setari.yaml

Ieșire în terminal

configmap/setari-magazin replaced

Exemplul 2: Conflict: obiectul s-a schimbat între timp

Un coleg a modificat ConfigMap-ul după ce l-ai exportat. Exportă-l din nou și refă modificarea.

kubectl replace -f setari.yaml

Ieșire în terminal

Error from server (Conflict): error when replacing "setari.yaml": Operation cannot be fulfilled on configmaps "setari-magazin": the object has been modified; please apply your changes to the latest version and try again

Exemplul 3: Recrearea unui Job cu –force

Șablonul unui Job nu se poate modifica după creare; cu --force îl ștergem și îl creăm din nou.

kubectl replace --force -f migrare-job.yaml

Ieșire în terminal

job.batch "migrare" deleted
job.batch/migrare replaced

Greșeli frecvente

  • Folosirea unui fișier parțial cu replace: tot ce lipsește (etichete, adnotări, variabile) este șters din obiect. Pentru modificări parțiale folosește apply sau patch.
  • Rularea replace --force pe un Deployment în producție: toate Pod-urile sunt oprite și pornite din nou, deci aplicația este indisponibilă câteva momente.

Comenzi înrudite

  • kubectl patch: Modifică doar câteva câmpuri ale unui obiect existent, direct din linia de comandă, fără să editezi tot manifestul.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: kubectl replace

Ai o nelămurire despre utilizarea comenzii kubectl replace sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.