Kubernetes 1.14: Жаңылыктын негизги учурлары

Kubernetes 1.14: Жаңылыктын негизги учурлары

Бул түн өтөт Kubernetes кийинки чыгарылышы - 1.14. Биздин блог үчүн иштелип чыккан салтка ылайык, биз бул сонун Open Source продуктунун жаңы версиясында негизги өзгөрүүлөр жөнүндө сөз болуп жатат.

Бул материалды даярдоо үчүн колдонулган маалымат алынган Kubernetes жакшыртууларды көзөмөлдөө таблицалары, CHANGELOG-1.14 жана ага байланыштуу маселелер, тартуу сурамдары, Kubernetes Enhancement Proposals (KEP).

SIG кластердик жашоо циклинин маанилүү киришүүсү менен баштайлы: динамикалык өчүрүү кластерлери Kubernetes (же тагыраак айтканда, өз алдынча HA жайылтуулары) азыр түзүлүшү мүмкүн тааныш (бир түйүндүү кластерлердин контекстинде) буйруктарды колдонуу kubeadm (init и join). Кыскача айтканда, бул үчүн:

  • кластер колдонгон сертификаттар сырга өткөрүлөт;
  • K8s кластеринин ичинде etcd кластерин колдонуу мүмкүнчүлүгү үчүн (б.а. мурда болгон тышкы көз карандылыктан арылуу) etcd-оператор;
  • Мүчүлүштүккө чыдамдуу конфигурацияны камсыз кылган тышкы жүк балансы үчүн сунушталган орнотууларды документтештирет (келечекте бул көз карандылыкты жоюу пландаштырылууда, бирок бул этапта эмес).

Kubernetes 1.14: Жаңылыктын негизги учурлары
kubeadm менен түзүлгөн Kubernetes HA кластеринин архитектурасы

Ишке ашыруунун чоо-жайы менен таанышууга болот дизайн сунушу. Бул функция чындап эле көптөн күткөн: альфа версиясы K8s 1.9да күтүлгөн, бирок азыр гана пайда болду.

API

команда apply жана жалпысынан айтканда декларативдик объектти башкаруу өттү чейин kubectl apiserverде. Иштеп чыгуучулардын өздөрү мындай деп кыскача чечимин түшүндүрүшөт kubectl apply - Кубернетедеги конфигурациялар менен иштөөнүн негизги бөлүгү, бирок "ал мүчүлүштүктөргө толгон жана оңдоо кыйын", ошондуктан бул функцияны кадимки абалга келтирип, башкаруу тегиздигине өткөрүп берүү керек. Бүгүнкү күндө бар көйгөйлөрдүн жөнөкөй жана ачык мисалдары:

Kubernetes 1.14: Жаңылыктын негизги учурлары

Ишке ашыруу боюнча толук маалымат бар САКТА. Учурдагы даярдыгы альфа (бетага жылдыруу кийинки Kubernetes релизинде пландаштырылган).

Альфа версиясында жеткиликтүү мүмкүнчүлүк үчүн OpenAPI v3 схемасын колдонуу CustomResources үчүн OpenAPI документтерин түзүү жана жарыялоо (CR) текшерүү үчүн колдонулат (сервер тарапта) K8s колдонуучу аныктаган ресурстар (CustomResourceDefinition, CRD). CRD үчүн OpenAPI жарыялоо кардарларга (мис. kubectl) валидацияны сиз тарапта аткарыңыз (ичинде kubectl create и kubectl apply) жана схемага ылайык документтерди берүү (kubectl explain). Толук маалымат - in САКТА.

Мурда бар журналдар азыр ачылып жатышат желек менен O_APPEND (Бирок жок O_TRUNC) кээ бир кырдаалдарда журналдардын жоголушун болтурбоо үчүн жана айлануу үчүн тышкы утилиталар менен журналдарды кыскартуунун ыңгайлуулугу үчүн.

Ошондой эле Kubernetes API контекстинде белгилей кетүү керек PodSandbox и PodSandboxStatus кошулду талаа runtime_handler жөнүндө маалыматтарды жазуу RuntimeClass pod (бул тууралуу кененирээк жөнүндө тексттен окуңуз Kubernetes 1.12 чыгарылышы, бул класс альфа версиясы катары пайда болгон) жана Кабыл алуу вебхуктарында ишке ашырылган кайсы версияларды аныктоо мүмкүнчүлүгү AdmissionReview колдошот. Акыр-аягы, кабыл алуу Webhooks эрежелери азыр чектелиши мүмкүн аттар мейкиндиктери жана кластердик алкактар ​​тарабынан алардын колдонулуш көлөмү.

Vault

PersistentLocalVolumes, чыгарылгандан бери бета статусуна ээ болгон K8s 1.10, деп туруктуу (GA): бул өзгөчөлүк дарбазасы мындан ары өчүрүлгөн жана Kubernetes 1.17де алынып салынат.

мүмкүнчүлүк деп аталган чөйрө өзгөрмөлөрүн колдонуу Төмөнкү API (мисалы, подкасттын аталышы) катары орнотулган каталогдордун аттары үчүн subPath, иштелип чыккан - жаңы талаа түрүндө subPathExpr, ал азыр каалаган каталогдун атын аныктоо үчүн колдонулат. Бул өзгөчөлүк алгач Kubernetes 1.11де пайда болгон, бирок 1.14 үчүн ал альфа версиясынын статусунда калган.

Мурунку Kubernetes релизиндегидей эле, жигердүү өнүгүп жаткан CSI (Container Storage Interface) үчүн көптөгөн олуттуу өзгөрүүлөр киргизилген:

CSI

Жеткиликтүү болду (альфа версиясынын бир бөлүгү катары) колдоо CSI томдору үчүн өлчөмүн өзгөртүү. Аны колдонуу үчүн сиз аталган функция дарбазасын иштетишиңиз керек ExpandCSIVolumes, ошондой эле белгилүү бир CSI драйверинде бул операцияны колдоонун болушу.

Альфа версиясында CSI үчүн дагы бир өзгөчөлүк - мүмкүнчүлүк түздөн-түз (б.а. PV/PVC колдонбостон) pod спецификациясынын ичиндеги CSI томдоруна кайрылыңыз. Бул бир гана алыскы маалымат сактагыч катары CSI колдонууга болгон чектөөнү алып салат, алар үчүн дүйнө эшиктерин ачат жергиликтүү эфемердик көлөмдөр. Колдонуу үчүн (документациядан мисал) иштетилиши керек CSIInlineVolume өзгөчөлүк дарбазасы.

CSI менен байланышкан Kubernetesтин "ичкисинде" да прогресс байкалды, алар акыркы колдонуучуларга (системанын администраторлоруна) анчалык көрүнбөйт ... Учурда иштеп чыгуучулар ар бир сактагыч плагининин эки версиясын колдоого аргасыз болушат: бири - "жылы эски жол", K8s код базасынын ичинде (даракта), ал эми экинчиси - жаңы CSI бөлүгү катары (Мисалы, бул тууралуу көбүрөөк оку бул жерде). Бул түшүнүктүү ыңгайсыздыктарды жаратат, алар CSI өзү турукташтырылганда чечилиши керек. Буга байланыштуу ички (даракта) плагиндердин API'син жөн эле жокко чыгаруу мүмкүн эмес тиешелүү Kubernetes саясаты.

Мунун баары альфа версиясына жеткенине алып келди миграция процесси ички плагин коду, дарак ичинде, CSI плагиндеринде ишке ашырылган, мунун аркасында иштеп чыгуучулардын түйшүгү алардын плагиндеринин бир версиясын колдоого чейин кыскарат жана эски API менен шайкештик сакталып калат жана алар кадимки сценарийде эскирген деп жарыяланышы мүмкүн. Kubernetes (1.15) кийинки чыгарылышы менен бардык булут провайдеринин плагиндери көчүрүлүп, ишке ашыруу бета статусун алат жана демейки боюнча K8s орнотууларында жандырылат деп күтүлүүдө. чоо-жайы үчүн, карагыла дизайн сунушу. Бул миграция да алып келди ката белгилүү булут провайдерлери (AWS, Azure, GCE, Cinder) тарабынан аныкталган көлөмдүн чегинен.

Мындан тышкары, CSI менен блок түзмөктөрдү колдоо (CSIBlockVolume) өткөрүлүп берилди бета версиясына.

Түйүндөр/Кубелет

Альфа версиясы көрсөтүлдү жаңы акыркы чекит үчүн иштелип чыккан Kubelet жылы негизги ресурстар боюнча көрсөткүчтөрдү кайтаруу. Жалпысынан айтканда, эгерде мурда Кубелет cAdvisorдан контейнерди колдонуу боюнча статистиканы алса, эми бул маалыматтар CRI (Container Runtime Interface) аркылуу контейнердин иштөө чөйрөсүнөн келет, бирок Dockerдин эски версиялары менен иштөө үчүн шайкештик да сакталып калган. Буга чейин Kubelet'те чогултулган статистика REST API аркылуу жөнөтүлчү, бирок азыр акыркы чекит: /metrics/resource/v1alpha1. Иштеп чыгуучулардын узак мөөнөттүү стратегиясы турат Kubelet тарабынан берилген метрикалардын топтомун минималдаштыруу болуп саналат. Айтмакчы, бул көрсөткүчтөр өздөрү азыр чакырышат "Негизги көрсөткүчтөр" эмес, "ресурстук көрсөткүчтөр" жана "биринчи класстагы ресурстар, мисалы, CPU жана эс тутум" катары сүрөттөлөт.

Абдан кызыктуу нюанс: Prometheus форматын колдонуунун ар кандай учурларына салыштырмалуу gRPC акыркы чекитинин так аткаруу артыкчылыгына карабастан (төмөнкү көрсөткүчтөрдүн биринин жыйынтыгын караңыз), авторлор коомчулукта бул мониторинг системасынын так жетекчилигинен улам Прометейдин текст форматын артык көрүшкөн.

“gRPC негизги мониторинг түтүктөрү менен шайкеш келбейт. Endpoint метрикаларды Metrics Server же аны менен түздөн-түз интеграцияланган мониторинг компоненттерин жеткирүү үчүн гана пайдалуу болот. Metrics серверинде кэшти колдонууда Prometheus текст форматынын иштеши жетиштүү жакшы коомдо Прометейди кеңири кабыл алууну эске алганда, биз Прометейди gRPCден артык көрүшүбүз үчүн. OpenMetrics форматы туруктуураак болгондон кийин, биз gRPC көрсөткүчүнө прото негизделген формат менен жакындай алабыз."

Kubernetes 1.14: Жаңылыктын негизги учурлары
Metrics үчүн жаңы Kubelet акыркы чекитинде gRPC жана Prometheus форматтарын колдонуунун салыштырмалуу натыйжалуулугун сыноолордун бири. Көбүрөөк графиктер жана башка майда-чүйдөсүнө чейин тапса болот САКТА.

Башка өзгөрүүлөрдүн арасында:

  • Kubelet азыр (бир жолу) токтотууга аракет кылууда кайра баштоо жана операцияларды жок кылуу алдында белгисиз абалда контейнерлер.
  • колдонууда PodPresets азыр баштапкы контейнерге кошулат кадимки идиш үчүн эле маалымат.
  • Кубелет колдоно баштады usageNanoCores CRI статистикасы провайдеринен жана Windows'догу түйүндөр жана контейнерлер үчүн кошулду тармак статистикасы.
  • Операциялык система жана архитектура тууралуу маалымат азыр энбелгилерде жазылган kubernetes.io/os и kubernetes.io/arch Түйүн объекттери (бетадан GAга которулган).
  • Подтогу контейнерлер үчүн белгилүү бир системанын колдонуучу тобун көрсөтүү мүмкүнчүлүгү (RunAsGroup, пайда болгон K8s 1.11) өнүккөн бетадан мурун (демейки боюнча иштетилген).
  • du жана cAdvisor'до колдонулган табуу, алмаштырылды ишке ашыруу боюнча.

CLI

Кли-рунда жана кубектлде кошулду менен интеграциялоо үчүн -k желеги ыңгайлаштыруу (Айтмакчы, аны иштеп чыгуу азыр өзүнчө репозиторийде жүргүзүлөт), б.а. атайын кустомизация каталогдорунан кошумча YAML файлдарын иштетүү үчүн (аларды колдонуу боюнча чоо-жайын караңыз САКТА):

Kubernetes 1.14: Жаңылыктын негизги учурлары
Жөнөкөй файлды колдонуунун мисалы ыңгайлаштыруу (кустомизацияны татаалыраак колдонуу ичинде мүмкүн үстүнө коюлган)

Мындан тышкары:

  • Кошулган жаңы команда kubectl create cronjob, кимдин аты өзү үчүн сүйлөйт.
  • В kubectl logs азыр сен болот бириктирүү желектер -f (--follow агымдык журналдар үчүн) жана -l (--selector энбелги суроосу үчүн).
  • kubectl үйрөткөн жапайы карта менен тандалган файлдарды көчүрүү.
  • Командага kubectl wait кошулду желек --all көрсөтүлгөн ресурс түрүнүн аталыш мейкиндигинде бардык ресурстарды тандоо.

башка

Төмөнкү мүмкүнчүлүктөр туруктуу (GA) статусун алышты:

Kubernetes 1.14 киргизилген башка өзгөртүүлөр:

  • Демейки RBAC саясаты мындан ары API мүмкүнчүлүгүн бербейт discovery и access-review аутентификациясы жок колдонуучулар (аныктыгы текшерилбеген).
  • Расмий CoreDNS колдоосу камсыздалган Linux гана, ошондуктан аны (CoreDNS) кластерде жайылтуу үчүн kubeadm колдонгондо, түйүндөр Linux'та гана иштеши керек (бул чектөө үчүн nodeSelectors колдонулат).
  • Демейки CoreDNS конфигурациясы азыр колдонуу алдыга плагин прокси ордуна. Ошондой эле, CoreDNS кошулду ReadinessProbe, ал ылайыктуу (кызмат көрсөтүүгө даяр эмес) поддондордо жүктү тең салмактоого жол бербейт.
  • Кубеадмда, фазалар боюнча init же upload-certs, мүмкүн болуп калды жаңы башкаруу учакты kubeadm-certs сырына туташтыруу үчүн зарыл болгон сертификаттарды жүктөө (желекти колдонуңуз --experimental-upload-certs).
  • Windows орнотуулары үчүн альфа версиясы пайда болду колдоо gMSA (Group Managed Service Account) - Active Directoryдеги атайын эсептер, аларды контейнерлер да колдонсо болот.
  • G.C.E үчүн жандырылды etcd жана kube-аписервердин ортосундагы mTLS шифрлөө.
  • Колдонулган/көз каранды программалык камсыздоонун жаңыртуулары: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, kubeadmде Docker 18.09 колдоосу жана минималдуу колдоого алынган Docker API версиясы азыр 1.26.

PS

Биздин блогдон дагы окуңуз:

Source: www.habr.com

Комментарий кошуу