Ahoana ny fomba hitsitsiana ny vidin'ny rahona rehefa miasa amin'ny Kubernetes? Tsy misy vahaolana tokana tokana, fa ity lahatsoratra ity dia mamaritra fitaovana maromaro izay afaka manampy anao hitantana ny loharanonao amin'ny fomba mahomby kokoa sy hampihenana ny vidin'ny informatika rahona.
Nanoratra ity lahatsoratra ity aho niaraka tamin'i Kubernetes ho an'ny AWS ao an-tsaina, fa hampihatra (saika) mitovy amin'ny fomba mitovy amin'ny mpamatsy rahona hafa. Heveriko fa ny cluster (ireo) anao dia efa manana autoscaling voarindra (cluster-autoscaler). Ny fanesorana ny loharanon-karena sy ny fampihenana ny fandefasanao dia hamonjy vola anao raha toa ka mampihena ny andian-tafika mpiasanao (entin'ny EC2).
Tena tsara ny miasa amin'ny tontolo haingana. Mila fikambanana teknolojia izahay haingana. Ny fandefasana rindrankajy haingana kokoa dia midika ihany koa ny fametrahana PR bebe kokoa, ny tontolo iainana, ny prototype ary ny vahaolana analyse. Apetraka ao amin'ny Kubernetes ny zava-drehetra. Iza no manam-potoana hanadiovana amin'ny tanana ny fametrahana fitsapana? Mora ny manadino ny famafana andrana iray herinandro. Hiakatra ny volavolan-dalΓ na momba ny rahona noho ny zavatra adinonay nakatona:
(Henning Jacobs:
Zhiza:
Corey Quinn:
Hevi-diso: Ny kaontinao AWS dia asan'ny isan'ny mpampiasa anananao.
Zava-misy: Ny isa AWS anao dia asan'ny isan'ny injeniera anananao.
Ivan Kurnosov (ho valin'izany):
Ny tena zava-misy: Ny isa AWS anao dia asan'ny isan'ny zavatra adinonao ny nesorina/fafao.)
Kubernetes Janitor (kube-janitor) dia manampy amin'ny fanadiovana ny cluster. Ny fanamafisana ny janitor dia azo ampiasaina ho an'ny tontolo sy eo an-toerana:
Ny fitsipiky ny kluster dia afaka mamaritra ny fotoana farany indrindra (TTL) ho an'ny fametrahana PR/andrana.
Ny loharanon'ny tsirairay dia azo asiana fanamarihana miaraka amin'ny janitor/ttl, ohatra mba hanesorana ho azy ny spike/prototype rehefa afaka 7 andro.
Ny fitsipika ankapobeny dia voafaritra ao amin'ny rakitra YAML. Mandalo amin'ny paramètre ny lalany --rules-file in kube-janitor. Ity misy fitsipika ohatra iray hanesorana ny espace anarana rehetra -pr- amin'ny anarana rehefa afaka roa andro:
Ity ohatra manaraka ity dia manara-maso ny fampiasana ny mari-pamantarana fampiharana amin'ny pod Deployment sy StatefulSet ho an'ny Deployments/StatefulSets vaovao rehetra amin'ny 2020, fa miaraka amin'izay koa dia mamela ny fanatanterahana fitsapana tsy misy an'io marika io mandritra ny herinandro:
kubectl run nginx-demo --image=nginx
kubectl annotate deploy nginx-demo janitor/ttl=30m
Loharanom-baovao iray hafa amin'ny fitomboan'ny fandaniana dia ny tahan'ny maharitra (AWS EBS). Ny famafana ny Kubernetes StatefulSet dia tsy mamafa ny boky maharitra (PVC - PersistentVolumeClaim). Ny volan'ny EBS tsy ampiasaina dia mety miteraka vola an-jatony dolara isam-bolana. Kubernetes Janitor dia manana endri-javatra manadio PVC tsy ampiasaina. Ohatra, ity fitsipika ity dia hanaisotra ny PVC rehetra izay tsy apetraka amin'ny mΓ΄dely ary tsy resahin'ny StatefulSet na CronJob:
Ny Kubernetes Janitor dia afaka manampy anao hihazona ny cluster ho madio ary hisoroka ny vidin'ny informatika rahona tsy hiakatra tsikelikely. Ho an'ny torolalana momba ny fametrahana sy ny fanamafisana, araho README kube-janitor.
Ampihenana ny scaling mandritra ny ora fiasana
Amin'ny ora fiasana ihany no ilaina amin'ny fiasana matetika ny rafitra fitsapana sy fanaovana fandaharana. Ny rindranasa famokarana sasany, toy ny fitaovana back office/admin, dia tsy mitaky afa-tsy fahafahana voafetra ihany koa ary mety ho kilemaina mandritra ny alina.
Kubernetes Downscaler (kube-downscaler) dia ahafahan'ny mpampiasa sy ny mpandraharaha manamaivana ny rafitra mandritra ny ora tsy fiasana. Ny Deployments sy StatefulSets dia afaka mirefy aotra replika. Mety haato ny CronJobs. Kubernetes Downscaler dia namboarina ho an'ny kluster iray manontolo, sehatra anarana iray na maromaro, na loharano tsirairay. Azonao atao ny mametraka "fotoana idle" na, mifanohitra amin'izany, "fotoana fiasana". Ohatra, mba hampihenana ny scaling araka izay azo atao mandritra ny alina sy ny faran'ny herinandro:
Ny fampidinana avy amin'ny ~ 13 ka hatramin'ny 4 node mpiasa dia azo antoka fa mitondra fiovana miharihary amin'ny volavolanao AWS.
Ahoana anefa raha mila miasa mandritra ny cluster "downtime" aho? Ny fametrahana sasany dia azo esorina tanteraka amin'ny fanamafisam-peo amin'ny alalan'ny fampidirana ny downscaler/exclude: tena fanamarihana. Ny fametrahana dia azo esorina vetivety amin'ny fampiasana ny fanamafisam-peo ambany/exclude-mandram-pahazoana mari-pamantarana ara-potoana tanteraka amin'ny endrika YYYY-MM-DD HH:MM (UTC). Raha ilaina, dia azo averina ny cluster manontolo amin'ny alΓ lan'ny fametrahana pod miaraka amin'ny fanamarihana downscaler/force-uptime, ohatra, amin'ny fandefasana ny nginx blank:
kubectl run scale-up --image=nginx
kubectl annotate deploy scale-up janitor/ttl=1h # ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΡΠ°Ρ
kubectl annotate pod $(kubectl get pod -l run=scale-up -o jsonpath="{.items[0].metadata.name}") downscaler/force-uptime=true
jereo README kube-downscaler, raha liana amin'ny torolΓ lana fametrahana sy safidy fanampiny ianao.
MampiasΓ autoscaling horizontal
Fampiharana/serivisy maro no mifandray amin'ny lamina mavesatra entana: indraindray tsy miasa ny maody, ary indraindray miasa amin'ny fahafaha-manao feno. Ny fampandehanana andian-tsambo maharitra mba hiatrehana ny enta-mavesatra ambony indrindra dia tsy ara-toekarena. Kubernetes dia manohana ny fanamafisam-peo mitsivalana manerana ny loharano iray HorizontalPodAutoscaler (HPA). Ny fampiasana CPU dia matetika famantarana tsara ho an'ny scaling:
Ny fanamafisana ny fanamafisam-peo marindrano miaraka amin'ny HPA dia tokony ho iray amin'ireo hetsika mahazatra hanatsarana ny fahombiazan'ny serivisy tsy misy fanjakana. Spotify dia manana famelabelarana miaraka amin'ny traikefany sy ny soso-kevitr'izy ireo momba ny HPA: ampitomboy ny fametrahanao fa tsy ny kitaponao.
Ahena ny famandrihana be loatra amin'ny loharanon-karena
Ny enta-mavesatry ny Kubernetes dia mamaritra ny filan'izy ireo CPU/fahatsiarovana amin'ny alΓ lan'ny "fangatahana loharano." Ny loharanon-karena CPU dia refesina amin'ny core virtoaly na matetika kokoa amin'ny "millicore", ohatra 500m dia midika hoe 50% vCPU. Refesina amin'ny bytes ny loharanom-pahatsiarovana, ary azo ampiasaina ny tovana mahazatra, toy ny 500Mi, izay midika hoe 500 megabytes. Ny fangatahan'ny loharanon-karena dia ny fahafahan'ny "hidy" amin'ny node mpiasa, izany hoe ny pod misy fangatahana CPU 1000m amin'ny node misy vCPU 4 dia tsy hamela afa-tsy vCPU 3 ho an'ny pod hafa. [1]
Slack (fahirizana tafahoatra) dia ny fahasamihafan'ny loharano nangatahana sy ny fampiasana tena izy. Ohatra, ny pod iray izay mangataka fitadidiana 2 GiB nefa mampiasa 200 MiB fotsiny dia manana ~1,8 GiB fahatsiarovana "mihoatra". Mandany vola ny tafahoatra. Ny iray dia afaka manombatombana fa ny 1 GiB amin'ny fitadidiana tafahoatra dia mitentina ~ $10 isam-bolana. [2]
Kubernetes Resource Report (kube-resource-report) dia mampiseho tahiry be loatra ary afaka manampy anao hamaritra ny mety ho tahiry:
Kubernetes Resource Report mampiseho ny tafahoatra natambatra amin'ny fampiharana sy ny baiko. Izany dia ahafahanao mahita toerana mety hampihenana ny fitakiana loharanon-karena. Ny tatitra HTML novokarina dia manome sarin'ny fampiasana loharano fotsiny. Tokony hijery ny fampiasana CPU/fahatsiarovana ianao rehefa mandeha ny fotoana mba hamaritana ny fangatahana loharanon-karena. Ity misy tabilao Grafana ho an'ny serivisy mavesatra CPU "mahazatra": ny pods rehetra dia mampiasa ambany kokoa noho ireo cores CPU 3 nangatahana:
Ny fampihenana ny fangatahana CPU avy amin'ny 3000m mankany ~ 400m dia manafaka loharano ho an'ny enta-mavesatra hafa ary mamela ny cluster ho kely kokoa.
"Ny fampiasana CPU antonony amin'ny tranga EC2 dia matetika mihodinkodina amin'ny isan-jato isan-jato," hoy i Corey Quinn. Raha ny EC2 mety ho fanapahan-kevitra ratsy ny manombana ny habenyMora ny manova fanontaniana momba ny loharanon-karena Kubernetes amin'ny rakitra YAML ary afaka mitahiry vola be.
Saingy tena tiantsika ve ny hanova ny soatoavin'ny olona amin'ny rakitra YAML? Tsia, mahavita tsara kokoa ny milina! Kubernetes Vertical Pod Autoscaler (VPA) dia manao izany: mampifanaraka ny fangatahana loharanon-karena sy ny teritery mifanaraka amin'ny vesatry ny asa. Ity misy tabilao ohatra momba ny fangatahana Prometheus CPU (tsipika manga manify) namboarin'ny VPA rehefa mandeha ny fotoana:
Goldilocks avy amin'ny Fairwind dia fitaovana iray mamorona VPA ho an'ny fametrahana tsirairay ao amin'ny namespace ary avy eo dia mampiseho tolo-kevitra VPA eo amin'ny solaitrabeny. Afaka manampy ny mpamorona hametraka ny fangatahana CPU/fahatsiarovana marina ho an'ny fampiharana azy ireo:
Farany fa tsy ny kely indrindra, ny vidin'ny AWS EC2 dia azo ahena amin'ny alΓ lan'ny fampiasana ny tranga Spot amin'ny maha-nodes mpiasa Kubernetes. [3]. Misy fihenam-bidy hatramin'ny 90% raha oharina amin'ny vidin'ny On-Demand. Ny fampandehanana ny Kubernetes amin'ny EC2 Spot dia fampifangaroana tsara: mila mamaritra karazana ohatra maromaro ianao raha te-hahazo avo kokoa, midika izany fa afaka mahazo node lehibe kokoa ianao amin'ny vidiny mitovy na ambany, ary ny fahafaha-mitombo dia azo ampiasaina amin'ny enta-mavesatry ny Kubernetes.
Ahoana ny fampandehanana Kubernetes amin'ny EC2 Spot? Misy safidy maromaro: mampiasa serivisy antoko fahatelo toa an'i SpotInst (antsoina hoe "Spot" ankehitriny, aza manontany ahy hoe nahoana), na ampio fotsiny Spot AutoScalingGroup (ASG) ao amin'ny cluster-nao. Ohatra, ity misy sombintsombiny CloudFormation ho an'ny Spot ASG "mampitombo ny fahafaha-manao" misy karazana ohatra maro:
Inona ny fomba fanao tsara indrindra ataonao amin'ny fitsitsiana ny vidin'ny rahona amin'ny Kubernetes? Mba ampahafantaro ahy amin'ny Twitter (@try_except_).
[1] Raha ny marina, latsaky ny 3 vCPUs no hijanona ho azo ampiasaina satria mihena ny fahafahan'ny node amin'ny alΓ lan'ny loharanon'ny rafitra voatokana. Kubernetes dia manavaka ny fahafahan'ny node ara-batana sy ny loharanon-karena "nomena" (Node Allocatable).
[2] Ohatra kajy: ohatra iray m5.lehibe misy fitadidiana 8 GiB dia ~$84 ββββisam-bolana (eu-central-1, On-Demand), i.e. ny fanakanana 1/8 node dia eo amin'ny ~ $10/volana.
[3] Misy fomba maro hafa hampihenana ny faktiora EC2-nao, toy ny Instance voatokana, Drafitry ny tahiry, sns. - Tsy horesahiko eto ireo lohahevitra ireo, fa tokony hojerenao tokoa!