Ako je broj replika postavljen na 100, a potražnja premala, čak i tada će 100 mahuna biti pokrenuto. To rezultira rasipanjem procesora i memorijskih resursa. Da, nudi pouzdanost, u smislu da ako čvor padne i mahune u njemu umru, kontroler Replica Set pokušat će vratiti broj mahuna na 100 mriješćenjem mahuna u drugim čvorovima. Aplikacija ostaje na mreži.
U apstraktnijem smislu, Set replika pokušao bi postići željeno stanje klastera i pogledao bi Trenutna država i shvatiti kako može postići željeno stanje.
Međutim, željeli bismo nešto malo osjetljivije na stvarnu potražnju. Unesi Vodoravni autoskaler pod. Posao Horizontal Pod Autoscalera je povećati aplikaciju kada za to postoji potreba, a zatim je smanjiti natrag kad pad opterećenja padne.
Zašto koristiti Horizontal Pod Autoscaler?
Kao što naziv sugerira, ova bi komponenta automatski skalirala vašu aplikaciju. U oblaku vam ovo stvarno može pomoći da smanjite računske i memorijske resurse koji će vam biti naplaćeni. Budući da je Autoscaler osjetljiv na iskorištavanje resursa, kada vidi da puno mahuna besposleno sjedi, smanjuje aplikaciju, a kada se povećava potražnja za tim mahunama, skalira aplikaciju stvaranjem novih mahuna i teret se raspoređuje na oni.
Može vam uštedjeti dragocjeno vrijeme i računske resurse. Nećete morati brinuti o tome koliki će biti broj replika za vaše mahune prilikom pisanja implementacije, autoskaler će to upravljati umjesto vas.
Početno postavljanje
Prvi i najvažniji zahtjev bio bi da imate pokrenutu Kubernetes klaster. Koristite Katacoda igralište koje je savršeno za eksperimentiranje i učenje o Kubernetesu. Sljedeće što biste trebali je metrički poslužitelj.
Ovaj dodatak vašem Kubernetesovom sustavu (prostor imena sistema kube) prikupit će mjerne podatke poput CPU-a i upotrebe memorije iz dvije različite perspektive:
- Resurs koji koristi svaka mahuna
- Resurs potrošen na svakom čvoru
Mjerni podaci iz obje perspektive presudni su u pomaganju Autoscaleru da odluči koji bi trebao biti sljedeći potez. Da biste dodali metrički poslužitelj u svoj Kubernetes klaster, slijedite ovaj vodič. Sada smo spremni vidjeti Horizontal Pod Autoscaler na djelu.
Korištenje Autoscalera
Da bismo vidjeli kako Autoscaler radi, potrebna nam je testna aplikacija. Stvorimo jednostavan php-apache poslužitelj i izložimo ga kao uslugu.
$ kubectl pokreni php-apache --image = k8s.gcr.io / hpa-primjer --requests = cpu = 200m --expose--luka = 80
Ovdje korištena slika jedna je od primjera slika koje pruža projekt Kubernetes. Izvodi neke CPU intenzivne zadatke i čini postupak mnogo vidljivijim na taj način.
Da bismo autoskalirali ovu implementaciju, moramo obavijestiti autoskeler koliki je minimalni i maksimalni broj podsklopova koje ćemo dopustiti i postotak CPU-a koji smiju koristiti. Mnogo je više čimbenika koje možete uzeti u obzir poput memorije, pohrane i mreže.
$ kubectl autoscale implementacije / php-apache --cpu-postotak = 50 --min = 1 --max = 10Budući da nitko ne koristi ovu uslugu, u trenutnom će stanju najviše voljeti ostati na minimalnoj vrijednosti. Možete provjeriti stanje sve autoskalirane implementacije u zadanom prostoru imena pokretanjem:
$ kubectl dobiti hpaIME REFERENCE CILJEVI MINPODS MAXPODS REPLIKE DOBA
implementacija php-apache / php-apache 0% / 50% 1 10 1 2m
Generiranje opterećenja i testiranje značajke automatskog mjerenja
Možete vidjeti da je broj replika još uvijek samo jedan, a opterećenje procesora neznatno nisko. Možemo stvoriti dodatno opterećenje i vidjeti kako autoskeler odgovara na to. Usluga koja izlaže naše php-apache mahune nije izložena vanjskom svijetu, pa ćemo stvoriti privremenu mahunu i otvoriti interaktivnu sesiju ljuske u toj mahuni.
To će nam omogućiti komunikaciju sa svim uslugama dostupnim u klasteru, uključujući uslugu php-apache.
$ kubectl run -i --tty busybox --image = busybox --restart = Nikad - sh/ #
Primijetit ćete da će se upit promijeniti što znači da smo unutar ovog spremnika. Pokušajmo sada opteretiti našu uslugu opetovanim podnošenjem zahtjeva. U novom retku pokrenimo sljedeću petlju while:
/ # dok je istinito; učinite wget -q -O- http: // php-apache.zadano.svc.Klastera.lokalno; gotovoOtvorite novi terminal, jer još uvijek ne možemo dopustiti da se ova petlja završi. Nakon pregleda autoskelera vidjet ćete iskorištenost CPU-a, a na popisu podova vidjet ćete da sada postoji više primjeraka php-apache poslužitelja,
$ kubectl dobiti hpaIME REFERENCE CILJEVI MINPODS MAXPODS REPLIKE DOBA
php-apache Implementacija / php-apache 121% / 50% 1 10 4 1h
$ kubectl dobiti mahune
IME SPREMNI STATUS VRAĆA DOBU
busybox 1/1 Trčanje 0 6m
php-apache-8699449574-7qwxd 1/1 Trčanje 0 28s
php-apache-8699449574-c9v54 1/1 Trčanje 0 10h
php-apache-8699449574-h9s5f 1/1 Trčanje 0 28s
php-apache-8699449574-sg4hz 1/1 Trčanje 0 28s
Prekinite while petlju i broj mahuna smanjit će se na jedan za nekoliko minuta.
Zaključak
Dakle, to je jednostavna demonstracija Horizontal Pod Autoscalera. Ne zaboravite imati funkcionalni poslužitelj mjernih podataka za svoj klaster i tijekom stvaranja implementacije držite broj replika na 1. Za ostalo će se pobrinuti vodoravni autoskaler mahuna.