kubectl delete usuwa zasoby z klastra Kubernetes — pody, deploymenty, serwisy, configmapy, cokolwiek API zna. Możesz wskazać zasób po typie i nazwie, podać plik manifestu (ten sam, którym tworzyłeś zasób przez kubectl apply), albo zgarnąć całe grupy po etykietach. Domyślnie kasowanie jest „miękkie”: Kubernetes wysyła zasobowi sygnał, daje czas na uprzątnięcie się (graceful termination) i dopiero potem go usuwa.
Składnia i najważniejsze opcje
Podstawowa forma to kubectl delete TYPE NAME lub kubectl delete -f plik.yaml.
-f, --filename— usuwa zasoby opisane w pliku, katalogu lub URL (możesz powtórzyć flagę).-l, --selector— usuwa wszystko pasujące do etykiet, np.-l app=nginx.--all— kasuje wszystkie zasoby danego typu w przestrzeni nazw (uważaj!).-n, --namespace— wskazuje przestrzeń nazw; bez tego działasz wdefault.--grace-period— sekundy na łagodne zamknięcie;0tylko razem z--force.--force— natychmiast usuwa zasób z API, pomijając graceful shutdown.--cascade— strategia usuwania zależności:background(domyślnie),foregroundluborphan.--field-selector— filtr po polach, np.--field-selector status.phase=Running.
Przykłady użycia
kubectl delete pod nginx-abc123— usuwa pojedynczy pod po nazwie.kubectl delete -f deployment.yaml— kasuje dokładnie te zasoby, które utworzył ten manifest.kubectl delete pods -l app=nginx— usuwa wszystkie pody z etykietąapp=nginx.kubectl delete deployment web -n produkcja— usuwa deployment w przestrzeniprodukcja(a z nim podległe pody).kubectl delete pod nginx-abc123 --grace-period=0 --force— wymusza natychmiastowe usunięcie zawieszonego poda.
Częste błędy i pułapki
--all to klasyczna mina: kubectl delete pods --all wymiata wszystkie pody w bieżącej przestrzeni nazw, a jeśli zapomnisz -n, możesz trafić nie tam, gdzie myślisz. Pamiętaj, że usunięcie poda zarządzanego przez deployment nic nie da na dłużej — kontroler natychmiast odtworzy go z ReplicaSet; kasuj wtedy deployment, nie pod.
--force --grace-period=0 brzmi jak panaceum na zawieszony pod, ale usuwa wpis z API zanim kubelet faktycznie sprzątnie kontener — przy StatefulSet czy zasobach trzymających dane grozi to niespójnością. Używaj go świadomie, nie odruchowo. Jeśli boisz się o efekt, dodaj --dry-run=client i zobacz, co poleciałoby, zanim naciśniesz Enter.
Powiązane komendy: kubectl apply, kubectl get, kubectl describe, kubectl scale, kubectl rollout.