Kubernetes

Hvad er Kubernetes?

Hvad er Kubernetes?

Hvad er Kubernetes? Og hvad er dens arkitektur?

Containerisering har skåret ledningen mellem softwareudviklere og produktionsmiljøet. Ikke i den forstand, at du slet ikke har brug for et produktionssystem, men du behøver ikke bekymre dig om produktionsmiljøets specificitet.

Apps er nu samlet med de afhængigheder, de har brug for, i en letvægtsbeholder i stedet for en VM. Det er godt! Det giver dog ikke immunitet mod systemfejl, netværksfejl eller diskfejl. For eksempel, hvis datacentret, hvor dine servere kører, er under vedligeholdelse, vil din applikation gå offline.

Kubernetes kommer ind i billedet for at løse disse problemer. Det tager ideen om containere og udvider den til at arbejde på tværs af flere computernoder (som kan være cloudhostet virtuel maskine eller bare metal-servere). Ideen er at have et distribueret system til containeriserede applikationer til at køre på.

Hvorfor Kubernetes?

Nu, hvorfor skulle du i første omgang have et distribueret miljø?

Af flere grunde er først og fremmest høj tilgængelighed. Du vil have, at dit e-handelswebsted forbliver online 24/7, eller hvis du mister forretning, skal du bruge Kubernetes til det. For det andet er skalerbarhed, hvor du vil skalere 'ud'. Udskalering her involverer tilføjelse af flere computernoder for at give din voksende applikation mere benplads til at fungere.

Design og arkitektur

Som ethvert distribueret system har en Kubernetes-klynge en masterknude og derefter en hel masse arbejdsknudepunkter, hvor dine applikationer faktisk kører. Masteren er ansvarlig for planlægning af opgaver, styring af arbejdsbelastninger og sikker tilføjelse af nye noder til klyngen.

Nu kan selvfølgelig masternoden mislykkes og tage hele klyngen med sig, så Kubernetes giver dig faktisk mulighed for at have flere masternoder for redundans skyld.

En fugleperspektiv af en typisk Kubernetes-indsættelse

Kubernetes Master

Kubernetes-mesteren er, hvad DevOps-teamet interagerer med og bruger til klargøring af nye noder, implementering af nye apps og ressourceovervågning og -administration. Masterknudens mest basale opgave er at tidsplan arbejdsbyrden effektivt blandt alle medarbejdernoder for at maksimere ressourceudnyttelsen, forbedre ydeevnen og følge forskellige politikker valgt af DevOps-teamet for deres særlige arbejdsbyrde.

En anden vigtig komponent er osv som er en dæmon, der holder styr på arbejderknudepunkter og holder en database, der lagrer hele klyngens tilstand. Det er en nøgleværdidatalager, som også kan køre på et distribueret miljø på tværs af flere masternoder. Indholdet af etcd giver alle relevante data om hele klyngen. En arbejdsknude vil fra tid til anden se på indholdet af etcd for at bestemme, hvordan den skal opføre sig.

Controller er den enhed, der tager instruktioner fra API-serveren (som vi vil dække senere) og udfører nødvendige handlinger som oprettelse, sletning og opdatering af applikationer og pakker.

Det API-server udsætter Kubernetes API, som bruger JSON-nyttelast over HTTPS, til at kommunikere med brugergrænsefladen, som udviklerholdene eller DevOps-personalet til sidst ender med at interagere med. Både web-UI og CLI bruger denne API til at interagere med Kubernetes-klyngen.

API-serveren er også ansvarlig for kommunikationen mellem arbejderknudepunkterne og forskellige masternodekomponenter som osv.

Masterknuden udsættes aldrig for slutbrugeren, da det risikerer sikkerheden i hele klyngen.

Kubernetes noder

En maskine (fysisk eller virtuel) har brug for et par vigtige komponenter, som når de er installeret og opsat korrekt, kan derefter gøre serveren til et medlem af din Kubernetes-klynge.

Den første ting, du har brug for, er en container-runtime, som Docker, installeret og kører på den. Det vil selvfølgelig være ansvarligt for at spinde op og administrere containere.

Sammen med Docker-runtime har vi også brug for Kubelet dæmon. Det kommunikerer med masternoderne via API-serveren og spørger etcd og giver tilbage sundheds- og brugsoplysninger om de bælg, der kører på den node.

Imidlertid er containere ret begrænsede af sig selv, så Kubernetes har en højere abstraktion bygget oven på en samling containere, kendt som Bælg.

Hvorfor komme med bælg?

Docker har en politik om at køre en applikation pr. Container. Ofte beskrevet som “En proces pr. Container” politik. Dette betyder, at hvis du har brug for et WordPress-websted, opfordres du til at have to containere, en til databasen at køre på, og en anden til webserveren at køre på. Bundtning af sådanne relaterede komponenter i en applikation i en pod sikrer, at når du skalerer ud, skal de to indbyrdes afhængige containere altid eksistere sammen på den samme knude og således tale hurtigt og nemt med hinanden.

Bælg er den grundlæggende enhed for implementering i Kubernetes. Når du skalerer, tilføjer du flere bælg til klyngen. Hver pod får sin egen unikke IP-adresse inden for klyngens interne netværk.

Tilbage til Kubernetes Node

Nu kan en node køre flere bælg, og der kan være mange sådanne noder. Dette er fint, indtil du tænker på at prøve at kommunikere med den eksterne verden. Hvis du har en simpel webbaseret tjeneste, hvordan ville du pege dit domænenavn på denne samling af bælg med mange IP-adresser?

Du kan ikke, og du behøver ikke! Kube-proxy er det sidste stykke af puslespillet, der gør det muligt for operatører at udsætte bestemte bælg ud til Internettet. For eksempel kan din front-end gøres offentligt tilgængelig, og kube-proxyen distribuerer trafikken mellem alle de forskellige bælg, der er ansvarlige for hosting af frontend. Din database behøver dog ikke at blive offentliggjort, og kube-proxy tillader kun intern kommunikation for sådanne back-end-relaterede arbejdsbelastninger.

Har du brug for alt dette??

Hvis du lige er begyndt som hobbyist eller studerende, ville det faktisk være ineffektivt at bruge Kubernetes til en simpel applikation. Hele rigmarolen vil forbruge flere ressourcer end din aktuelle applikation og tilføje mere forvirring for en enkelt person.

Men hvis du skal arbejde med et stort team og distribuere dine apps til seriøs kommerciel brug, er Kubernetes værd at tilføje overhead. Du kan forhindre ting i at blive kaotiske. Gør plads til vedligeholdelse uden nedetid. Opsæt smarte A / B-testbetingelser, og skaler gradvist ud uden at bruge for meget på infrastrukturen på forhånd.

Sådan registreres og streames din gaming-session på Linux
Tidligere blev spil kun betragtet som en hobby, men med tiden oplevede spilindustrien en enorm vækst med hensyn til teknologi og antallet af spillere....
Bedste spil at spille med håndsporing
Oculus Quest introducerede for nylig den gode idé om håndsporing uden controllere. Med et stadigt stigende antal spil og aktiviteter, der udfører supp...
Sådan vises OSD-overlay i fuldskærms Linux-apps og -spil
Afspilning af fuldskærmsspil eller brug af apps i distraktionsfri fuldskærmstilstand kan afskære dig fra relevante systemoplysninger, der er synlige i...