Kubernetes 1.14: шарҳи навовариҳои асосӣ

Kubernetes 1.14: шарҳи навовариҳои асосӣ

Ин шаб баргузор мегардад барориши навбатии Kubernetes - 1.14. Тибқи анъанае, ки барои блоги мо таҳия шудааст, мо дар бораи тағироти калидӣ дар версияи нави ин маҳсулоти аҷиби Open Source сухан меронем.

Маълумоте, ки барои тайёр кардани ин мавод истифода мешавад, аз он гирифта шудааст Ҷадвалҳои пайгирии такмилдиҳии Kubernetes, CHANGELOG-1.14 ва масъалаҳои марбут, дархостҳо, пешниҳодҳои такмилдиҳии Kubernetes (KEP).

Биёед бо як муқаддимаи муҳим аз Claster-Lifecycle SIG оғоз кунем: кластерҳои интиқоли динамикӣ Kubernetes (ё дақиқтараш, ҷойгиркунии худидоракунии HA) ҳоло аст эҷод кардан мумкин аст бо истифода аз фармонҳои шинос (дар контексти кластерҳои як гиреҳ). kubeadm (init и join). Хулоса, барои ин:

  • сертификатҳое, ки кластер истифода мебаранд, ба махфӣ интиқол дода мешаванд;
  • барои имконияти истифодаи кластери etcd дар дохили кластери K8s (яъне халос шудан аз вобастагии қаблан мавҷудбуда) etcd-оператор;
  • Танзимоти тавсияшударо барои тавозуни сарбории беруна ҳуҷҷатгузорӣ мекунад, ки конфигуратсияи ба хатогиҳо тобоварро таъмин мекунад (дар оянда бартараф кардани ин вобастагӣ ба нақша гирифта шудааст, аммо на дар ин марҳила).

Kubernetes 1.14: шарҳи навовариҳои асосӣ
Архитектураи кластери Kubernetes HA бо kubeadm сохта шудааст

Тафсилоти татбиқро дар ин ҷо пайдо кардан мумкин аст пешниҳоди тарҳрезӣ. Ин хусусият воқеан дер боз интизораш буд: версияи алфа дар K8s 1.9 интизор буд, аммо танҳо ҳоло пайдо шуд.

API

гурӯҳ apply ва умуман гуем идоракунии объекти декларативӣ гузашт аз он kubectl дар apiserver. Худи таҳиягарон тасмими худро бо ин гуфтаҳо мухтасар шарҳ медиҳанд kubectl apply - қисми асосии кор бо конфигуратсияҳо дар Кубернетес, аммо "он пур аз хатоҳо ва ислоҳаш душвор аст" ва аз ин рӯ, ин функсияро ба ҳолати муқаррарӣ баргардонидан ва ба ҳавопаймои идоракунӣ интиқол додан лозим аст. Намунаҳои оддӣ ва равшани мушкилоти имрӯза:

Kubernetes 1.14: шарҳи навовариҳои асосӣ

Тафсилот дар бораи татбиқ дар КИП. Омодагии кунунӣ алфа аст (пешбурди бета барои нашри навбатии Kubernetes ба нақша гирифта шудааст).

Дар версияи алфа дастрас карда шудааст имконият бо истифода аз схемаи OpenAPI v3 барои эҷод ва нашри ҳуҷҷатҳои OpenAPI барои CustomResources (CR) барои тасдиқи (тарафи сервер) K8s захираҳои аз ҷониби корбар муайяншуда (CustomResourceDefinition, CRD) истифода мешавад. Нашри OpenAPI барои CRD ба мизоҷон имкон медиҳад (масалан. kubectl) тасдиқро дар тарафи худ иҷро кунед (дар дохили kubectl create и kubectl apply) ва ҳуҷҷатҳоро мувофиқи нақша (kubectl explain). Тафсилот - дар КИП.

Сабтҳои қаблан мавҷудбуда холо кушода мешаванд бо байрак O_APPEND (вале не O_TRUNC) барои пешгирӣ кардани талафоти гузоришҳо дар баъзе ҳолатҳо ва барои қулай кардани буридани гузоришҳо бо хидматҳои беруна барои гардиш.

Инчунин дар заминаи API Kubernetes, метавон қайд кард, ки дар PodSandbox и PodSandboxStatus илова кард майдон runtime_handler барои сабт кардани маълумот дар бораи RuntimeClass дар pod (дар бораи он бештар дар матни дар бораи Нашри Kubernetes 1.12, ки ин синф ҳамчун версияи алфа пайдо шуд) ва дар Webhooks қабул ба амал бароварда шуд қобилияти муайян кардани кадом версияҳо AdmissionReview дастгирй мекунанд. Ниҳоят, қоидаҳои қабули Webhooks ҳоло маҳдуд кардан мумкин аст дараҷаи истифодаи онҳо аз ҷониби фазои номҳо ва чаҳорчӯбаҳои кластерӣ.

Нигоҳдорӣ

PersistentLocalVolumes, ки аз замони баровардан мақоми бета дошт K8s 1.10, эълон кард устувор (GA): ин дарвозаи хусусият дигар ғайрифаъол нест ва дар Kubernetes 1.17 хориҷ карда мешавад.

Имконият бо истифода аз тағйирёбандаҳои муҳити даъват API ба поён (масалан, номи паҳлӯ) барои номҳои директорияҳо ҳамчун subPath, дар шакли сохаи нав кор карда баромада шуд subPathExpr, ки ҳоло барои муайян кардани номи директорияи дилхоҳ истифода мешавад. Хусусият дар аввал дар Kubernetes 1.11 пайдо шуд, аммо барои 1.14 он дар ҳолати версияи алфа боқӣ монд.

Мисли версияи қаблии Kubernetes, барои CSI (Интерфейси нигоҳдории контейнер) фаъолона инкишофёбанда бисёр тағйироти назаррас ворид карда мешаванд:

CSI

Дастрас шуд (ҳамчун қисми версияи алфа) дастгирӣ тағир додани андоза барои ҳаҷми CSI. Барои истифодаи он шумо бояд дарвозаи хусусияти даъватшударо фаъол созед ExpandCSIVolumes, инчунин мавҷудияти дастгирӣ барои ин амалиёт дар як драйвери мушаххаси CSI.

Хусусияти дигар барои CSI дар версияи алфа - имконият мустақиман (яъне бидуни истифодаи PV/PVC) ба ҳаҷмҳои CSI дар доираи мушаххасоти подкӯҳ ишора кунед. Ин маҳдудияти истифодаи CSI-ро ҳамчун нигаҳдории маълумоти дурдаст хориҷ мекунад, ба руи онхо дархои чахон мекушояд ҳаҷми муваққатии маҳаллӣ. Барои истифода (мисол аз ҳуҷҷатҳо) бояд фаъол карда шавад CSIInlineVolume дарвозаи хусусият.

Дар "дохилӣ" -и Kubernetes марбут ба CSI низ пешрафт ба назар мерасад, ки барои корбарони ниҳоӣ (маъмурони система) он қадар намоён нестанд ... Дар айни замон, таҳиягарон маҷбуранд ду версияи ҳар як плагини нигаҳдории худро дастгирӣ кунанд: яке - "дар роҳи кӯҳна», дар дохили коди K8s (дар -дарах) ва дуюм - ҳамчун як қисми CSI нав (дар бораи он бештар хонед, масалан, дар дар ин ҷо). Ин боиси нороҳатиҳои фаҳмо мегардад, ки ҳангоми муътадил шудани худи CSI бояд ҳал карда шаванд. Аз сабаби он, ки API-и плагинҳои дохилӣ (дар-дарахт) ғайриимкон аст сиёсати дахлдори Kubernetes.

Ҳамаи ин ба он оварда расонд, ки версияи алфа расид раванди муҳоҷират рамзи плагини дохилӣ, ҳамчун дар-дарахт, дар плагинҳои CSI амалӣ карда мешавад, ки ба шарофати он нигаронии таҳиягарон ба дастгирии як версияи плагинҳои онҳо кам мешавад ва мутобиқат бо API-ҳои кӯҳна боқӣ мемонад ва онҳо метавонанд дар сенарияи муқаррарӣ кӯҳна эълон карда шаванд. Интизор меравад, ки то нашри навбатии Kubernetes (1.15) ҳама плагинҳои провайдери абрӣ интиқол дода мешаванд, татбиқ мақоми бета мегирад ва дар насбҳои K8s ба таври нобаёнӣ фаъол карда мешавад. Барои тафсилот, нигаред пешниҳоди тарҳрезӣ. Ин муњољират низ боиси он гардид рад аз маҳдудиятҳои ҳаҷми аз ҷониби провайдерҳои мушаххаси абрӣ муайяншуда (AWS, Azure, GCE, Cinder).

Илова бар ин, дастгирии дастгоҳҳои блок бо CSI (CSIBlockVolume) интиқол дода шудааст ба версияи бета.

Гиреҳҳо / Кубелет

Версияи альфа пешниҳод карда шуд нуқтаи нав дар Кубелет, ки барои баргардонидани ченакҳо оид ба захираҳои асосӣ. Умуман, агар Кубелет қаблан омори истифодаи контейнерро аз cAdvisor гирифта бошад, ҳоло ин маълумот аз муҳити кори контейнер тавассути CRI (Container Runtime Interface) меояд, аммо мутобиқат барои кор бо версияҳои кӯҳнаи Docker низ нигоҳ дошта мешавад. Пештар омори дар Кубелет ҷамъовардашуда тавассути REST API фиристода мешуд, аммо ҳоло нуқтаи ниҳоӣ дар /metrics/resource/v1alpha1. Стратегияи дарозмуддати таҳиягарон аст кам кардани маҷмӯи ченакҳои аз ҷониби Kubelet пешниҳодшуда мебошад. Воқеан, ин нишондиҳандаҳо худашон акнун занг мезананд на "метрикаи асосӣ", балки "метрикаи захираҳо" ва ҳамчун "манбаъҳои дараҷаи аввал, ба монанди CPU ва хотира" тавсиф карда мешаванд.

Як нюанси хеле ҷолиб: сарфи назар аз бартарии равшани иҷрои нуқтаи ниҳоии gRPC дар муқоиса бо ҳолатҳои гуногуни истифодаи формати Prometheus (ба натиҷаи яке аз меъёрҳои дар поён овардашуда нигаред), муаллифон формати матнии Прометейро аз сабаби роҳбарии равшани ин системаи мониторинг дар ҷомеа бартарӣ доданд.

"gRPC бо қубурҳои асосии мониторинг мувофиқ нест. Endpoint танҳо барои интиқоли ченакҳо ба Metrics Server ё ҷузъҳои мониторинг, ки мустақиман бо он ҳамгиро мешаванд, муфид хоҳад буд. Иҷрои формати матнии Prometheus ҳангоми истифодаи кэш дар Metrics Server хеле хуб то ки мо бо назардошти қабули густурдаи Прометей дар ҷомеа Прометейро бар gRPC афзалтар донем. Вақте ки формати OpenMetrics устувортар мешавад, мо метавонем ба иҷрои gRPC бо формати прото асосёфта наздик шавем."

Kubernetes 1.14: шарҳи навовариҳои асосӣ
Яке аз санҷишҳои муқоисавии самаранокии истифодаи форматҳои gRPC ва Prometheus дар нуқтаи нави Kubelet барои ченакҳо. Графикҳои бештар ва тафсилоти дигарро дар ин ҷо пайдо кардан мумкин аст КИП.

Дар байни дигар тағйирот:

  • Кубелет ҳоло (як бор) кушиши бас кардан контейнерҳо дар ҳолати номаълум пеш аз бозоғозӣ ва нест кардани амалиёт.
  • Ҳангоми истифода PodPresets Акнун ба контейнери ибтидоӣ илова намуд ҳамон маълумоте, ки барои як контейнер муқаррарӣ аст.
  • Кубелет ба истифода шуруъ намуд usageNanoCores аз провайдери омори CRI ва барои гиреҳҳо ва контейнерҳо дар Windows илова кард омори шабакавӣ.
  • Маълумот дар бораи системаи амалиётӣ ва меъморӣ ҳоло дар тамғакоғазҳо сабт карда мешавад kubernetes.io/os и kubernetes.io/arch Объектҳои гиреҳ (аз бета ба GA интиқол дода мешаванд).
  • Имконияти муайян кардани як гурӯҳи корбари мушаххаси система барои контейнерҳо дар подк (RunAsGroup, пайдо шуд K8s 1.11) пешрафта пеш аз бета (бо нобаёнӣ фаъол аст).
  • du ва пайдо кунед, ки дар cAdvisor истифода мешавад, иваз карда шуд татбиқи Go.

CLI

Дар cli-runtime ва kubectl илова намуд -k байрақ барои ҳамгироӣ бо мутобиқ кардан (дар омади гап, таҳияи он ҳоло дар як анбори алоҳида амалӣ карда мешавад), яъне. барои коркарди файлҳои иловагии YAML аз директорияҳои махсуси кустомизатсия (барои тафсилоти истифодаи онҳо, нигаред КИП):

Kubernetes 1.14: шарҳи навовариҳои асосӣ
Намунаи истифодаи оддии файл мутобиқсозӣ (дар дохили он истифодаи мураккабтари kustomize имконпазир аст такрори)

Илова бар ин:

  • Илова карда шуд дастаи нав kubectl create cronjob, ки номаш барои худ сухан меронад.
  • В kubectl logs акнун шумо метавонед муттахид кардан байракхо -f (--follow барои ҷараёнҳои гузоришҳо) ва -l (--selector барои дархости нишонаҳо).
  • кубектл таълим медод нусхабардории файлҳои интихобшуда бо корти ваҳшӣ.
  • Дар команда kubectl wait илова намуд флаг --all барои интихоб кардани ҳамаи захираҳо дар фазои номи навъи захираҳои муайяншуда.

Дигар

Имкониятҳои зерин мақоми устувор (GA) гирифтанд:

  • ReadinessGate, дар мушаххасоти подшоҳӣ барои муайян кардани шартҳои иловагие, ки ҳангоми омодагӣ ба инобат гирифта шудаанд, истифода мешавад;
  • Дастгирии саҳифаҳои калон (дарвозаи хусусият даъват HugePages);
  • CustomPodDNS;
  • API PriorityClass Афзалият ва афзалият.

Дигар тағиротҳо дар Kubernetes 1.14 ворид карда шудаанд:

  • Сиёсати пешфарз RBAC дигар ба дастрасии API иҷозат намедиҳад discovery и access-review истифодабарандагон бе аутентификатсия (тасдиқнашуда).
  • Дастгирии расмии CoreDNS таъмин карда шудааст Танҳо Linux, бинобар ин ҳангоми истифодаи kubeadm барои ҷойгиркунии он (CoreDNS) дар кластер гиреҳҳо бояд танҳо дар Linux кор кунанд (барои ин маҳдудият nodeSelectors истифода мешаванд).
  • Конфигуратсияи пешфарз CoreDNS ҳоло аст истифода мебарад плагини пеш ба ҷои прокси. Инчунин, дар CoreDNS илова кард ReadinessProbe, ки мувозинати сарборро дар қуттиҳои мувофиқ (ба хидмат омода нест) пешгирӣ мекунад.
  • Дар кубеадм, дар фазахо init ё upload-certs, имконпазир гардид сертификатҳоеро, ки барои пайваст кардани ҳавопаймои нави назоратӣ ба сирри kubeadm-certs лозиманд, бор кунед (парчамро истифода баред --experimental-upload-certs).
  • Версияи алфа барои насби Windows пайдо шуд дастгирӣ gMSA (Ҳисоби хидматрасонии гурӯҳӣ) - ҳисобҳои махсус дар Active Directory, ки метавонанд аз ҷониби контейнерҳо низ истифода шаванд.
  • Барои G.C.E. фаъол карда шуд Рамзгузории mTLS байни etcd ва kube-apiserver.
  • Навсозӣ дар нармафзори истифодашуда/вобаста: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, Docker 18.09 дар kubeadm дастгирӣ мекунад ва версияи ҳадди ақали дастгирӣшудаи Docker API ҳоло 1.26 аст.

PS

Инчунин дар блоги мо хонед:

Манбаъ: will.com

Илова Эзоҳ