Um Enn vum Summer wëlle mir Iech drun erënneren, datt mir weider un deem Thema schaffen Kubernetes an huet decidéiert en Artikel aus Stackoverflow ze publizéieren, deen den Zoustand vun de Affären an dësem Projet Ufank Juni demonstréiert.
Genéisst Lies!
Zu der Zäit vun dësem Artikel ze schreiwen ass den Alter vu Kubernetes ongeféier. sechs Joer al, an iwwer déi lescht zwee Joer ass seng Popularitéit sou vill gewuess datt et konsequent ënner klasséiert ass beléifsten Plattformen. Kubernetes klasséiert dëst Joer drëtt. Fir zréckzekréien: Kubernetes ass eng Plattform entwéckelt fir containeriséierter Aarbechtslaascht ze lafen an ze orchestréieren.
Container hunn ugefaang als speziellen Design fir Prozesser an Linux ze isoléieren; Container sinn zënter 2007 abegraff Cgruppen, an zënter 2002 - Nummraim. Container goufen nach besser entworf bis 2008, wéi et verfügbar gouf LXC, a Google entwéckelt säin eegene internen Firmemechanismus genannt Borg, wou "all Aarbecht a Container gemaach gëtt." Vun hei aus gi mir séier op 2013, wéi déi éischt Verëffentlechung vum Docker stattfonnt huet, a Container endlech eng populär Masseléisung ginn. Deemools war den Haaptinstrument fir d'Containerorchestratioun Mesos, obwuel hien net ganz populär war. Kubernetes gouf fir d'éischt am Joer 2015 verëffentlecht, duerno gouf dëst Tool de de facto Standard am Beräich vun der Containerorchestratioun.
Fir ze probéieren ze verstoen firwat Kubernetes sou populär ass, loosst eis probéieren e puer Froen ze beäntweren. Wéini war d'leschte Kéier datt d'Entwéckler sech averstane kënnen iwwer wéi d'Applikatioune fir d'Produktioun ofsetzen? Wéi vill Entwéckler wësst Dir déi d'Tools benotzen wéi se aus der Këscht geliwwert ginn? Wéi vill Cloud Administrateuren ginn et haut déi net verstinn wéi d'Applikatiounen funktionnéieren? Mir wäerten d'Äntwerten op dës Froen an dësem Artikel kucken.
Infrastruktur als YAML
An der Welt, déi vu Puppet a Chef op Kubernetes gaangen ass, war eng vun de gréissten Ännerungen de Beweegung vun "Infrastruktur als Code" op "Infrastruktur als Daten" - speziell wéi YAML. All Ressourcen an Kubernetes, déi Pods, Konfiguratiounen, ofgebauten Instanzen, Bänn, etc., kënnen einfach an enger YAML Datei beschriwwe ginn. Zum Beispill:
apiVersion: v1
kind: Pod
metadata:
name: site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
Dës Vue mécht et méi einfach fir DevOps oder SRE Fachleit hir Aarbechtslaascht voll auszedrécken ouni Code a Sprooche wéi Python oder Javascript ze schreiwen.
Aner Virdeeler vun der Organisatioun vun Infrastruktur als Daten enthalen:
GitOps oder Git Operations Version Control. Dës Approche erlaabt Iech all Kubernetes YAML Dateien an Git Repositories ze halen, sou datt Dir genau verfollegt wéini eng Ännerung gemaach gouf, wien et gemaach huet a wat genee geännert huet. Dëst erhéicht d'Transparenz vun den Operatiounen uechter d'Organisatioun a verbessert d'operationell Effizienz andeems d'Ambiguitéit eliminéiert gëtt, besonnesch wou d'Mataarbechter no de Ressourcen sichen déi se brauchen. Zur selwechter Zäit gëtt et méi einfach automatesch Ännerungen op Kubernetes Ressourcen ze maachen andeems Dir einfach eng Pull-Ufro fusionéiert.
Skalierbarkeet. Wann Ressourcen als YAML definéiert sinn, gëtt et extrem einfach fir Clusterbetreiber eng oder zwou Zuelen an enger Kubernetes Ressource z'änneren, an doduerch z'änneren wéi et skaléiert. Kubernetes bitt e Mechanismus fir horizontal Autoscaling vu Pods, dee ka benotzt ginn fir bequem ze bestëmmen wat d'Mindest- a Maximal Unzuel vu Pods an enger bestëmmter Deploymentkonfiguratioun erfuerderlech sinn fir niddereg an héich Trafficniveauen ze handhaben. Zum Beispill, wann Dir eng Konfiguratioun agesat hutt déi zousätzlech Kapazitéit erfuerdert wéinst enger plötzlecher Spike am Traffic, da kënnen maxReplicas vun 10 op 20 geännert ginn:
Sécherheet a Gestioun. YAML ass super fir ze evaluéieren wéi d'Saachen a Kubernetes ofgebaut ginn. Zum Beispill, eng grouss Sécherheet Suerg betrëfft ob Är Aarbechtslaaschten als Net-Administrateur Benotzer lafen. An dësem Fall kënne mir Tools wéi z contest, YAML/JSON Validator, plus Open Politik Agent, eng Politik Validator ze garantéieren, datt de Kontext Sécherheetskontext Är Aarbechtslaascht erlaabt de Container net mat Administrator Privilegien ze lafen. Wann dat néideg ass, kënnen d'Benotzer eng einfach Politik uwenden Ech bieden, esou:
package main
deny[msg] {
input.kind = "Deployment"
not input.spec.template.spec.securityContext.runAsNonRoot = true
msg = "Containers must not run as root"
}
Optiounen fir Integratioun mat engem Cloud Provider. Ee vun de bemierkenswäertsten Trends an der haiteger High-Technologie ass d'Aarbechtslaascht op ëffentlech Cloud Ubidder ze lafen. Benotzt de Komponent Cloud-Provider Kubernetes erlaabt all Cluster mat dem Cloud Provider z'integréieren op deem et leeft. Zum Beispill, wann e Benotzer eng Applikatioun a Kubernetes op AWS leeft an dës Applikatioun duerch e Service wëll aussoen, hëlleft de Cloud Provider automatesch de Service ze kreéieren LoadBalancerdéi automatesch de Lastbalancer ubitt Amazon Elastic Load Balancerfir de Verkéier op d'Applikatioun Pods ze redirectéieren.
Ausbaubarkeet
Kubernetes ass ganz erweiterbar an d'Entwéckler hunn et gär. Et gëtt eng Rei vu verfügbare Ressourcen wéi Pods, Deployment, StatefulSets, Geheimnisser, ConfigMaps, etc. True, Benotzer an Entwéckler kënnen aner Ressourcen an der Form derbäi Benotzerdefinéiert Ressource Definitiounen.
Zum Beispill, wa mir eng Ressource definéieren wëllen CronTab, da kéint Dir esou eppes maachen:
Eng aner Optioun fir Extensibilitéit an Kubernetes ass datt den Entwéckler seng eege Aussoe schreiwen kann. Betreiber ass e spezielle Prozess am Kubernetes Cluster deen no der "Kontroll Circuit" Mat der Hëllef vun engem Bedreiwer kann de Benotzer d'Gestioun vun CRDs (Custom Ressource Definitiounen) automatiséieren andeems Dir Informatioun mat der Kubernetes API austauscht.
Et gi verschidde Tools an der Gemeinschaft déi et einfach maachen fir Entwéckler hir eege Betreiber ze kreéieren. Ënnert hinnen - Bedreiwer Kader a seng Bedreiwer SDK. Dës SDK bitt e Fundament aus deem en Entwéckler séier en Bedreiwer ka ufänke. Loosst eis soen, Dir kënnt vun der Kommandozeil eppes wéi dëst ufänken:
$ operator-sdk new my-operator --repo github.com/myuser/my-operator
Dëst erstellt all Kesselcode fir Ären Bedreiwer, dorënner YAML Dateien a Golang Code:
Wann den Entwéckler nach méi Kontroll wëllt, kann de Boilerplate Code a Go Dateien geännert ginn. Zum Beispill, fir d'Spezifizitéiten vum Controller z'änneren, kënnt Dir Ännerungen an der Datei maachen controller.go.
En anere Projet iwerall, erlaabt Iech Aussoe mat nëmmen deklarativen YAML Dateien ze erstellen. Zum Beispill, e Bedreiwer fir Apache Kafka wier ongeféier definéiert sou. Mat et kënnt Dir e Kafka-Cluster uewen op Kubernetes mat just e puer Kommandoen installéieren:
An de leschte Jore sinn grouss Kubernetes Verëffentlechungen all puer Méint erauskomm - dat ass, dräi bis véier grouss Verëffentlechungen pro Joer. D'Zuel vun den neie Fonctiounen, déi a jidderee vun hinnen agefouert goufen, geet net erof. Ausserdeem gëtt et och an dëse schwieregen Zäiten keng Unzeeche fir ze bremsen - kuckt wéi d'Situatioun elo ass Kubernetes Projet Aktivitéit op Github.
Nei Fäegkeeten erlaben Iech méi flexibel Operatiounen iwwer verschidden Aarbechtsbelaaschtungen ze clusteren. Zousätzlech genéissen d'Programméierer méi Kontroll wann se Uwendungen direkt an d'Produktioun ofsetzen.
Gemeinschaft
En anere groussen Aspekt vun der Popularitéit vum Kubernetes ass d'Stäerkt vu senger Gemeinschaft. Am Joer 2015, nodeems d'Versioun 1.0 erreecht gouf, gouf Kubernetes gesponsert vun Cloud Native Computing Foundation.
Et ginn och verschidde Communautéiten SIG (Special Interest Groups) konzentréiert sech op d'Aarbecht op verschiddene Beräicher vu Kubernetes wéi de Projet evoluéiert. Dës Gruppe fügen stänneg nei Features derbäi, fir mat Kubernetes méi praktesch a praktesch ze schaffen.
D'Cloud Native Foundation hält och CloudNativeCon/KubeCon, déi, am Schreiwenzäit, déi gréissten Open Source Konferenz op der Welt ass. Normalerweis dräimol am Joer ofgehalen, bréngt et Dausende vu Fachleit zesummen, déi Kubernetes a säin Ökosystem verbesseren wëllen, souwéi nei Features léieren, déi all dräi Méint erschéngen.
Ausserdeem huet d'Cloud Native Foundation Technesch Iwwerwaachung Comité, déi zesumme mat SIGs nei a bestehend iwwerpréift Projeten Fongen konzentréiert sech op de Cloud-Ökosystem. Déi meescht vun dëse Projeten hëllefen d'Stäerkte vu Kubernetes ze verbesseren.
Schlussendlech gleewen ech datt de Kubernetes net sou erfollegräich wier wéi et ass ouni déi bewosst Efforte vun der ganzer Gemeinschaft, wou d'Leit zesummenhänken, awer gläichzäiteg Newcomer an d'Fall begréissen.
D'Zukunft
Eng vun den Haapterausfuerderunge mat deenen d'Entwéckler an Zukunft musse këmmeren ass d'Fäegkeet sech op d'Detailer vum Code selwer ze fokusséieren, an net op d'Infrastruktur an där se leeft. Et entsprécht dësen Trends serverless architektonescht Paradigma, déi ee vun de féierende haut ass. Fortgeschratt Kadere ginn et schonn, z.B. Messer и OpenFaas, déi Kubernetes benotze fir d'Infrastruktur vum Entwéckler ze abstrakt.
An dësem Artikel hu mir nëmmen d'Uewerfläch vum aktuellen Zoustand vu Kubernetes gekräizt - tatsächlech ass et just den Tipp vum Äisbierg. Kubernetes Benotzer hu vill aner Ressourcen, Fäegkeeten a Konfiguratiounen zur Verfügung.