À a fine di l'estate, vulemu ramintà vi chì cuntinuemu à travaglià nant'à u tema Kubernetes è decisu di pubblicà un articulu da Stackoverflow chì mostra u statu di l'affari in stu prughjettu à u principiu di ghjugnu.
Enjoy reading!
À u mumentu di a scrittura di stu articulu, l'età di Kubernetes hè di circa. sei anni, è in l'ultimi dui anni a so popularità hè cresciutu tantu chì hè sempre classificatu trà u più favuritu piattaforme. Kubernetes hè terzu quist'annu. Per ricapitolare: Kubernetes hè una piattaforma pensata per l'esecuzione è l'orchestrazione di carichi di travagliu containerizzati.
I cuntenituri cuminciaru cum'è un disignu speciale per isolà i prucessi in Linux; i cuntenituri sò inclusi da u 2007 cgruppi, è da u 2002 - namespaces. I cuntenituri sò stati cuncepiti ancu megliu da u 2008, quandu hè diventatu dispunibule LXC, è Google hà sviluppatu u so propiu mecanismu corporativu internu chjamatu Borg, induve "tuttu u travagliu hè fattu in cuntenituri". Da quì avemu avanzatu à u 2013, quandu a prima liberazione di Docker hè stata fatta, è i cuntenituri sò finalmente diventati una soluzione di massa populari. À quellu tempu, u strumentu principale per l'orchestrazione di u containeru era Mesos, ancu s'ellu ùn era micca assai populari. Kubernetes hè stata prima liberata in 2015, dopu chì sta strumentu hè diventatu u standard de facto in u campu di l'orchestrazione di u containeru.
Per pruvà à capisce perchè Kubernetes hè cusì populari, pruvemu à risponde à uni pochi di dumande. Quandu hè stata l'ultima volta chì i sviluppatori sò stati capaci di cuncordà cumu implementà l'applicazioni à a produzzione? Quanti sviluppatori sapete chì utilizanu l'arnesi cumu sò furniti fora di a scatula? Quanti amministratori di nuvola ci sò oghje chì ùn capiscenu micca cumu funziona l'applicazioni? Fighjemu e risposte à queste dumande in questu articulu.
Infrastruttura cum'è YAML
In u mondu chì passava da Puppet and Chef à Kubernetes, unu di i più grandi cambiamenti era u muvimentu da "infrastruttura cum'è codice" à "infrastruttura cum'è dati" - specificamente, cum'è YAML. Tutte e risorse in Kubernetes, chì includenu pods, cunfigurazioni, istanze implementate, volumi, etc., ponu esse facilmente descritte in un schedariu YAML. Per esempiu:
apiVersion: v1
kind: Pod
metadata:
name: site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
Questa vista rende più faciule per i prufessiunali DevOps o SRE per sprime cumplettamente i so carichi di travagliu senza avè da scrive codice in lingue cum'è Python o Javascript.
Altri vantaghji di l'urganizazione di l'infrastruttura cum'è dati includenu:
GitOps o Git Operations Version Control. Stu approcciu vi permette di mantene tutti i fugliali YAML di Kubernetes in i repositori git, cusì pudete seguità esattamente quandu un cambiamentu hè statu fattu, quale l'hà fattu, è ciò chì hà cambiatu esattamente. Questu aumenta a trasparenza di l'operazioni in tutta l'urganizazione è migliurà l'efficienza operativa eliminendu l'ambiguità, in particulare induve l'impiegati anu da circà e risorse chì anu bisognu. À u listessu tempu, diventa più faciule per fà automaticamente cambiamenti à e risorse Kubernetes solu unendu una dumanda di pull.
Scalabilità. Quandu e risorse sò definite cum'è YAML, diventa estremamente faciule per l'operatori di cluster di cambià unu o dui numeri in una risorsa Kubernetes, cambiendu cusì cumu si scala. Kubernetes furnisce un mecanismu per l'autoscaling horizontale di pods, chì pò esse usatu per determinà convenientemente ciò chì u minimu è massimu di pods sò necessarii in una cunfigurazione di implementazione particulare per trattà i livelli di trafficu bassu è altu. Per esempiu, se avete implementatu una cunfigurazione chì richiede capacità supplementu per via di un spike bruscu in u trafficu, allora maxReplicas pò esse cambiatu da 10 à 20:
Sicurezza è gestione. YAML hè grande per evaluà cumu e cose sò implementate in Kubernetes. Per esempiu, una preoccupazione maiò di a sicurità riguarda se i vostri carichi di travagliu sò in esecuzione cum'è un utilizatore non amministratore. In questu casu, pudemu avè bisognu di strumenti cum'è cuncorsu, validatore YAML/JSON, più Open Policy Agent, un validatore di pulitica per assicurà chì u cuntestu Cuntestu di sicurità i vostri carichi di travagliu ùn permettenu micca u cuntinuu per eseguisce cù privilegi di amministratore. Se questu hè necessariu, l'utilizatori ponu applicà una pulitica simplice trinchera, cum'è què:
package main
deny[msg] {
input.kind = "Deployment"
not input.spec.template.spec.securityContext.runAsNonRoot = true
msg = "Containers must not run as root"
}
Opzioni per l'integrazione cù un fornitore di nuvola. Una di e tendenze più notevuli in l'alta tecnulugia d'oghje hè di eseguisce carichi di travagliu nantu à i fornitori di nuvola publica. Utilizà u cumpunente fornitore di nuvola Kubernetes permette à qualsiasi cluster di integrà cù u fornitore di nuvola nantu à quale si corre. Per esempiu, se un utilizatore esegue una applicazione in Kubernetes in AWS è vole esporà quella applicazione attraversu un serviziu, u fornitore di nuvola aiuta automaticamente à creà u serviziu. LoadBalancer, chì furnisce automaticamente u balancer di carica Amazon Elastic Load Balancerper reindirizzà u trafficu à i pods di l'applicazione.
Espandibilità
Kubernetes hè assai estensibile, è i sviluppatori amanu. Ci hè un inseme di risorse dispunibili cum'è pods, implementazioni, StatefulSets, sicreti, ConfigMaps, etc. True, l'utilizatori è i sviluppatori ponu aghjunghje altre risorse in a forma definizione di risorse persunalizati.
Per esempiu, se vulemu definisce una risorsa CronTab, allora pudete fà qualcosa cum'è questu:
Un'altra opzione per l'estensibilità in Kubernetes hè chì u sviluppatore pò scrive e so dichjarazioni. Operatore hè un prucessu speciale in u cluster Kubernetes chì travaglia secondu u "circuitu di cuntrollu" Cù l'aiutu di un operatore, l'utilizatore pò automatizà a gestione di CRDs (definizioni di risorse persunalizati) scambiendu infurmazioni cù l'API Kubernetes.
Ci hè parechje strumenti in a cumunità chì facenu fàciule per i sviluppatori di creà i so operatori. À mezu à elli - Quadru di l'operatore è so Operatore SDK. Stu SDK furnisce una basa da quale un sviluppatore pò cumincià rapidamente à creà un operatore. Diciamu chì pudete inizià da a linea di cummanda qualcosa cum'è questu:
$ operator-sdk new my-operator --repo github.com/myuser/my-operator
Questu crea tuttu u codice boilerplate per u vostru operatore, cumpresi i schedari YAML è u codice Golang:
Se u sviluppatore vole ancu più cuntrollu, u codice boilerplate in i schedari Go pò esse cambiatu. Per esempiu, per mudificà e specifiche di u controller, pudete fà cambiamenti à u schedariu controller.go.
Un altru prughjettu DUTUTTI, permette di creà dichjarazioni usendu solu i schedarii YAML dichjarativi. Per esempiu, un operatore per Apache Kafka seria definitu circa tantu. Cù questu, pudete installà un cluster Kafka sopra Kubernetes cù solu un paru di cumandamenti:
In l'ultimi anni, i grandi versioni di Kubernetes sò ghjunti ogni pochi mesi - vale à dì trè o quattru versioni maiò annu. U nùmeru di funzioni novi introdutte in ognuna di elli ùn diminuite micca. Inoltre, ùn ci sò micca signali di rallentà ancu in questi tempi difficili - fighjate ciò chì a situazione hè avà Attività di prughjettu Kubernetes nantu à Github.
Nuvelle capacità permettenu di raggruppà operazioni più flessibili in diverse carichi di travagliu. Inoltre, i programatori godenu un cuntrollu più grande quandu implementanu applicazioni direttamente à a produzzione.
Community
Un altru aspettu maiò di a popularità di Kubernetes hè a forza di a so cumunità. In u 2015, quandu hà ghjuntu à a versione 1.0, Kubernetes hè statu sponsorizatu da Fondazione Cloud Native Computing.
Ci sò dinù diverse cumunità SIG (Gruppi di Interessi Speciali) cuncintrau nantu à travaglià in diverse aree di Kubernetes mentre u prugettu evoluzione. Questi gruppi aghjunghjenu constantemente novi funzioni, rendendu u travagliu cù Kubernetes più còmuda è cunvene.
A Cloud Native Foundation ospita ancu CloudNativeCon / KubeCon, chì, à u mumentu di a scrittura, hè a più grande cunferenza open source in u mondu. Tipicamenti tenutu trè volte à l'annu, riunisce migliaia di prufessiunali chì volenu migliurà Kubernetes è u so ecosistema, è ancu amparà e funzioni novi chì appariscenu ogni trè mesi.
Inoltre, Cloud Native Foundation hà Cumitatu di Supervisione Tecnica, chì, inseme cù i SIG, rivisione novi è esistenti prughjetti fondi focalizati nantu à l'ecosistema nuvola. A maiò parte di sti prughjetti aiutanu à migliurà i punti di forza di Kubernetes.
Infine, crede chì Kubernetes ùn saria micca cusì successu cum'è senza l'sforzi cuscienti di tutta a cumunità, induve a ghjente si ferma, ma à u stessu tempu accolta i novi vinuti in u locu.
U Futuru
Unu di i sfidi principali chì i sviluppatori anu da trattà in u futuru hè a capacità di fucalizza nantu à i dettagli di u codice stessu, è micca nantu à l'infrastruttura in quale corre. Incontra sti tendenzi paradigma architetturale senza server, chì hè unu di i principali oghje. I quadri avanzati esistenu digià, per esempiu. nativu и OpenFaas, chì utilizanu Kubernetes per astrattu l'infrastruttura da u sviluppatore.
In questu articulu, avemu solu graffiatu a superficia di u statu attuale di Kubernetes - in fattu, hè solu a punta di l'iceberg. L'utilizatori di Kubernetes anu parechje altre risorse, capacità è cunfigurazioni à a so dispusizione.