Kubernetes 1.17: Highlights di ciò chì hè novu

Ieri 9 dicembre hè accadutu 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.

Kubernetes 1.17: Highlights di ciò chì hè novu

L'infurmazione utilizata per preparà stu materiale hè presa da l'annunziu ufficiale, Kubernetes migliora i tabelle di tracciamentu, CHANGELOG-1.17 è 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ì CAP hè urigginatu in uttrovi 2018, è u ufficiale Valurizazione - 2 anni fà, i prublemi di solitu (cum'è si) - è 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. illustrazione fresca 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ù affinità di nodu, pod affinità/anti-affinità o apparsu micca tantu tempu fà Topology-Aware Volume SchedulingFornitura di volumi). Livellu attuale di implementazione ServiceTopology in Kubernetes - versione alfa.

Per i dettagli nantu à cumu funziona a funzione è cumu pudete digià aduprà, leghjite stu articulu da unu di l'autori.

Supportu dual stack IPv4/IPv6

Prugressu significativu fissu in una altra funzione di rete: supportu simultaneo per dui stacks IP, chì hè statu introduttu prima in K8s 1.16. In particulare, a nova versione hà purtatu i seguenti cambiamenti:

  • in kube-proxy implementatu pussibilità di funziunamentu simultanea in i dui modi (IPv4 è IPv6);
  • в Pod.Status.PodIPs apparsu supportu per l'API downward (in u stessu tempu cum'è in /etc/hosts avà necessitanu chì l'ospite aghjunghje un indirizzu IPv6);
  • supportu dual stack TIP (Kubernetes IN Docker) è kubeadm;
  • testi e2e aghjurnati.

Kubernetes 1.17: Highlights di ciò chì hè novu
Illustrazione utilizendu a doppia pila IPV4 / IPv6 in KIND

Avanzate nantu à CSI

Dichjarata stabile supportu di topologia per l'almacenamiento basatu in CSI, prima introduttu in K8s 1.12.

Initiative per migrazione di plugins di volumi à CSI - Migrazione 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:

Kubernetes 1.17: Highlights di ciò chì hè novu

Avemu parlatu di cumu u supportu di almacenamiento "tradiziunale" in K8s hè ghjuntu à CSI in stu articulu. È a transizione di a migrazione CSI à u statutu beta hè dedicatu publicazione separata 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 - criendu snapshots è 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 sta publicazione 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 decisu, chì hè ora di dichjarà a funzione stabile (GA).

Dunque, sò stati tutti rinominati in cunseguenza (per topulugia):

  • beta.kubernetes.io/instance-typenode.kubernetes.io/instance-type
  • failure-domain.beta.kubernetes.io/zonetopology.kubernetes.io/zone
  • failure-domain.beta.kubernetes.io/regiontopology.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. Documentazione Relativa K8s hè statu aghjurnatu.

Output strutturatu di kubeadm

Presentatu in versione alfa per a prima volta output strutturato per l'utilità kubeadm. Formati supportati: JSON, YAML, mudellu Go.

Motivazione per implementà sta funzione (sicondu CAP) 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:

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 Changelog):

  • A funzione presentata in l'ultima versione hè ghjunta à a versione beta RunAsUserName di Windows;
  • cambiamentu simile accadde 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 pò esse creatu micca solu in namespaces kube-system (per i dettagli, vede a documentazione per Limite u cunsumu di Classe di Priorità);
  • nova opzione per kubelet - --reserved-cpus - permette di definisce esplicitamente a lista di CPU riservate per u sistema;
  • di kubectl logs prisentatu nova bandiera --prefix, aghjunghjendu u nome di u pod è u cuntenutu di a fonte à ogni linea di u log;
  • в label.Selector aghjuntu RequiresExactMatch;
  • tutti i cuntenituri in kube-dns sò avà in esecuzione cù menu privileggi;
  • ipercube separatu in un repositoriu GitHub separatu è ùn serà più inclusu in e versioni di Kubernetes;
  • assai prestazione migliorata 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

Cumprate un hosting affidabile per i siti cù prutezzione DDoS, servitori VPS VDS 🔥 Cumprate un hosting di siti web affidabile cù prutezzione DDoS, servitori VPS VDS | ProHoster