Kubernetes 1.14: Istaknuto što je novo

Kubernetes 1.14: Istaknuto što je novo

Ove noći će se održati sljedeće izdanje Kubernetesa - 1.14. Prema tradiciji koja se razvila za naš blog, govorimo o ključnim promjenama u novoj verziji ovog prekrasnog Open Source proizvoda.

Podaci korišteni za pripremu ovog materijala preuzeti su iz Kubernetes tablice praćenja poboljšanja, DNEVNIK PROMJENA-1.14 i srodna pitanja, zahtjevi za povlačenjem, prijedlozi poboljšanja Kubernetesa (KEP).

Počnimo s važnim uvodom iz životnog ciklusa SIG klastera: dinamički failover klasteri Kubernetes (ili da budemo precizniji, samodomaćene HA implementacije) je sada može se stvoriti pomoću poznatih (u kontekstu klastera s jednim čvorom) naredbi kubeadm (init и join). Ukratko, za ovo:

  • certifikati koje koristi klaster se prenose u tajne;
  • za mogućnost korištenja etcd klastera unutar K8s klastera (tj. oslobađanje od prethodno postojeće vanjske ovisnosti) etcd-operator;
  • Dokumentira preporučene postavke za vanjski balanser opterećenja koji pruža konfiguraciju otpornu na pogreške (u budućnosti se planira eliminirati ovu ovisnost, ali ne u ovoj fazi).

Kubernetes 1.14: Istaknuto što je novo
Arhitektura Kubernetes HA klastera stvorenog pomoću kubeadm-a

Detalje o provedbi možete pronaći u prijedlog dizajna. Ova značajka bila je doista dugo očekivana: alfa verzija se očekivala još u K8s 1.9, ali se pojavila tek sada.

API

Momčad apply i općenito govoreći deklarativno upravljanje objektima prošao od kubectl u apiserveru. Sami programeri ukratko objašnjavaju svoju odluku time kubectl apply - temeljni dio rada s konfiguracijama u Kubernetesu, međutim, "pun je grešaka i teško ga je popraviti", stoga ovu funkcionalnost treba vratiti u normalu i prenijeti u upravljačku razinu. Jednostavni i jasni primjeri problema koji danas postoje:

Kubernetes 1.14: Istaknuto što je novo

Detalji o provedbi nalaze se u KEP. Trenutačna spremnost je alfa (promaknuće u beta je planirano za sljedeće izdanje Kubernetesa).

Dostupno u alfa verziji prilika koristeći shemu OpenAPI v3 za stvaranje i objavljivanje OpenAPI dokumentacije za CustomResources (CR) koji se koristi za provjeru (na strani poslužitelja) K8s korisnički definiranih resursa (CustomResourceDefinition, CRD). Objavljivanje OpenAPI-ja za CRD omogućuje klijentima (npr. kubectl) izvršiti provjeru valjanosti na vašoj strani (unutar kubectl create и kubectl apply) i izdati dokumentaciju prema shemi (kubectl explain). Detalji - u KEP.

Već postojeći dnevnici sada se otvaraju sa zastavom O_APPEND (ali ne O_TRUNC) kako bi se izbjegao gubitak zapisa u nekim situacijama i radi praktičnosti skraćivanja zapisa s vanjskim uslužnim programima za rotaciju.

Također u kontekstu Kubernetes API-ja, može se primijetiti da u PodSandbox и PodSandboxStatus dodano polje runtime_handler za snimanje informacija o RuntimeClass u pod (više o tome pročitajte u tekstu o Izdanje Kubernetesa 1.12, gdje se ova klasa pojavila kao alfa verzija) i u Admission Webhooks implementiran sposobnost određivanja koje verzije AdmissionReview podržavaju. Konačno, pravila Admission Webhooks su sada može se ograničiti opseg njihove upotrebe od strane imenskih prostora i okvira klastera.

Skladištenje

PersistentLocalVolumes, koji je od izdavanja imao beta status K8s 1.10, obʺâvleny stabilan (GA): ova vrata značajke više nisu onemogućena i bit će uklonjena u Kubernetesu 1.17.

Prilika pomoću varijabli okoline tzv API prema dolje (na primjer, naziv pod) za nazive direktorija montiranih kao subPath, razvijen je - u obliku novog polja subPathExpr, koji se sada koristi za određivanje željenog naziva direktorija. Značajka se prvobitno pojavila u Kubernetesu 1.11, ali je za 1.14 ostala u statusu alfa verzije.

Kao i kod prethodnog izdanja Kubernetesa, uvode se mnoge značajne promjene za CSI (Container Storage Interface) koji se aktivno razvija:

CSI

Postao dostupan (kao dio alfa verzije) podržati promjena veličine za sveske CSI. Da biste ga koristili, morat ćete omogućiti vrata značajke tzv ExpandCSIVolumes, kao i dostupnost podrške za ovu operaciju u određenom CSI upravljačkom programu.

Još jedna značajka za CSI u alfa verziji - prilika odnosi se izravno (tj. bez upotrebe PV/PVC) na CSI volumene unutar specifikacije kapsule. Ovaj uklanja ograničenje korištenja CSI-ja kao isključivo udaljene pohrane podataka, otvarajući im vrata u svijet lokalni efemerni volumeni. Za upotrebu (primjer iz dokumentacije) moraju biti omogućeni CSIInlineVolume značajka vrata.

Također je došlo do napretka u “unutarnjim” Kubernetes-ovim komponentama koje se odnose na CSI, a koje nisu toliko vidljive krajnjim korisnicima (administratorima sustava) ... Trenutno su programeri prisiljeni podržavati dvije verzije svakog dodatka za pohranu: jednu - “u stari način”, unutar K8s kodne baze (in -tree), a drugi - kao dio novog CSI-ja (pročitajte više o tome, na primjer, u здесь). To uzrokuje razumljive neugodnosti koje treba riješiti kako se sam CSI stabilizira. Nije moguće jednostavno obustaviti API internih (u stablu) dodataka zbog relevantna politika Kubernetesa.

Sve je to dovelo do činjenice da je dosegnuta alfa verzija proces migracije interni kod dodatka, implementiran kao in-tree, u CSI dodacima, zahvaljujući čemu će se brige programera svesti na podršku jedne verzije njihovih dodataka, a kompatibilnost sa starim API-jima će ostati i oni se mogu proglasiti zastarjelima u uobičajenom scenariju. Očekuje se da će do sljedećeg izdanja Kubernetesa (1.15) svi dodaci pružatelja usluga oblaka biti migrirani, implementacija će dobiti beta status i biti aktivirana u K8s instalacijama prema zadanim postavkama. Za detalje pogledajte prijedlog dizajna. Ova migracija također je rezultirala neuspjeh od ograničenja količine definiranih od strane specifičnih pružatelja usluga oblaka (AWS, Azure, GCE, Cinder).

Dodatno, podrška za blok uređaje s CSI (CSIBlockVolume) prenijeti na beta verziju.

Čvorovi/Kubelet

Predstavljena alfa verzija nova krajnja točka u Kubeletu, dizajniran za povratne metrike o ključnim resursima. Općenito govoreći, ako je ranije Kubelet dobivao statistiku o korištenju kontejnera od cAdvisora, sada ti podaci dolaze iz runtime okruženja kontejnera putem CRI (Container Runtime Interface), ali je sačuvana i kompatibilnost za rad sa starijim verzijama Dockera. Prethodno su se statistike prikupljene u Kubeletu slale putem REST API-ja, ali sada krajnja točka koja se nalazi na /metrics/resource/v1alpha1. Dugoročna strategija programera sastoji se je minimiziranje skupa metrika koje nudi Kubelet. Usput, ove metrike same sada zovu ne "osnovne metrike", već "metrike resursa", a opisuju se kao "prvoklasni resursi, kao što su CPU i memorija".

Vrlo zanimljiva nijansa: unatoč jasnoj prednosti izvedbe krajnje točke gRPC u usporedbi s različitim slučajevima korištenja formata Prometheus (pogledajte rezultat jednog od mjerila u nastavku), autori su preferirali tekstualni format Prometeja zbog jasnog vodstva ovog sustava praćenja u zajednici.

“gRPC nije kompatibilan s glavnim cjevovodima za praćenje. Krajnja točka bit će korisna samo za isporuku metrike na Metrics Server ili komponente za praćenje koje se izravno integriraju s njim. Performanse Prometheus formata teksta kada se koristi predmemorija u Metrics Serveru dovoljno dobro da bismo više voljeli Prometheus u odnosu na gRPC s obzirom na široko prihvaćanje Prometheusa u zajednici. Kada format OpenMetrics postane stabilniji, moći ćemo pristupiti performansama gRPC-a s formatom temeljenim na proto.”

Kubernetes 1.14: Istaknuto što je novo
Jedan od usporednih testova izvedbe korištenja gRPC i Prometheus formata u novoj Kubelet krajnjoj točki za metriku. Više grafikona i drugih detalja možete pronaći u KEP.

Između ostalih promjena:

  • Kubelet sada (jednokratno) pokušavajući zaustaviti spremnici u nepoznatom stanju prije operacija ponovnog pokretanja i brisanja.
  • Kada koristite PodPresets sada u init spremnik dodao je iste informacije kao i za običnu posudu.
  • kubelet počeo koristiti usageNanoCores od pružatelja CRI statistike, te za čvorove i spremnike u sustavu Windows dodao mrežna statistika.
  • Informacije o operativnom sustavu i arhitekturi sada se bilježe u naljepnicama kubernetes.io/os и kubernetes.io/arch Objekti čvora (prebačeni iz beta u GA).
  • Mogućnost određivanja određene korisničke grupe sustava za spremnike u grupi (RunAsGroup, pojavio se u K8s 1.11) Napredna prije beta (omogućeno prema zadanim postavkama).
  • du i pronađite korišteno u cAdvisoru, zamijenio on Go implementacija.

CLI

U cli-runtimeu i kubectl dodano -k zastavica za integraciju sa prilagoditi (usput, njegov razvoj se sada provodi u zasebnom repozitoriju), tj. za obradu dodatnih YAML datoteka iz posebnih direktorija za prilagođavanje (za detalje o njihovoj upotrebi, pogledajte KEP):

Kubernetes 1.14: Istaknuto što je novo
Primjer jednostavne upotrebe datoteke prilagođavanje (složenija primjena kustomize moguća je unutar prekrivanja)

Osim toga:

  • Dodano novi tim kubectl create cronjob, čije ime govori samo za sebe.
  • В kubectl logs sada možeš kombinirati zastave -f (--follow za zapise strujanja) i -l (--selector za upit oznake).
  • kubectl naučeno kopirati datoteke odabrane džokerom.
  • Timu kubectl wait dodano zastava --all za odabir svih resursa u prostoru imena navedenog tipa resursa.

Drugi

Sljedeće mogućnosti dobile su stabilan (GA) status:

Ostale promjene predstavljene u Kubernetesu 1.14:

  • Zadana pravila RBAC više ne dopuštaju pristup API-ju discovery и access-review korisnika bez autentifikacije (neovjereno).
  • Službena podrška za CoreDNS osigurano Samo Linux, tako da kada koristite kubeadm za njegovu implementaciju (CoreDNS) u klasteru, čvorovi moraju raditi samo na Linuxu (selektori čvorova koriste se za ovo ograničenje).
  • Zadana CoreDNS konfiguracija je sada koristi dodatak za prosljeđivanje umjesto punomoćnika. Također, u CoreDNS dodao readinessProbe, koji sprječava balansiranje opterećenja na odgovarajućim (nespremnim za servis) mahunama.
  • U kubeadmu, na fazama init ili upload-certs, postalo moguće učitajte certifikate potrebne za povezivanje nove kontrolne razine s kubeadm-certs tajnom (upotrijebite oznaku --experimental-upload-certs).
  • Pojavila se alfa verzija za Windows instalacije podrška gMSA (Group Managed Service Account) - posebni računi u Active Directory-u koje također mogu koristiti spremnici.
  • Za G.C.E. aktiviran mTLS enkripcija između etcd-a i kube-apiservera.
  • Ažuriranja korištenog/ovisnog softvera: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, podrška za Docker 18.09 u kubeadmu, a minimalna podržana verzija Docker API-ja sada je 1.26.

PS

Pročitajte i na našem blogu:

Izvor: www.habr.com

Dodajte komentar