pytanie do ludzi spod #linux napisałem sobie jednolinijkowca do #kubernetes który zwraca w każdej nowej linijce dwa argumenty. jednym z nich jest namespace, a drugim nazwa joba.
kubectl get jobs -A -o=jsonpath='{range .items[?(@.status.failed>0)]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}') Ma on za zadanie wyszukiwać w obrębie całego klastra joby, ze statusem fail. Wydaje mi się, że działa okej (testuje od wczoraj). Generalnie zwraca on taką zawartość :
Teraz potrzebuje dorobić do tego jednolinijkowca usuwanie tych jobów, więc na początku każdej linijki musi być kubectl delete job -n i wtedy te dwa argumenty więc miałoby to wyglądać tak :
kubectl delete job -n namespaceA jobjeden kubectl delete job -n namespaceB jobdwa kubectl delete job -n namespaceC jobtrzy Pewnie w bashu/pythonie bym to jakoś skrobnął, ale zależy mi na tym, żeby wszystko było jedną komendą bo będzie to argument do cron'a. Jakim sposobem można to zrobić w obrębie jednej komendy?? Przypuszczam, że xarg'sem da się to jakoś obrobić, ale pewien nie jestem. Ma ktoś jakieś mądre pomysły/rozwiązanie pod takie coś? #devops #programowanie #informatyka #komputery
@Kryspin013: minimalnie sobie go przerobiłem i dodałem -n jeszcze przy jsonpath i w ramach "testu" co wypluwa ta komenda dorobiłem echo przy xargsie i wypluwa tak :
kubectl get jobs -A -o=jsonpath='{range .items[?(@.status.failed>0)]}{"-n "}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}' | xargs -I JOB echo kubectl delete job JOB
@broothal: Dokładnie, onelinery w cronie to zło, szczególnie, że nie jesteś w stanie przechwycic errorów. Lepiej to ładniej rozpisać w wykonywanym skrypcie
@dict: @broothal: @doddy: upierałem się przy cronie, bo to cronjob kubernetesowy i chciałem korzystać z gotowego obrazu kubectl’a i tego onelinera wcisnąć w yamla do „commands” i miałbym z głowy. Ale jak tak myśle, to chyba zrobię jak mówicie, napisze taki skrypt, przebuduje obraz i wtedy będę tak czyścił ten syf.
napisałem sobie jednolinijkowca do #kubernetes który zwraca w każdej nowej linijce dwa argumenty. jednym z nich jest namespace, a drugim nazwa joba.
kubectl get jobs -A -o=jsonpath='{range .items[?(@.status.failed>0)]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}')
Ma on za zadanie wyszukiwać w obrębie całego klastra joby, ze statusem fail. Wydaje mi się, że działa okej (testuje od wczoraj). Generalnie zwraca on taką zawartość :
namespaceA jobjeden
namespaceB jobdwa
namespaceC jobtrzy
Teraz potrzebuje dorobić do tego jednolinijkowca usuwanie tych jobów, więc na początku każdej linijki musi być
kubectl delete job -n
i wtedy te dwa argumenty więc miałoby to wyglądać tak :kubectl delete job -n namespaceA jobjeden
kubectl delete job -n namespaceB jobdwa
kubectl delete job -n namespaceC jobtrzy
Pewnie w bashu/pythonie bym to jakoś skrobnął, ale zależy mi na tym, żeby wszystko było jedną komendą bo będzie to argument do cron'a. Jakim sposobem można to zrobić w obrębie jednej komendy?? Przypuszczam, że xarg'sem da się to jakoś obrobić, ale pewien nie jestem. Ma ktoś jakieś mądre pomysły/rozwiązanie pod takie coś?
#devops #programowanie #informatyka #komputery
kubectl get jobs -A -o=jsonpath='{range .items[?(@.status.failed>0)]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}') | xargs -I JOB kubectl delete job -n JOB
@krotko_i_zajebiscie: W sumie masz rację, ale pisałem dla OP-a by ogarnął o co chodzi. Zazwyczaj z przyzwyczajenia używam _
kubectl get jobs -A -o=jsonpath='{range .items[?(@.status.failed>0)]}{"-n "}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}' | xargs -I JOB echo kubectl delete job JOB
kubectl delete job -n namespacea qwe
kubectl delete job -n namespaceb was
kubectl delete job -n namespacec sda
kubectl delete job -n namespaced xyz
więc usunąłem echo
Komentarz usunięty przez autora