---
title: "Logy podov, exec a stav — Kubernetes API for Laravel | Roundly"
description: "Načítajte alebo streamujte logy podov cez PodLogOptions, spúšťajte príkazy v kontajneri cez WebSocket a čítajte stav podov a kontajnerov."
url: https://roundly-consulting.com/sk/open-source/navody/kubernetes-api-for-laravel/logy-exec-a-stav
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Kubernetes API for Laravel](https://roundly-consulting.com/sk/open-source/navody/kubernetes-api-for-laravel.md)

# Logy podov, exec a stav

logs() vráti log podu ako jeden reťazec; streamLogs() je generátor, ktorý ho vydáva riadok po riadku — ideálne na sledovanie bežiaceho kontajnera. S follow: true beží, kým sa kontajner nezastaví alebo kým neuplynie client.stream\_timeout sekúnd bez výstupu — nie timeout požiadavky:

```php
use RoundlyConsulting\KubernetesApi\DataTransferObjects\PodLogOptions;

$pod = $cluster->pods()->setNamespace('shop')->withName('checkout-5f7c9d8b6-x2kqj');

// Fetch logs as a string.
$logs = $pod->logs(new PodLogOptions(container: 'app', tailLines: 200, timestamps: true));

// The previous (crashed) instance of the container, last hour only.
$crash = $pod->logs(new PodLogOptions(container: 'app', previous: true, sinceSeconds: 3600));

// Stream logs line by line (tail). With follow: true it runs until the container stops
// (or client.stream_timeout seconds pass with no output), not the request timeout.
foreach ($pod->streamLogs(new PodLogOptions(container: 'app', follow: true)) as $line) {
    echo $line.PHP_EOL;
}
```

## PodLogOptions

| Voľba | Typ | Predvolené | Účinok |
| --- | --- | --- | --- |
| `container` | ?string | null | Ktorý kontajner čítať v pode s viacerými kontajnermi. |
| `follow` | bool | false | Nechá stream otvorený pre nové riadky (streamLogs() má predvolene true). |
| `tailLines` | ?int | null | Len posledných N riadkov. |
| `sinceSeconds` | ?int | null | Len riadky novšie ako N sekúnd. |
| `timestamps` | bool | false | Každý riadok začne časovou pečiatkou. |
| `previous` | bool | false | Predchádzajúca, ukončená inštancia kontajnera — log z pádu. |
| `limitBytes` | ?int | null | Obmedzí počet vrátených bajtov. |

## Exec

exec() spustí príkaz v kontajneri a vráti ExecResult so zachyteným stdout, stderr a návratovým kódom. Otvára vlastný TLS WebSocket k apiserveru so subprotokolom v4.channel.k8s.io a používa token, certifikáty aj nastavenie overovania klienta:

```php
// Exec a command inside a pod (over a WebSocket; returns stdout, stderr, and exit code).
$result = $cluster->pods()
    ->setNamespace('shop')
    ->withName('checkout-5f7c9d8b6-x2kqj')
    ->exec(['php', 'artisan', 'cache:clear'], container: 'app');

$result->stdout;       // captured standard output
$result->stderr;       // captured standard error
$result->exitCode;     // 0 (null if the stream ended before the command finished)
$result->successful(); // true only for exit code 0
$result->completed();  // false if the connection dropped or client.stream_timeout passed

// Need a shell? Ask for one explicitly.
$cluster->pods()->setNamespace('shop')->withName('checkout-5f7c9d8b6-x2kqj')
    ->exec(['sh', '-c', 'df -h /var/cache && echo done']);
```

- Príkaz odovzdajte ako zoznam argumentov — každý prvok sa pošle ako samostatný parameter command, takže sa nerieši žiadne úvodzovkovanie pre shell. Ak shell potrebujete, obaľte príkaz do \['sh', '-c', '…'\].
- container vyberie kontajner v pode s viacerými kontajnermi; tty: true vyžiada TTY. stdin sa nikdy nepripája.
- Spojenie používa schému, host, port (bez portu 443) aj predponu cesty z URL klastra, takže apiserver za proxy (https://rancher.example/k8s/clusters/c-abc) funguje rovnako ako priamy. Pripojenie má 30-sekundový timeout; chyby spojenia a upgradu vyhodia WebSocketException. Volania exec sa nezapočítavajú do rozpočtu požiadaviek.
- exec() čaká, kým apiserver ohlási exit status príkazu. Ak stream skončí skôr — prerušené spojenie alebo client.stream\_timeout —, exitCode je null a completed() aj successful() vrátia false: nikdy nejde o falošný úspech.

## Stav podu a kontajnerov

Namiesto dekódovania surového stavu kladiete jednoduché otázky — beží pod, sú jeho kontajnery pripravené, prečo sa niektorý reštartoval:

```php
$pod = $cluster->pods()->setNamespace('shop')->withName('checkout-5f7c9d8b6-x2kqj')->find();

$pod->isRunning();             // status.phase === 'Running'
$pod->isSuccessful();          // 'Succeeded'
$pod->hasFailed();             // 'Failed'
$pod->containersReady();       // every container status is ready
$pod->initContainersReady();
$pod->getQos();                // status.qosClass, 'BestEffort' when absent
$pod->getStatusMessage();

$status = $pod->getContainerStatus('app');   // ?ContainerStatus
$status?->getState();          // 'running' | 'waiting' | 'terminated' | 'unknown'
$status?->getStateReason();    // e.g. 'CrashLoopBackOff'
$status?->restarts();          // restart count
$status?->isReady();
$status?->getStartedAt();      // ?Carbon
```

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/kubernetes-api-for-laravel.md)
