Kubernetes 1.14: Najvažnije o tome šta je novo

Kubernetes 1.14: Najvažnije o tome šta je novo

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

Informacije korištene za pripremu ovog materijala su preuzete iz Tabele praćenja poboljšanja Kubernetesa, PROMJENA-1.14 i povezana pitanja, zahtjevi za povlačenjem, predlozi za poboljšanje Kubernetesa (KEP).

Počnimo s važnim uvodom iz životnog ciklusa klastera SIG: dinamički klasteri za nadilaženje greške Kubernetes (ili da budemo precizniji, samo-hostovane HA implementacije) je sada može se kreirati koristeći poznate (u kontekstu klastera sa jednim čvorom) komande kubeadm (init и join). Ukratko, za ovo:

  • sertifikati koje koristi klaster prenose se u tajne;
  • za mogućnost korištenja etcd klastera unutar klastera K8s (tj. otklanjanje prethodno postojeće vanjske zavisnosti) etcd-operator;
  • Dokumentuje preporučene postavke za eksterni balanser opterećenja koji obezbeđuje konfiguraciju otpornu na greške (u budućnosti se planira eliminisanje ove zavisnosti, ali ne u ovoj fazi).

Kubernetes 1.14: Najvažnije o tome šta je novo
Arhitektura Kubernetes HA klastera kreiranog pomoću kubeadm-a

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

API

tim apply i generalno deklarativno upravljanje objektima prošao из kubectl in apiserver. Sami programeri tako ukratko obrazlažu svoju odluku kubectl apply - fundamentalni dio rada sa konfiguracijama u Kubernetesu, međutim, „pun je grešaka i teško ga je popraviti“, te stoga ovu funkcionalnost treba vratiti u normalu i prenijeti na kontrolnu ravan. Jednostavni i jasni primjeri problema koji danas postoje:

Kubernetes 1.14: Najvažnije o tome šta je novo

Detalji o implementaciji su u KEP. Trenutna spremnost je alfa (promocija u beta verziju je planirana za sljedeće izdanje Kubernetesa).

Dostupan u alfa verziji prilika koristeći OpenAPI v3 šemu za kreiranje i objavljivanje OpenAPI dokumentacije za CustomResources (CR) koji se koristi za validaciju (na strani servera) K8s korisnički definiranih resursa (CustomResourceDefinition, CRD). Objavljivanje OpenAPI-ja za CRD omogućava klijentima (npr. kubectl) izvršite provjeru valjanosti na vašoj strani (unutar kubectl create и kubectl apply) i izdati dokumentaciju prema šemi (kubectl explain). Detalji - in KEP.

Prethodno postojeće evidencije se sada otvaraju sa zastavom O_APPEND (ali ne O_TRUNC) da bi se izbjegao gubitak trupaca u nekim situacijama i radi pogodnosti skraćivanja trupaca vanjskim pomoć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 Kubernetes 1.12, gdje se ova klasa pojavila kao alfa verzija), i u Admission Webhooks implementirano mogućnost određivanja koje verzije AdmissionReview podržavaju. Konačno, Admission Webhooks pravila su sada može biti ograničen opseg njihove upotrebe u imenskim prostorima i okvirima klastera.

Trezori

PersistentLocalVolumes, koji je imao beta status od objavljivanja K8s 1.10, obʺâvleny stabilna (GA): ova funkcija kapija više nije onemogućena i biće uklonjena u Kubernetes 1.17.

Sposobnost koristeći varijable okruženja tzv Downward API (na primjer, ime pod) za nazive direktorija montiranih kao subPath, je razvijen - u obliku novog polja subPathExpr, koji se sada koristi za određivanje željenog imena direktorija. Funkcija se prvobitno pojavila u Kubernetesu 1.11, ali je za 1.14 ostala u statusu alfa verzije.

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

CSI

Postao dostupan (kao dio alfa verzije) podrška promjena veličine za CSI volumene. Da biste ga koristili, moraćete da omogućite funkciju kapiju pod nazivom ExpandCSIVolumes, kao i dostupnost podrške za ovu operaciju u određenom CSI drajveru.

Još jedna karakteristika za CSI u alfa verziji - prilika direktno (tj. bez upotrebe PV/PVC) na CSI volumene unutar specifikacije pod. Ovo uklanja ograničenje upotrebe CSI-a kao isključivo udaljenog skladištenja podataka, otvarajući im vrata u svijet lokalne efemerne količine. Za upotrebu (primjer iz dokumentacije) mora biti omogućeno CSIInlineVolume karakteristika kapije.

Takođe je došlo do napretka u “internostima” Kubernetesa vezane za CSI, koje krajnjim korisnicima (administratorima sistema) nisu toliko vidljive... Trenutno su programeri prinuđeni da podržavaju dvije verzije svakog dodatka za skladištenje: jednu – “u stari način”, unutar K8s kodne baze (u -tree), a drugi – kao dio novog CSI (više o tome pročitajte, na primjer, u ovdje). Ovo uzrokuje razumljive neugodnosti koje treba riješiti kako se sam CSI stabilizira. Nije moguće jednostavno odbaciti API internih (u stablu) dodataka zbog relevantnu politiku Kubernetesa.

Sve je to dovelo do toga da je alfa verzija stigla proces migracije interni plugin kod, implementiran kao in-tree, u CSI dodatke, zahvaljujući čemu će se brige programera svesti na podršku jedne verzije njihovih dodataka, a kompatibilnost sa starim API-jima će ostati i mogu se proglasiti zastarjelim u uobičajenom scenariju. Očekuje se da će do sljedećeg izdanja Kubernetesa (1.15) svi dodaci dobavljača oblaka biti migrirani, implementacija će dobiti beta status i biti aktivirana u K8s instalacijama po defaultu. Za detalje pogledajte prijedlog dizajna. Ova migracija je takođe rezultirala neuspeh od ograničenja količine definisanih od strane određenih dobavljača oblaka (AWS, Azure, GCE, Cinder).

Dodatno, podrška za blok uređaje sa CSI (CSIBlockVolume) prebačen na beta verziju.

Čvorovi/Kubelet

Predstavljena alfa verzija nova krajnja tačka u Kubeletu, dizajniran za povratne metrike za ključne resurse. Uopšteno govoreći, ako je ranije Kubelet dobijao statistiku o korišćenju kontejnera od cAdvisor-a, sada ti podaci dolaze iz okruženja za izvršavanje kontejnera preko CRI (Container Runtime Interface), ali je takođe sačuvana kompatibilnost za rad sa starijim verzijama Docker-a. Ranije su statistike prikupljene u Kubelet-u slane preko REST API-ja, ali sada krajnja tačka koja se nalazi na /metrics/resource/v1alpha1. Dugoročna strategija programera sastoji se je minimiziranje skupa metrika koje pruža Kubelet. Usput, ove metrike same sada zovu ne "jezgrene metrike", već "metrike resursa", a opisuju se kao "prvoklasni resursi, kao što su procesor i memorija".

Vrlo zanimljiva nijansa: unatoč jasnoj prednosti u performansama krajnje točke gRPC u poređenju s različitim slučajevima korištenja Prometheus formata (pogledajte rezultat jednog od benčmarka ispod), autori su preferirali tekstualni format Prometeja zbog jasnog vodstva ovog sistema praćenja u zajednici.

“gRPC nije kompatibilan s glavnim cevovodima za praćenje. Krajnja tačka će biti korisna samo za isporuku metrike na Metrics Server ili nadgledanje komponenti koje se direktno integrišu sa njim. Performanse Prometheus tekstualnog formata kada se koristi keširanje u Metrics Serveru dovoljno dobro da bismo preferirali Prometheus u odnosu na gRPC s obzirom na široko rasprostranjeno usvajanje Prometheusa u zajednici. Kada OpenMetrics format postane stabilniji, moći ćemo pristupiti gRPC performansama s proto formatom."

Kubernetes 1.14: Najvažnije o tome šta je novo
Jedan od uporednih testova performansi korišćenja gRPC i Prometheus formata u novoj Kubelet krajnjoj tački za metriku. Više grafikona i drugih detalja možete pronaći u KEP.

Između ostalih promjena:

  • Kubelet sada (jednom) pokušava da prestane kontejneri u nepoznatom stanju prije ponovnog pokretanja i brisanja operacija.
  • Kada koristite PodPresets sada u init kontejner dodano iste informacije kao i za običan kontejner.
  • kubelet počeo da koristim usageNanoCores od dobavljača CRI statistike, i za čvorove i kontejnere na Windows-u dodano mrežna statistika.
  • Informacije o operativnom sistemu i arhitekturi sada se beleže u nalepnicama kubernetes.io/os и kubernetes.io/arch Objekti čvora (preneseni iz beta u GA).
  • Mogućnost specificiranja određene grupe korisnika sistema za kontejnere u pod (RunAsGroup, pojavio se u K8s 1.11) napredno prije beta (podrazumevano omogućeno).
  • du i pronađi korišteno u cAdvisoru, zamijenjen na Go implementaciji.

CLI

U kli-runtime i kubectl dodano -k zastavica za integraciju sa prilagoditi (usput, njegov razvoj se sada odvija u posebnom repozitoriju), tj. za obradu dodatnih YAML datoteka iz posebnih direktorija za prilagođavanje (za detalje o njihovom korištenju pogledajte KEP):

Kubernetes 1.14: Najvažnije o tome šta je novo
Primjer jednostavne upotrebe datoteke prilagođavanje (kompleksnija primjena kustomize je moguća unutar prekrivanja)

Dodatno:

  • Dodano novi tim kubectl create cronjob, čije ime govori samo za sebe.
  • В kubectl logs sada možeš kombinirati zastave -f (--follow za strimovanje dnevnika) i -l (--selector za upit oznake).
  • kubectl učio kopirajte datoteke odabrane pomoću džoker kartice.
  • Timu kubectl wait dodano zastava --all za odabir svih resursa u imenskom prostoru specificiranog tipa resursa.

Ostalo

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

Ostale promjene uvedene u Kubernetes 1.14:

  • Zadana RBAC politika više ne dozvoljava pristup API-ju discovery и access-review korisnika bez autentifikacije (neautorizirano).
  • Zvanična CoreDNS podrška obezbeđeno Samo za Linux, tako da kada koristite kubeadm za njegovo postavljanje (CoreDNS) u klaster, čvorovi moraju raditi samo na Linuxu (nodeSelectors se koristi za ovo ograničenje).
  • Zadana konfiguracija CoreDNS-a je sada koristi naprijed plugin umjesto proxy. Takođe, u CoreDNS-u dodano readinessProbe, koja sprečava balansiranje opterećenja na odgovarajućim (nespremnim za servis) podovima.
  • U kubeadm-u, na fazama init ili upload-certs, postalo moguće učitajte certifikate potrebne za povezivanje nove kontrolne ravni sa kubeadm-certs tajnom (koristite zastavicu --experimental-upload-certs).
  • Pojavila se alfa verzija za Windows instalacije podrška gMSA (Group Managed Service Account) - posebni nalozi u Active Directory-u koji se mogu koristiti i od strane kontejnera.
  • Za G.C.E. aktiviran mTLS enkripcija između etcd i kube-apiservera.
  • Ažuriranja u korištenom/zavisnom softveru: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, podrška za Docker 18.09 u kubeadm-u, a minimalna podržana verzija Docker API-ja je sada 1.26.

PS

Pročitajte i na našem blogu:

izvor: www.habr.com

Dodajte komentar