GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak zobrazit protokoly Kubernetes Pod pomocí Kubectl

Zobrazení protokolů Pod je často prvním krokem při diagnostice problému s pracovní zátěží vašeho clusteru. Zde je návod, jak použít Kubectl k živému streamování protokolů do vašeho terminálu, což vám umožní zkontrolovat výstup z vaší aplikace.

Začínáme

Ujistěte se, že máte Kubectl nainstalovaný a připojený ke svému clusteru. Soubor Kubeconfig můžete určit nastavením KUBECONFIG proměnná prostředí ve vašem shellu:

export KUBECONFIG=~/.kube/my-cluster.yaml

Poté pomocí Kubectl vypište své Pody:

kubectl get pods

Nezapomeňte přidat --namespace příznak, když vaše moduly žijí mimo výchozí jmenný prostor:

kubectl --namespace my-namespace get pods

Přidání dočasného aliasu do vašeho shellu je dobrý způsob, jak zkrátit tento krok, což vám pomůže spustit několik příkazů ve stejném jmenném prostoru:

alias k="kubectl --namespace my-namespace"

k get pods

Přístup k protokolům podu

kubectl logs příkaz vám umožní zkontrolovat protokoly vytvořené pojmenovaným Pod:

kubectl logs pod-name

Stávající protokoly modulu budou odeslány do vašeho terminálu. Pokud je modul vytvořen z více než jednoho kontejneru, musíte také zadat název kontejneru, který chcete zkontrolovat:

kubectl logs pod-name container-name

Případně nastavte --all-containers příznak zahrnout čáry log vytvořené kterýmkoli z kontejnerů v modulu. Pozor, můžete vidět podrobný a opakující se výstup, když je tento příznak použit proti zaneprázdněnému modulu:

kubectl logs pod-name --all-containers

Můžete také získat protokoly ze sady podů s daným štítkem. To vám umožní agregovat protokoly z různých modulů za předpokladu, že všechny sdílejí stejný štítek:

kubectl logs -l my-label=my-value --all-containers

Protokoly nepřetržitého streamování

Prostý logs příkaz vygeneruje aktuálně uložené protokoly modulu a poté se ukončí. Přidejte -f (--follow ) příznak k příkazu, abyste mohli sledovat protokoly a živě je streamovat do vašeho terminálu.

Kubectl bude vysílat každý nový řádek protokolu do vašeho terminálu, dokud příkaz nezastavíte pomocí Ctrl+C. To je ekvivalentní použití tail -f se souborem místního protokolu v nekontejnerovém prostředí.

Zobrazení starších protokolů

kubectl logs nezahrnuje klády vytvořené starými kontejnery, které byly kdysi členy Pod, ale od té doby byly nahrazeny. K těmto protokolům lze přistupovat přidáním -p (--previous ) příznak.

Kubectl poté zobrazí celý uložený protokol pro Pod, včetně čar, které byly emitovány kontejnery, které byly mezitím ukončeny.

Získávání posledních protokolů

Někdy nemusíte vidět celý stream protokolu. Kubectl podporuje --since příznak, který povrchy zaznamená řádky emitované po daném čase:

kubectl logs pod-name --since=2h

Tento příkaz zobrazí výstup protokolu z pod-name který byl vyroben během posledních dvou hodin. Další varianta, --since-time , podporuje řetězec časového razítka v souladu s RFC3339 namísto výrazu relativního času uvedeného výše.

--tail příznak je další možností pro zhuštění protokolů. To omezuje počet zobrazených řádků, čímž se vyhnete plnému terminálu, když potřebujete vidět pouze velmi aktuální výstup:

# Shows the last 10 lines of the log
kubectl logs pod-name --tail=10

Kubectl ve výchozím nastavení nezobrazuje časová razítka linek, protože mnoho aplikací je již obsahuje ve svém protokolu. Přidejte --timestamps příznak, aby Kubectl přidal časová razítka na začátek řádků, když je vaše zátěž neposkytuje.

Názvy kontrolovaných podů a kontejnerů můžete přidat také k řádkům protokolu. Tato funkce se aktivuje pomocí --prefix vlajka. Lze jej kombinovat s --timestamps pro zobrazení času vytvoření každého řádku a zdroje, ze kterého pochází.

Přístup k protokolům z jiných typů zdrojů

kubectl logs pracuje se zdroji nasazení a úloh kromě modulů:

kubectl logs job/my-job
kubectl logs deployment/my-deployment

Získáte protokoly z prvního kontejneru v rámci úlohy nebo nasazení. Použijte --all-containers příznak k povrchovým protokolům vytvořeným kterýmkoli z odpovídajících kontejnerů. Všechny výše popsané příznaky můžete použít, ať už si prohlížíte modul, nasazení nebo úlohu.

Pokročilejší správa protokolů

Kubectl nezahrnuje způsob, jak filtrovat, vyhledávat nebo transformovat vaše protokoly. Nejlepší je nasměrovat kubectl logs výstup do zavedených terminálových nástrojů, jako je awk , grep nebo sed pro tento účel.

kubectl logs my-pod | grep search-expression

Podobně použijte existující funkce přesměrování ve vašem prostředí k uložení protokolů do souboru:

kubectl logs my-pod > my-pod-logs.txt

Přehled

Kubectl vám umožňuje přistupovat k protokolům z vašich zdrojů buď na základě kontejnerů, nebo souhrnně. Můžete si zobrazit snímek aktuálně shromážděných protokolů, neustále streamovat nové linky do vašeho terminálu a přistupovat k historickým linkám vydávaným ukončenými kontejnery.

Příkaz je dodáván s některými omezenými možnostmi přizpůsobení, včetně omezovače počtu řádků a zjednodušeného filtrování data. Když je potřeba náročnější analýza, převeďte výstup do příkazů Unixového terminálu, abyste rychle analyzovali své protokoly a našli příčiny chyb ve vašich aplikacích.

Kubectl shromažďuje protokoly ze standardního výstupu a chybových proudů vašich kontejnerů. Je důležité zajistit, abyste výstup do těchto streamů zapsali správně, protože nesprávně nakonfigurovaný kontejner bude mít za následek prázdný výstup při spuštění kubectl logs .


Docker
  1. Jak nainstalovat Kubernetes s Minikube na Ubuntu 20.04

  2. Jak zobrazit minulý výkon se sar v Linuxu

  3. Jak zadat pod jako root?

  1. Jak zobrazit protokoly Apache Access &Error Logs

  2. Jak prohlížet a číst soubory protokolu Linux

  3. Jak kopírovat soubory mezi Kubernetes Pods a vaším počítačem

  1. Jak vygenerovat certifikát s vlastním podpisem pro Kubernetes

  2. Jak nastavit Kubernetes Cluster pomocí Rancher

  3. Jak nasadit Redis Cluster na Kubernetes