Kubernetes 1.14: oversigt over hovednyhederne

Kubernetes 1.14: oversigt over hovednyhederne

I aften i efteråret i år. Specifikt drejer det sig om version 69, som vil være tilgængelig i september. I ESR-versioner af Firefox vil Flash-understøttelsen blive opretholdt indtil slutningen af 2020. I de almindelige versioner kan man dog tvinge aktivering af Flash via about:config. endnu en udgivelse af Kubernetes — 1.14. Som en tradition for vores blog, vil vi fortælle om de vigtigste ændringer i den nye version af dette fantastiske Open Source-produkt.

Oplysningerne, der er brugt til at forberede dette materiale, er taget fra Kubernetes enhancements tracking tabel, CHANGELOG-1.14 og de relevante issues, pull requests, Kubernetes Enhancement Proposals (KEP).

Lad os begynde med en vigtig introduktion fra SIG cluster-lifecycle: dynamiske fejltolerante klynger Kubernetes (eller mere præcist, self-hosted HA deployments) kan nu oprettes ved hjælp af de velkendte (i forbindelse med enkelt-node klynger) kommandoer kubeadm (init og sammenføje). Kort fortalt, for at gøre dette:

  • de anvendte klyngecertifikater flyttes til hemmeligheder;
  • for muligheden for at anvende etcd i K8s-klyngen (dvs. fjerne den eksisterende eksterne afhængighed) er etcd-operator;
  • dokumenteret de anbefalede konfigurationer for en ekstern load balancer, der sikrer en fejltolerant konfiguration (muligheden for at fjerne denne afhængighed planlægges senere, men ikke på nuværende tidspunkt).

Kubernetes 1.14: oversigt over hovednyhederne
Architektur for HA-klyngen Kubernetes, oprettet med kubeadm

Med detaljer om implementeringen kan findes i design proposal. Denne funktion har virkelig været ventet: alpha-versionen blev forventet allerede i K8s 1.9, men den er først kommet nu.

API

Kommandoen apply og generelt deklarativ styring af objekter er blevet flyttet af kubectl til apiserver. Selve udviklerne forklarer kort deres beslutning ved, at kubectl apply — en grundlæggende del af arbejdet med konfigurationer i Kubernetes, men "fuld af fejl og svært at rette", hvorfor denne funktionalitet skal bringes i orden og flyttes til control plane. Enkle og klare eksempler på eksisterende problemer i dag:

Kubernetes 1.14: oversigt over hovednyhederne

Detaljer om implementeringen — i KEP. Den nuværende beredskab — alpha-version (fremme til beta er planlagt til den næste udgivelse af Kubernetes).

I alpha-versionen blev tilgængelig mulighed for brugen af OpenAPI v3 skemaet til oprettelse og publicering af OpenAPI-dokumentation for CustomResources (CR), der bruges til validering (på serversiden) af K8s-ressourcer, der er defineret af brugeren (CustomResourceDefinition, CRD). Publicering af OpenAPI for CRD gør det muligt for kunder (for eksempel, kubectl) at udføre validering på deres egen side (inden for kubectl create og kubectl apply) og generere dokumentation for skemaet (kubectl explain). Detaljer — i KEP.

De tidligere eksisterende logs åbnes nu med flag O_APPEND (og ikke O_TRUNC) for at undgå tab af logs i visse situationer og for at gøre det nemmere at truncate logs med eksterne værktøjer til rotation.

I konteksten af Kubernetes API kan det også nævnes, at i PodSandbox og PodSandboxStatus er tilføjet feltet runtime_handler til at håndtere oplysninger om RuntimeClass i pod’en (læs mere om det i teksten om Kubernetes version 1.12, hvor denne klasse blev introduceret som en alpha-version), og i Admission Webhooks er implementeret muligheden for at definere, hvilke versioner AdmissionReview de understøtter. Endelig kan reglerne for Admission Webhooks nu begrænse omfanget af deres anvendelse til namespaces og klyngens rammer.

Lagringssystemer

VedvarendeLokaleVolumes, som havde beta-status siden udgivelsen af K8s 1.10, er blevet stabile (GA): denne feature gate deaktiveres ikke længere og vil blive fjernet i Kubernetes 1.17.

Mulighed anvendelsen af miljøvariabler fra det såkaldte Downward API (for eksempel navnet på pod’en) til navne på kataloger, der er monteret som subPath, har fået udvikling — i form af et nyt felt subPathExpr, hvormed det nu bestemmes, hvilket katalognavn der er nødvendigt. Denne funktion blev først introduceret i Kubernetes 1.11, men forblev i alpha-status i 1.14.

Som i den forrige Kubernetes-udgivelse, er der mange betydelige ændringer præsenteret for den aktivt udviklende CSI (Container Storage Interface):

CSI

blev tilgængelig (i alpha-status) understøttelse af ændringer af størrelsen for CSI-volumener.For at bruge den skal feature gate kaldet ExpandCSIVolumesaktiveres, samt at denne operation skal understøttes af den specifikke CSI-driver.

Endnu en funktion for CSI i alpha-status — mulighed henvise direkte (dvs. uden brug af PV/PVC) til CSI-volumener i pod-specifikationerne. Dette fjerner begrænsningen omkring brugen af CSI som udelukkende eksterne datalagringssystemer, og åbner dørene for dem til lokale temporære volumener.For at bruge (eksempel fra dokumentationen) skal CSIInlineVolume feature gate aktiveres.

Der er også sket fremskridt i "indre" dele af Kubernetes, relateret til CSI, som ikke er så synlige for slutbrugerne (systemadministratorer)… I øjeblikket er udviklerne nødt til at understøtte to versioner af hver lagringsplugin: en — “den gamle måde”, inden for K8s kodebase (in-tree), og den anden — inden for den nye CSI (læs mere om det i her). Dette medfører forståelige ulemper, som skal løses, i takt med at CSI stabiliseres som sådan. Det er ikke muligt blot at erklære interne (in-tree) API'er for forældede (deprecated) på grund af den relevante Kubernetes-politik.

Alt dette har ført til, at alpha-versionerne har nået migrationsprocessen den interne kode for plugins, implementeret som in-tree, til CSI-plugins, hvilket betyder, at udviklernes bekymringer vil være begrænset til at støtte en version af deres plugins, samtidig med at kompatibilitet med gamle API'er bevares, så de kan erklæres forældede efter det sædvanlige scenarie. Det forventes, at alle plugins fra cloududbydere vil være migreret til næste Kubernetes-udgivelse (1.15), implementeringen vil få beta-status og aktiveres i K8s-installationer som standard. Se nærmere i design proposal. Følgen af denne migration er også afvisningen af begrænsninger for volumes, der defineres af specifikke cloududbydere (AWS, Azure, GCE, Cinder).

Desuden er understøttelsen af block devices med CSI (CSIBlockVolume) ført til beta-version.

Noder / Kubelet

Der er præsenteret en alpha-version af det nye endpoint i Kubelet, der er beregnet til at returnere data om centrale ressourcer. Generelt set, hvis Kubelet tidligere modtog statistikker om containerbrug fra cAdvisor, så kommer disse data nu fra containerens runtime gennem CRI (Container Runtime Interface), men der er også bevaret kompatibilitet til at arbejde med gamle versioner af Docker. Den statistik, der tidligere blev indsamlet i Kubelet, blev sendt via REST API, men nu anvendes et endpoint, som er tilgængeligt på adressen /metrics/resource/v1alpha1. Den langsigtede strategi for udviklerne går ud på at minimere mængden af målepunkter, der leveres af Kubelet. For resten kaldes disse målepunkter nu ikke «core metrics», men «resource metrics», og beskrives som «first-class resources, such as cpu, and memory».

Et bemærkelsesværdigt detalje: på trods af den åbenlyse ydelsesfordel ved gRPC-endpoint sammenlignet med forskellige anvendelser af Prometheus-formatet (resultatet af en af benchmarkene, se nedenfor), foretrækker forfatterne det tekstbaserede format fra Prometheus på grund af den åbenlyse føring, som dette overvågningssystem har i samfundet.

«gRPC er ikke kompatibel med de primære overvågningspipeline. Endpointen vil dog være nyttig kun til at levere metrics til Metrics Server eller overvågningskomponenter, der integrerer direkte med den. Ved brug af caching i Metrics Server er ydelsen for tekstformatet Prometheus tilstrækkeligt god for os til at foretrække Prometheus frem for gRPC, givet den brede udbredelse af Prometheus i samfundet. Når formatet OpenMetrics bliver mere stabilt, kan vi nærme os ydeevnen fra gRPC ved hjælp af et proto-baseret format».

Kubernetes 1.14: oversigt over hovednyhederne
En af de sammenlignende ydelsestests, der bruger formaterne gRPC og Prometheus i den nye endpoint Kubelet for metrics. Flere grafer og andre detaljer kan findes i KEP.

Blandt andre ændringer:

flagen -k til integration med

(for øvrigt, dens udvikling foregår nu i et separat repository), det vil sige til behandling af ekstra YAML-filer fra specifikke direktørkustomiseringer (detaljer om brugen kan ses i tilføjet Eksempel på enkel brug af filen kustomize kustomization KEP):

Kubernetes 1.14: oversigt over hovednyhederne
(mere kompleks anvendelse af kustomize mulig indenfor overlays Derudover: den nye kommando)

kubectl create cronjob

  • Tilføjet , hvis navn siger alt. kubectl logskan nu
  • I kombineres flags --follow til streaming af logs) og -f (--selector til label query). -l (lært at kopiere filer, der vælges med wildcard.
  • kubectl I kommandoen kubectl wait
  • flag --all tilføjet til at vælge alle ressourcer i det angivne navnerum for den angivne ressource type. Andre Stabil (GA) status har fået følgende funktioner:

ReadinessGate

Stable (GA) status har fået følgende funktioner:

Andre ændringer præsenteret i Kubernetes 1.14:

  • RBAC-politikken giver ikke længere adgang til API'en discovery og access-review for brugere uden autentifikation (unauthenticated).
  • Officiel understøttelse af CoreDNS leveres kun for Linux, så når du bruger kubeadm til at implementere (CoreDNS) i klyngen, skal noder kun køre på Linux (til denne begrænsning anvendes nodeSelectors).
  • CoreDNS konfigurationen er nu bruger forward-plugin i stedet for proxy. Derudover i CoreDNS tilføjet readinessProbe, der forhindrer belastningsbalancering på de relevante (ikke klar til service) pod'er.
  • I kubeadm, i faserne init eller upload-certs, er det blevet muligt at uploade certifikater, der kræves for at forbinde den nye control-plane til kubeadm-certs hemmeligheden (bruger flaget --experimental-upload-certs).
  • For Windows-installationer er der en alpha-version support gMSA (Group Managed Service Account) — specielle konti i Active Directory, der kan bruges af containere.
  • For GCE blev mTLS-kryptering mellem etcd og kube-apiserver aktiveret. Opdateringer i det anvendte/afhængige software: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, understøttelse af Docker 18.09 i kubeadm, og den mindste understøttede version af Docker API blev 1.26.
  • Kubernetes 1.13: oversigt over de vigtigste nyheder

P.S.

Læs også på vores blog:

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster