Ieri 9 dicembre prossima versione di Kubernetes - 1.17. Sicondu a tradizione chì hà sviluppatu per u nostru blog, parlemu di i cambiamenti più significati in a nova versione.

L'infurmazione utilizata per preparà stu materiale hè presa da l'annunziu ufficiale, , è prublemi cunnessi, richieste di pull, è Proposte di miglioramentu di Kubernetes (KEP). Allora, chì hè novu?...
Instradamentu cuscenti di a topologia
A cumunità Kubernetes aspittava sta funzione per un bellu pezzu - Routing di u serviziu di topulugia... Sì hè urigginatu in uttrovi 2018, è u ufficiale - 2 anni fà, i prublemi di solitu (cum'è ) - è uni pochi d'anni in più...
L'idea generale hè di furnisce a capacità di implementà u routing "lucale" per i servizii residenti in Kubernetes. "Località" in questu casu significa "u stessu livellu topologicu" (livellu di topologia), chì pò esse:
- node identicu per i servizii,
- u listessu rack di u servitore,
- a stessa regione
- u listessu fornitore di nuvola,
- ...
Esempii di usu di sta funzione:
- risparmiu nantu à u trafficu in installazioni in nuvola cù parechje zoni di dispunibilità (multi-AZ) - vede. utilizendu l'esempiu di trafficu da a listessa regione, ma diverse AZ in AWS;
- latenza di prestazione più bassa / megliu rendimentu;
- un serviziu sharded chì hà infurmazioni lucali nantu à u node in ogni shard;
- piazzamentu di fluentd (o analoghi) nantu à u stessu node cù l'applicazioni chì i logs sò cullati;
- ...
Tali routing, chì "sà" di a topologia, hè ancu chjamatu affinità di rete - per analogia cù , o apparsu (è ). Livellu attuale di implementazione ServiceTopology in Kubernetes - versione alfa.
Per i dettagli nantu à cumu funziona a funzione è cumu pudete digià aduprà, leghjite da unu di l'autori.
Supportu dual stack IPv4/IPv6
Prugressu significativu in una altra funzione di rete: supportu simultaneo per dui stacks IP, chì hè statu introduttu prima in . In particulare, a nova versione hà purtatu i seguenti cambiamenti:
- in kube-proxy pussibilità di funziunamentu simultanea in i dui modi (IPv4 è IPv6);
- в
Pod.Status.PodIPssupportu per l'API downward (in u stessu tempu cum'è in/etc/hostsavà necessitanu chì l'ospite aghjunghje un indirizzu IPv6); - supportu dual stack (Kubernetes IN Docker) è ;
- testi e2e aghjurnati.

utilizendu a doppia pila IPV4 / IPv6 in KIND
Avanzate nantu à CSI
Dichjarata stabile per l'almacenamiento basatu in CSI, prima introduttu in .
Initiative per migrazione di plugins di volumi à CSI - - hè ghjuntu à a versione beta. Questa funzione hè critica per traduce i plugins di almacenamiento esistenti (in l'arburu) à una interfaccia muderna (CSI, fora di l'arburu) invisibile per l'utilizatori finali di Kubernetes. L'amministratori di u Cluster solu bisognu di attivà a Migrazione CSI, dopu chì e risorse statali esistenti è i carichi di travagliu continuanu à "funcionà solu" ... ma utilizendu l'ultimi driver CSI invece di quelli obsoleti inclusi in u core Kubernetes.
Attualmente, a migrazione per i driver AWS EBS hè pronta in versione beta (kubernetes.io/aws-ebs) è GCE PD (kubernetes.io/gce-pd). E previsioni per altre strutture di almacenamento sò i seguenti:

Avemu parlatu di cumu u supportu di almacenamiento "tradiziunale" in K8s hè ghjuntu à CSI in . È a transizione di a migrazione CSI à u statutu beta hè dedicatu nant'à u blog di u prugettu.
Inoltre, un'altra funziunalità significativa in u cuntestu di CSI, chì uriggina (implementazione alfa) in K1.17s 8, hà righjuntu u statutu beta (vale à dì attivatu per difettu) in a versione Kubernetes 1.12 - è ricuperazione da elli. Trà i cambiamenti fatti à Kubernetes Volume Snapshot in a strada di a liberazione beta:
- splitting the CSI external-snapshotter sidecar in dui cuntrolli,
- sicretu aghjuntu per sguassà (cancellazione secreta) cum'è una annotazione à u cuntenutu di un snapshot di volume,
- novu finalizzatore (finalizzatore) per impedisce l'ughjettu API di snapshot da esse sguassati s'ellu ci sò cunnessioni rimanenti.
À u mumentu di a liberazione 1.17, a funzione hè supportata da trè driver CSI: GCE Persistent Disk CSI Driver, Portworx CSI Driver è NetApp Trident CSI Driver. Più dettagli nantu à a so implementazione è l'usu ponu esse truvati in nant'à u blog.
Etichette di fornitori di nuvola
Etichette chì automaticamente assignati à i nodi creati è i volumi secondu u fornitore di nuvola utilizatu, sò stati dispunibili in Kubernetes cum'è una versione beta per un tempu assai longu - da a liberazione di K8s 1.2 (aprile 2016!). Data u so usu diffusa per tantu tempu, i sviluppatori , chì hè ora di dichjarà a funzione stabile (GA).
Dunque, sò stati tutti rinominati in cunseguenza (per topulugia):
-
beta.kubernetes.io/instance-type→node.kubernetes.io/instance-type -
failure-domain.beta.kubernetes.io/zone→topology.kubernetes.io/zone -
failure-domain.beta.kubernetes.io/region→topology.kubernetes.io/region
... ma sò sempre dispunibuli sottu i so vechji nomi (per a cumpatibilità inversa). Tuttavia, tutti l'amministratori sò cunsigliati per passà à l'etichette attuali. K8s hè statu aghjurnatu.
Output strutturatu di kubeadm
Presentatu in versione alfa per a prima volta . Formati supportati: JSON, YAML, mudellu Go.
Motivazione per implementà sta funzione (sicondu ) hè:
Mentre Kubernetes pò esse implementatu manualmente, u standard de facto (se micca de jure) per questa operazione hè di utilizà kubeadm. Strumenti di gestione di sistemi populari cum'è Terraform si basanu in kubeadm per l'implementazione di Kubernetes. I migliuramenti pianificati à l'API Cluster includenu un pacchettu cumponibile per u bootstrapping Kubernetes cù kubeadm è cloud-init.
Senza produzzione strutturata, ancu i cambiamenti più innocu à u primu sguardu ponu rompe Terraform, Cluster API è altri software chì utilizanu i risultati di kubeadm.
I nostri piani immediati includenu supportu (in forma di output strutturatu) per i seguenti cumandamenti kubeadm:
-
alpha certs -
config images list -
init -
token create -
token list -
upgrade plan -
version
Illustrazione di una risposta JSON à un cumandamentu kubeadm init -o json:
{
"node0": "192.168.20.51:443",
"caCrt": "sha256:1f40ff4bd1b854fb4a5cf5d2f38267a5ce5f89e34d34b0f62bf335d74eef91a3",
"token": {
"id": "5ndzuu.ngie1sxkgielfpb1",
"ttl": "23h",
"expires": "2019-05-08T18:58:07Z",
"usages": [
"authentication",
"signing"
],
"description": "The default bootstrap token generated by 'kubeadm init'.",
"extraGroups": [
"system:bootstrappers:kubeadm:default-node-token"
]
},
"raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}Stabilizazione di altre innovazioni
In generale, a liberazione di Kubernetes 1.17 hè stata sottu u mottu "Stabilità" Questu hè statu facilitatu da u fattu chì parechje caratteristiche in questu (u so numeru tutale hè 14) hà ricevutu u statutu GA. À mezu à elli:
- "marcà" i nodi secondu certi cundizioni (), apparsu in ;
- - un novu tipu di avvenimenti chì anu una etichetta chì tutti l'uggetti sò finu à una certa versione (
resourceVersion) sò digià stati trattati da watch; - (default) per Risorse Personalizzate;
- in u pod processu namespaces;
-
ScheduleDaemonSetPods- usendu kube-scheduler (invece di u controller DaemonSet); - nantu à u numeru di volumi secondu u tipu di node;
- per i nomi di repertori montati cum'è
subPath; - à una API Lease specializata;
- "prutezzione di u finalizzatore" () per i bilanciatori di carica (verificà e risorse di u serviziu currispundenti prima di sguassà e risorse di LoadBalancer);
- in u rendiment quandu travagliate cù più orologi chì monitorizanu insiemi idèntici di oggetti - ottenutu evitendu a serializazione ripetuta di i stessi oggetti per ogni observatore.
Altri cambiamenti
A lista completa di l'innuvazioni in Kubernetes 1.17, sicuru, ùn hè micca limitatu à quelli elencati sopra. Eccu alcuni altri (è per una lista più cumpleta, vede ):
- A funzione presentata in l'ultima versione hè ghjunta à a versione beta ;
- cambiamentu simile EndpointSlice API (ancu da K8s 1.16), ma per avà sta suluzione per migliurà u rendiment / scalabilità di l'API Endpoint ùn hè micca attivatu per difettu;
- i pods sò avà critichi per l'operazione di cluster micca solu in namespaces
kube-system(per i dettagli, vede a documentazione per ); - nova opzione per kubelet - - permette di definisce esplicitamente a lista di CPU riservate per u sistema;
- di
kubectl logsnova bandiera--prefix, aghjunghjendu u nome di u pod è u cuntenutu di a fonte à ogni linea di u log; - в
label.SelectorRequiresExactMatch; - tutti i cuntenituri in kube-dns cù menu privileggi;
- separatu in un repositoriu GitHub separatu è ùn serà più inclusu in e versioni di Kubernetes;
- assai kube-proxy per i porti non UDP.
Cambiamenti di dipendenza:
- A versione CoreDNS inclusa in kubeadm hè 1.6.5;
- versione crictl aghjurnata à v1.16.1;
- CSI 1.2.0;
- etcd 3.4.3;
- Ultima versione testata di Docker aghjurnata à 19.03;
- A versione minima di Go necessaria per custruisce Kubernetes 1.17 hè 1.13.4.
PS
Leghjite puru nant'à u nostru blog:
- «";
- «";
- «";
- «».
Source: www.habr.com
