Kubernetes 1.14: topimaso ny fanavaozana lehibe

Kubernetes 1.14: topimaso ny fanavaozana lehibe

Ity alina ity hitranga Famoahana manaraka ny Kubernetes - 1.14. Araka ny fomban-drazana novolavolaina ho an'ny bilaoginay dia miresaka momba ny fiovana lehibe amin'ny dikan-teny vaovao amin'ity vokatra Open Source mahafinaritra ity izahay.

Ny fampahalalana ampiasaina hanomanana ity fitaovana ity dia nalaina avy amin'ny tabilao fanaraha-maso fanatsarana Kubernetes, CHANGELOG-1.14 ary olana mifandraika amin'izany, fangatahana fisarihana, Soso-kevitra Fanatsarana ny Kubernetes (KEP).

Andeha isika hanomboka amin'ny fampidirana manan-danja avy amin'ny SIG cluster-lifecycle: dynamic failover clusters Kubernetes (na ny marimarina kokoa, fametrahana HA nampiantrano tena) dia izao azo foronina mampiasa baiko mahazatra (ao anatin'ny tontolon'ny clusters tokana). kubeadm (init и join). Raha fintinina, ho an'ity:

  • ny taratasy fanamarinana ampiasain'ny cluster dia afindra amin'ny tsiambaratelo;
  • ho an'ny fahafahana mampiasa ny cluster etcd ao anatin'ny cluster K8s (izany hoe manala ny fiankinan-doha ivelany efa nisy teo aloha) etcd-operator;
  • Raketo an-tsoratra ny firafitry ny soso-kevitra ho an'ny mpandrindra enta-mavesatra ivelany izay manome fanefena mahazaka lesoka (amin'ny ho avy dia mikasa ny hanafoana izany fiankinan-doha izany, fa tsy amin'ity dingana ity).

Kubernetes 1.14: topimaso ny fanavaozana lehibe
Architecture an'ny cluster Kubernetes HA noforonina tamin'ny kubeadm

Ny antsipiriany momba ny fampiharana dia azo jerena ao amin'ny drafitra drafitra. Tena nandrasana hatry ny ela io endri-javatra io: ny version alpha dia nampoizina tao amin'ny K8s 1.9, saingy vao niseho izao.

API

ekipa apply ary amin'ny ankapobeny fitantanana zavatra fanambarana lasa avy amin'ny kubectl amin'ny apiserver. Ny mpamorona mihitsy no manazava fohifohy ny fanapahan-keviny tamin'ny filazana izany kubectl apply - ampahany fototra amin'ny fiaraha-miasa amin'ny fanamafisana ao amin'ny Kubernetes, na izany aza, "feno bibikely izy io ary sarotra amboarina," ary noho izany dia mila averina amin'ny laoniny ity fiasa ity ary afindra any amin'ny fiaramanidina fanaraha-maso. Ohatra tsotra sy mazava amin'ny olana misy ankehitriny:

Kubernetes 1.14: topimaso ny fanavaozana lehibe

Ny antsipiriany momba ny fampiharana dia ao CAP. Ny fahavononana amin'izao fotoana izao dia alpha (ny fampiroboroboana ny beta dia nomanina ho an'ny famoahana Kubernetes manaraka).

Azo alaina amin'ny version alpha fahafahana mampiasa ny rafitra OpenAPI v3 ho an'ny mamorona sy mamoaka antontan-taratasy OpenAPI ho an'ny CustomResources (CR) ampiasaina hanamarinana ny loharanon-karena voafaritry ny mpampiasa (CustomResourceDefinition, CRD). Ny famoahana OpenAPI ho an'ny CRD dia ahafahan'ny mpanjifa (oh. kubectl) manaova fanamarinana eo amin'ny lafiny anao (ao anatin'ny kubectl create и kubectl apply) ary mamoaka antontan-taratasy araka ny drafitra (kubectl explain). Details - in CAP.

Log efa misy misokatra izao miaraka amin'ny saina O_APPEND (fa tsy O_TRUNC) mba hialana amin'ny fahaverezan'ny hazo amin'ny toe-javatra sasany ary ho fanamorana ny fanapahana hazo miaraka amin'ny fitaovana ivelany ho an'ny fihodinana.

Ao amin'ny tontolon'ny Kubernetes API ihany koa dia azo marihina fa amin'ny PodSandbox и PodSandboxStatus nanampy saha runtime_handler mba hanoratra vaovao momba ny RuntimeClass ao amin'ny pod (vakio bebe kokoa momba izany ao amin'ny lahatsoratra momba ny Kubernetes 1.12, izay nisehoan'ity kilasy ity ho dika alpha), ary ao amin'ny Admission Webhooks ampiharina fahafahana mamaritra izay dikan- AdmissionReview manohana azy ireo. Farany, ny fitsipika Admission Webhooks dia izao azo ferana ny halehiben'ny fampiasana azy ireo amin'ny anaran'ny sehatra sy ny rafitra cluster.

fitahirizana

PersistentLocalVolumes, izay nanana sata beta hatramin'ny namoahana azy K8s 1.10, nanambara stable (GA): tsy kilemaina intsony ity vavahady fampiasa ity ary hesorina ao amin'ny Kubernetes 1.17.

fahafahana mampiasa ny fari-piadidiana tontolo iainana antsoina hoe API midina (ohatra, ny anaran'ny pod) ho an'ny anaran'ny lahatahiry napetraka ho subPath, dia novolavolaina - amin'ny endrika saha vaovao subPathExpr, izay ampiasaina ankehitriny hamaritana ny anaran'ny lahatahiry irina. Ny endri-javatra dia niseho voalohany tao amin'ny Kubernetes 1.11, fa ho an'ny 1.14 dia nijanona tao amin'ny sata version alpha.

Toy ny tamin'ny famoahana Kubernetes teo aloha, fiovana lehibe maro no nampidirina ho an'ny CSI (Container Storage Interface) mavitrika:

CSI

Lasa misy (ho ampahany amin'ny dikan-teny alpha) fanohanana fanovana ny haben'ny CSI. Mba hampiasana azy dia mila mamela ny vavahadin-tserasera antsoina ianao ExpandCSIVolumes, ary koa ny fisian'ny fanohanana an'io asa io amin'ny mpamily CSI manokana.

Endri-javatra iray hafa ho an'ny CSI amin'ny version alpha - fahafahana manondro mivantana (izany hoe tsy mampiasa PV/PVC) amin'ny habetsaky ny CSI ao anatin'ny famaritana pod. izany manaisotra ny famerana ny fampiasana ny CSI ho fitahirizana angon-drakitra lavitra, manokatra varavarana ho an’izao tontolo izao ho azy ireo volume ephemeral eo an-toerana. Ho ampiasaina (ohatra avy amin'ny antontan-taratasy) dia tsy maintsy alefa CSIInlineVolume vavahady endri-javatra.

Nisy ihany koa ny fandrosoana tao amin'ny "anatiny" an'ny Kubernetes mifandraika amin'ny CSI, izay tsy dia hita loatra amin'ny mpampiasa farany (mpiandraikitra ny rafitra) ... Amin'izao fotoana izao, ny mpamorona dia voatery manohana ny dikan-teny roa isaky ny plugin fitehirizana: iray - "ao amin'ny fomba taloha", ao anatin'ny codebase K8s (in-tree), ary ny faharoa - ao anatin'ny CSI vaovao (vakio bebe kokoa momba izany, ohatra, ao amin'ny eto). Izany dia miteraka fahasahiranana azo takarina izay mila vahana satria ny CSI mihitsy no mivaingana. Tsy azo atao ny manafoana fotsiny ny API amin'ny plugins anatiny (in-tree) noho ny politika Kubernetes mifandraika amin'izany.

Izany rehetra izany dia nitarika ho amin'ny zava-misy fa tonga ny alpha version dingana fifindra-monina kaody plugin anatiny, nampiharina ho in-tree, ao amin'ny plugins CSI, noho izany dia hihena ny ahiahin'ny mpamorona amin'ny fanohanana ny dikan-teny iray amin'ny plugins, ary hijanona ny fifanarahana amin'ny API taloha ary azo ambara fa lany andro izy ireo amin'ny toe-javatra mahazatra. Antenaina fa amin'ny famoahana ny Kubernetes (1.15) manaraka dia hifindra monina ny plugins mpamatsy rahona rehetra, ny fampiharana dia hahazo sata beta ary ho mavitrika amin'ny fametrahana K8s amin'ny alàlan'ny default. Raha mila fanazavana fanampiny dia jereo drafitra drafitra. Niteraka io fifindra-monina io koa tsy fahombiazana avy amin'ny fetran'ny habe voafaritry ny mpamatsy rahona manokana (AWS, Azure, GCE, Cinder).

Fanampin'izany, fanohanana ireo fitaovana fanakanana miaraka amin'ny CSI (CSIBlockVolume) nafindra ho beta version.

Nodes/Kubelet

Alfa version atolotra teboka farany ao amin'ny Kubelet, natao ho an'ny mamerina metrika amin'ny loharano fototra. Amin'ny ankapobeny, raha nahazo antontan'isa momba ny fampiasana kaontenera avy amin'ny cAdvisor i Kubelet teo aloha, dia avy amin'ny tontolon'ny container runtime amin'ny alalan'ny CRI (Container Runtime Interface) ity angon-drakitra ity, saingy voatahiry ihany koa ny fampifanarahana amin'ny fiaraha-miasa amin'ny docker taloha. Teo aloha, ny antontan'isa nangonina tao Kubelet dia nalefa tamin'ny alàlan'ny REST API, fa ankehitriny dia misy teboka farany hita ao amin'ny /metrics/resource/v1alpha1. Tetikady maharitra an'ny mpamorona MAHAVONONA dia ny manamaivana ny fitambaran'ny metrika nomen'i Kubelet. Raha ny marina, ireo metrika ireo ihany ankehitriny miantso izy ireo tsy "metrika fototra", fa "metrika loharanon-karena", ary voalaza ho "loharanom-pahalalana voalohany, toy ny cpu, sy ny fitadidiana".

Fihetseham-po tena mahaliana: na dia eo aza ny tombony mazava amin'ny fampisehoana gRPC raha ampitahaina amin'ny tranga isan-karazany amin'ny fampiasana ny endrika Prometheus (jereo ny vokatry ny iray amin'ireo benchmark etsy ambany), naleon'ny mpanoratra ny endrika lahatsoratra an'ny Prometheus noho ny fitarihana mazava an'io rafitra fanaraha-maso io eo amin'ny fiarahamonina.

“Tsy mifanaraka amin'ny fantsona fanaraha-maso lehibe ny gRPC. Ny Endpoint dia tsy ilaina afa-tsy amin'ny fandefasana metrika amin'ny Metrics Server na fanaraha-maso ireo singa mifandray mivantana aminy. Fampisehoana endrika endrika lahatsoratra Prometheus rehefa mampiasa caching ao amin'ny Metrics Server tsaratsara ihany ho tiantsika ny Prometheus noho ny gRPC noho ny fananganan'anaka ny Prometheus miely patrana eo amin'ny fiaraha-monina. Rehefa lasa milamina kokoa ny endrika OpenMetrics, dia ho afaka hanatona ny fampisehoana gRPC miaraka amin'ny endrika mifototra amin'ny proto isika.

Kubernetes 1.14: topimaso ny fanavaozana lehibe
Iray amin'ireo fitsapana fampitahana amin'ny fampiasana ny endrika gRPC sy Prometheus amin'ny teboka farany Kubelet vaovao ho an'ny metrika. Misy grafika sy antsipiriany hafa azo jerena ao CAP.

Anisan'ny fanovana hafa:

  • Kubelet izao (indray mandeha) miezaka mijanona kaontenera ao amin'ny fanjakana tsy fantatra alohan'ny hanombohan'ny hetsika sy hamafa.
  • Rehefa mampiasa PodPresets izao mankany amin'ny container init dia ampiana ny fampahafantarana mitovy amin'ny fitahirizana mahazatra.
  • kubelet nanomboka nampiasa usageNanoCores avy amin'ny mpamatsy antontan'isa CRI, ary ho an'ny nodes sy container amin'ny Windows nanampy antontan'isa tambajotra.
  • Ny fampahalalana momba ny rafitra fiasana sy ny maritrano dia voarakitra anaty etikety ankehitriny kubernetes.io/os и kubernetes.io/arch Zavatra node (nafindra avy amin'ny beta mankany GA).
  • Fahaizana mamaritra vondrona mpampiasa rafitra manokana ho an'ny kaontenera ao anaty pod (RunAsGroup, niseho tao K8s 1.11) mandroso alohan'ny beta (azo atao ny default).
  • du ary mahita ampiasaina ao amin'ny cAdvisor, nosoloana amin'ny fampiharana Go.

CLI

Amin'ny cli-runtime sy kubectl nanampy -k saina ho fampidirana amin'ny Ataovy miavaka (amin'ny lafiny iray, ny fivoarany dia atao amin'ny tahiry mitokana), i.e. mba hikarakarana rakitra YAML fanampiny avy amin'ny lahatahiry kustomization manokana (ho an'ny antsipiriany momba ny fampiasana azy ireo dia jereo CAP):

Kubernetes 1.14: topimaso ny fanavaozana lehibe
Ohatra amin'ny fampiasana rakitra tsotra customization (azo atao ny fampiharana kustomize sarotra kokoa ao anatiny takela)

Ankoatra izany:

  • nanampy ekipa vaovao kubectl create cronjob, izay miteny ho azy ny anarany.
  • В kubectl logs azonao atao izao ka manambatra flags -f (--follow ho an'ny log streaming) ary -l (--selector ho an'ny fangatahana label).
  • kubectl HAMPIANARIN'I kopia rakitra voafantina amin'ny wild card.
  • Ho an'ny ekipa kubectl wait nanampy sainam-pirenena --all hisafidianana ny loharano rehetra ao amin'ny toeran'ny karazana loharano voatondro.

hafa

Nahazo stable (GA) ireto fahaiza-manao manaraka ireto:

Fanovana hafa nampidirina tao amin'ny Kubernetes 1.14:

  • Ny politikan'ny RBAC default dia tsy mamela ny fidirana API intsony discovery и access-review mpampiasa tsy misy authentication (tsy voamarina).
  • Fanohanana ofisialy CoreDNS antoka Linux ihany, ka rehefa mampiasa kubeadm hametrahana azy (CoreDNS) ao anaty cluster, dia tsy maintsy mandeha amin'ny Linux ihany ny nodes (nodeSelectors no ampiasaina amin'io fetra io).
  • Default CoreDNS configuration dia izao fampiasana plugin mandroso fa tsy proxy. Ary koa, amin'ny CoreDNS nanampy ReadinessProbe, izay manakana ny fifandanjana entana amin'ny pods mety (tsy vonona amin'ny serivisy).
  • Ao amin'ny kubeadm, amin'ny dingana init na upload-certs, lasa azo atao ento ny taratasy fanamarinana ilaina hampifandraisana ny fiaramanidina fanaraha-maso vaovao amin'ny tsiambaratelo kubeadm-certs (ampiasao ny saina --experimental-upload-certs).
  • Nipoitra ny version alpha ho an'ny fametrahana Windows fanohanana gMSA (Group Managed Service Account) - kaonty manokana ao amin'ny Active Directory izay azo ampiasaina amin'ny container ihany koa.
  • Ho an'ny G.C.E. mampandeha encryption mTLS eo anelanelan'ny etcd sy kube-apiserver.
  • Fanavaozana amin'ny rindrambaiko ampiasaina/miankina: Mandehana 1.12.1, CSI 1.1, CoreDNS 1.3.1, fanohanana Docker 18.09 amin'ny kubeadm, ary ny docker API ambany indrindra tohana dia 1.26.

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment