
I natt slĂ€pps Ă€nnu en version av Kubernetes â . Enligt traditionen för vĂ„r blogg kommer vi att berĂ€tta om de viktigaste förĂ€ndringarna i den nya versionen av denna fantastiska Open Source-produkt.
Informationen som anvÀndes för att förbereda detta material har tagits frÄn , och motsvarande issues, pull requests, Kubernetes Enhancement Proposals (KEP).
LÄt oss börja med en viktig introduktion frÄn SIG cluster-lifecycle: dynamiska felresistenta kluster Kubernetes (eller mer exakt, self-hosted HA implementations) kan nu med hjÀlp av de vanliga (i kontexten av kluster med en nod) kommandona kubeadm (init och join). Sammanfattningsvis, för detta:
- de certifikat som klustret anvÀnder flyttas till hemligheter;
- för att möjliggöra anvÀndning av etcd-klustret inuti K8s-klustret (dvs. bli av med den externa beroendet som tidigare fanns) anvÀnds ;
- rekommenderade instÀllningar för den externa lastbalanseraren som sÀkerstÀller en felresistent konfiguration dokumenteras (möjlighet att bli av med detta beroende planeras senare, men inte vid denna tidpunkt).

Arkitekturen för HA-klustret Kubernetes, skapat med kubeadm
Detaljer om implementeringen finns i . Denna funktion har verkligen varit efterlÀngtad: alfa-versionen förvÀntades redan i K8s 1.9, men kom först nu.
API
Team apply och överlag deklarativ hantering av objekt frĂ„n kubectl i apiserver. Utvecklarna förklarar kortfattat sitt beslut med att kubectl apply â en fundamental del av arbetet med konfigurationer i Kubernetes, men "full av buggar och svĂ„r att Ă„tgĂ€rda", varför denna funktionalitet mĂ„ste bringas i ordning och flyttas till control plane. Enkla och tydliga exempel pĂ„ existerande problem idag:

Detaljer om implementeringen finns i . Nuvarande beredskap â alfa-version (övergĂ„ng till beta planeras vid nĂ€sta release av Kubernetes).
I alfa-versionen har möjlighet att anvĂ€nda schemat OpenAPI v3 för skapande och publicering av OpenAPI-dokumentation för CustomResources (CR) som anvĂ€nds för validering (pĂ„ serversidan) av K8s-resurser definierade av anvĂ€ndaren (CustomResourceDefinition, CRD). Publicering av OpenAPI för CRD lĂ„ter kunder (t.ex. ) utföra validering pĂ„ sin sida (inom kubectlkubectl create ) och ge dokumentation om schemat ( och kubectl apply). För detaljer â sekubectl explainDe tidigare loggarna .
öppnas nu med flaggan (och inte O_TRUNC O_TRUNC) för att undvika förlust av loggar i vissa situationer och för bekvÀmligheten av att trunkera loggar med externa verktyg för rotation.
I samband med Kubernetes API kan det ocksÄ nÀmnas att i PodSandbox och PodSandboxStatus fÀltet runtime_handler för att redovisa information om RuntimeClass i pod'en (lÀs mer om det i texten om , dÀr denna klass först dök upp som en alfa-version), samt i Admission Webhooks möjligheten att bestÀmma vilka versioner AdmissionReview de stödjer. Slutligen, i reglerna för Admission Webhooks kan nu omfattningen av deras tillÀmpning till namespaces och klustergrÀnser.
Lagringssystem
, som haft status som beta-versioner sedan releasen , stabila (GA): denna feature gate kan inte lÀngre stÀngas av och kommer att tas bort i Kubernetes 1.17.
anvĂ€ndningen av miljövariabler i sĂ„ kallade (till exempel namnet pĂ„ pod'en) för namn pĂ„ kataloger som monteras som , har fĂ„tt utveckling â i form av ett nytt fĂ€lt subPathExpr, med hjĂ€lp av vilket det nu bestĂ€ms vilket namn pĂ„ katalogen som behövs. Ursprungligen kom funktionen i Kubernetes 1.11, men den var fortfarande i alfa-status för 1.14.
Som i den tidigare releasen av Kubernetes, finns mÄnga betydande förÀndringar presenterade för det aktivt utvecklade CSI (Container Storage Interface):
CSI
Har blivit tillgÀnglig (inom ramen för alfa-versionen) storleksÀndringar för CSI-volymer. För att anvÀnda den krÀvs det att feature gate vid namn ExpandCSIVolumes, samt stöd för denna operation i specifik CSI-drivrutin.
En annan funktion för CSI i alfa-versionen â att direkt referera (dvs. utan att anvĂ€nda PV/PVC) till CSI-volymer inom specifikationen för pod'ar. Detta tar bort begrĂ€nsningen att anvĂ€nda CSI som uteslutande fjĂ€rrlagringslösningar, och öppnar dörrarna för dem till vĂ€rlden av För att anvĂ€nda () krĂ€vs det att CSIInlineVolume feature gate Ă€r aktiverat.
Det har skett framsteg ocksÄ inom "inuti" Kubernetes, relaterat till CSI, som inte Àr sÄ mÀrkbara för slutanvÀndarna (systemadministratörerna)⊠För nÀrvarande tvingas utvecklarna att stödja tvÄ versioner av varje lagringsplugin: en - "pÄ det gamla sÀttet", inuti kodbasen K8s (in-tree), och den andra - inom ramen för den nya CSI (lÀs mer om det till exempel i ). Detta medför förstÄeliga olÀgenheter som mÄste ÄtgÀrdas allteftersom CSI stabiliseras. Att bara deklarera de inbyggda (in-tree) plugin-API:erna som förÄldrade (deprecated) Àr inte möjligt pÄ grund av .
Allt detta har lett till att alfa-versionerna har nÄtt inre kod för plugins, implementerat som in-tree, i CSI-plugins, vilket innebÀr att utvecklarnas bekymmer kommer att reduceras till att stödja en version av sina plugins, medan kompatibiliteten med gamla API:er bevaras och de kan deklareras som förÄldrade enligt det vanliga scenariot. Det förvÀntas att migrationen av alla plugins frÄn molnleverantörer kommer att genomföras till nÀsta Kubernetes-version (1.15), implementeringen kommer att fÄ beta-status och aktiveras i K8s-installationer som standard. Se mer information i . Följden av denna migration har ocksÄ blivit frÄn begrÀnsningar för volymer definierade av specifika molnleverantörer (AWS, Azure, GCE, Cinder).
Dessutom kommer stöd för blockenheter med CSI (CSIBlockVolume) till beta-version.
Noder / Kubelet
En alfa-version har presenterats i Kubelet, avsedd för att returnera mÀtvÀrden för grundlÀggande resurser. Generellt, tidigare fick Kubelet statistik om anvÀndningen av containrar frÄn cAdvisor, men nu kommer dessa data frÄn körmiljön för containern via CRI (Container Runtime Interface), men kompatibiliteten för att arbeta med gamla versioner av Docker har bevarats. Tidigare levererades den statistik som samlades in i Kubelet via REST API, men nu anvÀnds en endpoint som ligger pÄ adressen /metrics/resource/v1alpha1. Utvecklarnas lÄngsiktiga strategi Àr att minimera uppsÀttningen av mÀtvÀrden som tillhandahÄlls av Kubelet. Förresten, dessa mÀtvÀrden inte "core metrics", utan "resource metrics", och beskriver som "first-class resources, such as cpu, and memory".
Ett intressant faktum: trots den uppenbara prestandafördelen med gRPC-endpointen jÀmfört med olika anvÀndningsfall för Prometheus-formatet (resultatet av en av benchmarkarna se nedan), föredrog författarna textformatet frÄn Prometheus pÄ grund av det uppenbara ledarskapet för detta övervakningssystem i samhÀllet.
"gRPC Àr inkompatibelt med de viktigaste övervakningspipelinerna. Endpointen kommer dock att vara anvÀndbar endast för att leverera mÀtvÀrden till Metrics Server eller övervakningskomponenter som integreras direkt med den. Vid anvÀndning av caching i Metrics Server Àr prestandan för textformatet frÄn Prometheus tillrÀckligt bra för oss att föredra Prometheus framför gRPC, med tanke pÄ den breda spridningen av Prometheus i gemenskapen. NÀr OpenMetrics-formatet blir mer stabilt kan vi nÀrma oss gRPC:s prestanda med ett protobaserat format.

Ett av de jÀmförande prestandatesterna av anvÀndning av gRPC- och Prometheus-formaten i den nya endpointen Kubelet för metrik. Fler diagram och andra detaljer kan hittas i .
Bland andra förÀndringar:
- Kubelet försöker nu (en gÄng) behÄllare i okÀnt tillstÄnd innan omstart- och borttagningsoperationer.
- NÀr du anvÀnder har nu init-behÄllare samma information som en vanlig behÄllare.
- Kubelet
usageNanoCoresfrÄn CRI-statistikleverantören, och för noder och behÄllare i Windows nÀtverksstatistik. - Information om operativsystem och arkitektur skrivs nu till etiketter
kubernetes.io/osochkubernetes.io/archför Node-objekt (översatt frÄn beta till GA). - Möjligheten att ange en specifik systemanvÀndargrupp för behÄllare i podden (
RunAsGroup) introducerades i ) till beta-version (aktiverad som standard). - du och find som anvÀnds i cAdvisor, med Go-implementationer.
CLI
I cli-runtime och kubectl flaggan -k för integration med (för övrigt, dess utveckling pÄgÄr nu i ett separat arkiv), det vill sÀga för hantering av ytterligare YAML-filer frÄn sÀrskilda direktingar för kustomization (mer om deras anvÀndning finns i ):

Exempel pÄ enkel anvÀndning av filen (Àven mer avancerad tillÀmpning av kustomize inom ramen för )
Dessutom:
- det nya kommandot
kubectl create cronjob, ett namn som talar för sig sjÀlvt. - I
kubectl logsanvÀndas flaggor-f(--followför loggstreaming) och-l(--selectorför etikettfrÄgor). - kubectl kopiera filer som vÀljs med hjÀlp av wild card.
- I teamet
kubectl waitflagga--allför att vÀlja alla resurser i det angivna typens resursnamn.
Andra
Stabil (GA) status har beviljats följande funktioner:
- , som anvÀnds i pod-specifikationen för att definiera ytterligare villkor som beaktas i podens beredskap;
- Stöd för stora sidor (funktionsport under namnet );
- ;
- PriorityClass API, .
Ăvriga förĂ€ndringar presenterade i Kubernetes 1.14:
- RBAC-policyn ger som standard inte lÀngre tillgÄng till API
discoveryochaccess-reviewanvÀndare utan autentisering (unauthenticated). - Officiellt stöd för CoreDNS endast för Linux, sÄ nÀr du anvÀnder kubeadm för att distribuera den (CoreDNS) i klustret mÄste noderna fungera endast i Linux (för denna begrÀnsning anvÀnds nodeSelectors).
- CoreDNS-konfigurationen Àr nu som standard istÀllet för proxy. Dessutom har CoreDNS readinessProbe, som förhindrar lastbalansering pÄ de relevanta (inte redo för service) podarna.
- I kubeadm, under faserna
initellerupload-certs, att ladda upp certifikat som krĂ€vs för att ansluta en ny control-plane till kubeadm-certs hemlighet (anvĂ€nder flaggan--experimental-upload-certs). - För Windows-installationer har en alfa-version blivit tillgĂ€nglig gMSA (Group Managed Service Account) â speciella konton i Active Directory som kan anvĂ€ndas av containrar.
- För GCE mTLS-kryptering mellan etcd och kube-apiserver.
- Uppdateringar i den anvÀnda/beroende programvaran: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, stöd för Docker 18.09 i kubeadm, och den minimi stödda versionen av Docker API blev 1.26.
P.S.
LÀs Àven i vÄr blogg:
- «»;
- «»;
- «»;
- «».
KĂ€lla: habr.com
