---
title: "Obmedzenie požiadaviek — Kubernetes API for Laravel | Roundly"
description: "Každá požiadavka na apiserver sa dávkuje pre klaster — predvolene 400 za minútu, s ohľadom na 429 Retry-After a voliteľným stropom čakania."
url: https://roundly-consulting.com/sk/open-source/navody/kubernetes-api-for-laravel/obmedzenie-poziadaviek
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)

# Obmedzenie požiadaviek

Každá požiadavka na apiserver prechádza cez http-client-rate-limits-for-laravel s kľúčom pre každý apiserver: host, port a predponu cesty z URL klastra, takže každý klaster za proxy typu Rancher má vlastný rozpočet. Jeden vyťažený klaster nikdy nezablokuje iný, ani keď všetci klienti používajú rovnaké meno managera, a klienti toho istého apiservera zdieľajú jeden rozpočet bez ohľadu na meno managera či prihlasovacie údaje. API Priority and Fairness v Kubernetes funguje pre každý apiserver zvlášť, takže to priamo zodpovedá tomu, ako server presadzuje vlastné limity.

Predvolene klient pošle najviac 400 požiadaviek za minútu na klaster a všetko nad to dávkuje — počká, kým sa okno uvoľní, namiesto chyby. Pri zapnutom adaptive sa z odpovede 429 od apiservera prečíta hodnota Retry-After a limiter sa podľa nej doladí, takže ďalšia požiadavka počká presne toľko, koľko server žiadal. Nastavíte to cez env:

```bash
KUBERNETES_RATELIMIT=400            # attempts per window, per cluster
KUBERNETES_RATELIMIT_TIMESPAN=minute
KUBERNETES_RATELIMIT_ADAPTIVE=true  # honour 429 Retry-After
# KUBERNETES_RATELIMIT_MAX_WAIT=2000  # ms — fail fast instead of waiting
# KUBERNETES_RATELIMIT_JITTER=250     # ms of random spread per defer
# KUBERNETES_RATELIMIT_OWNER=app
# KUBERNETES_RATELIMIT_ENABLED=false  # the raw, unthrottled client
```

Kľúč rozpočtu je k8s:<owner>:<apiserver>, kde <apiserver> je host URL klastra spolu s neštandardným portom a predponou cesty; cez rate\_limits.owner môže viac aplikácií či workerov rozpočet zdieľať — alebo oddeliť.

Každý kľúč rate\_limits sa číta prísne: nerozpoznaný prepínač, necelé číslo či číslo mimo rozsahu, preklep v timespan alebo owner, ktorý nie je reťazec, vyhodí InvalidConfigurationException s názvom kľúča, namiesto aby sa potichu použila predvolená hodnota; prázdna hodnota sa počíta ako nenastavená a dostane predvolenú hodnotu (pozrite Konfigurácia).

## Okamžitá chyba namiesto čakania

Nastavte strop max\_wait v milisekundách. Ak by požiadavka musela čakať dlhšie, namiesto blokovania vyhodí RateLimitExceededException. Ponúka ->cluster (meno registrovaného klastra, pri ad-hoc klientovi host apiservera) a retryAfterSeconds():

```php
use RoundlyConsulting\KubernetesApi\Exceptions\RateLimitExceededException;

try {
    $cluster->pods()->get();
} catch (RateLimitExceededException $e) {
    report("Cluster {$e->cluster} is throttled; retry in {$e->retryAfterSeconds()}s");
}
```

Výnimka implementuje kontrakt HasRetryAfter z package-toolkit-for-laravel, takže aplikácia môže všetky zlyhania limitov z balíkov Roundly obslúžiť na jednom mieste:

```php
use RoundlyConsulting\PackageToolkit\Contracts\HasRetryAfter;

if ($e instanceof HasRetryAfter) {
    return response('Too Many Requests', 429, ['Retry-After' => $e->retryAfterSeconds()]);
}
```

## Zdieľaný rozpočet medzi workermi

Limiter predvolene používa úložisko v pamäti — pre každý proces zvlášť, čo stačí pre jeden worker alebo CLI beh. Pre rozpočet zdieľaný medzi workermi fronty alebo servermi nasmerujte úložisko podkladového balíka na Cache, Redis alebo databázu (HTTP\_CLIENT\_RATE\_LIMITS\_STORE); tento balík úložisko nevnucuje:

```php
// config/http-client-rate-limits.php — published by the rate-limits package
'store' => RoundlyConsulting\HttpClientRateLimits\Store\RedisStore::class,
```

## Čo sa započítava

Cez limiter prechádzajú operácie so zdrojmi, požiadavky na logy, sledovanie zmien, priame volania request() aj kubernetes:ping; spojenia exec nie a pod Kubernetes::fake() nič. Nastavením KUBERNETES\_RATELIMIT\_ENABLED=false získate klienta úplne bez obmedzenia.

## 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)
