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 аписерверде. Әзірлеушілердің өздері шешімді осылайша қысқаша түсіндіреді kubectl apply - Kubernetes конфигурацияларымен жұмыс істеудің негізгі бөлігі, алайда, «ол қателерге толы және оны түзету қиын», сондықтан бұл функцияны қалыпты күйге келтіріп, басқару деңгейіне көшіру керек. Қазіргі кездегі проблемалардың қарапайым және түсінікті мысалдары:

Kubernetes 1.14: негізгі инновацияларға шолу

Іске асыру туралы толығырақ ақпарат берілген КЭП. Ағымдағы дайындық - альфа (бета нұсқасына жылжыту келесі Kubernetes шығарылымында жоспарланған).

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

Бұрыннан бар журналдар қазір ашылуда тумен O_APPEND (және жоқ O_TRUNC) кейбір жағдайларда журналдардың жоғалуын болдырмау және айналдыруға арналған сыртқы утилиталармен журналдарды қысқартуға ыңғайлы болу үшін.

Сондай-ақ Kubernetes API контекстінде мынаны атап өтуге болады PodSandbox и PodSandboxStatus қосылды өріс runtime_handler туралы ақпаратты жазу RuntimeClass подводта (бұл туралы толығырақ туралы мәтіннен оқыңыз Kubernetes 1.12 шығарылымы, мұнда бұл сынып альфа нұсқасы ретінде пайда болды) және Қабылдау вебхуктарында жүзеге асырылды қандай нұсқаларын анықтау мүмкіндігі AdmissionReview олар қолдайды. Ақырында, қабылдау веб-хуктарының ережелері енді шектелуі мүмкін аттар кеңістігі және кластерлік құрылымдар арқылы оларды пайдалану дәрежесі.

Сақтау

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 қолданбай) подтөк спецификациядағы 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 ұсынған көрсеткіштер жинағын азайту болып табылады. Айтпақшы, бұл көрсеткіштердің өзі енді олар шақырады «негізгі көрсеткіштер» емес, «ресурс көрсеткіштері» және «процессор және жад сияқты бірінші сыныпты ресурстар» ретінде сипатталады.

Өте қызықты нюанс: Prometheus пішімін пайдаланудың әртүрлі жағдайларымен салыстырғанда gRPC соңғы нүктесінің айқын өнімділігіне қарамастан (төмендегі эталондардың бірінің нәтижесін қараңыз), авторлар қауымдастықтағы осы бақылау жүйесінің айқын көшбасшылығына байланысты Прометейдің мәтіндік форматын таңдады.

«gRPC негізгі бақылау құбырларымен үйлесімді емес. Соңғы нүкте метриканы Metrics серверіне жеткізу немесе онымен тікелей біріктірілген бақылау құрамдастарын жеткізу үшін ғана пайдалы болады. Metrics серверінде кэштеуді пайдалану кезінде Prometheus мәтін пішімінің өнімділігі жеткілікті жақсы қоғамда Прометейді кеңінен қабылдауды ескере отырып, біз үшін Прометейді gRPC-тен артық көру. OpenMetrics пішімі тұрақтырақ болғаннан кейін, біз gRPC өнімділігіне прото-негізделген пішіммен жақындай аламыз.

Kubernetes 1.14: негізгі инновацияларға шолу
Көрсеткіштерге арналған жаңа Kubelet соңғы нүктесінде gRPC және Prometheus пішімдерін пайдаланудың салыстырмалы өнімділік сынақтарының бірі. Қосымша графиктер мен басқа мәліметтерді мына жерден табуға болады КЭП.

Басқа өзгерістер арасында:

  • Қазір Кубелет (бір рет) тоқтатуға тырысады қайта іске қосу және жою әрекеттері алдында контейнерлер белгісіз күйде.
  • Пайдаланған кезде PodPresets енді бастапқы контейнерге қосылады кәдімгі контейнердегідей ақпарат.
  • Кубелет қолдана бастады usageNanoCores CRI статистикалық провайдерінен және Windows жүйесіндегі түйіндер мен контейнерлер үшін қосылды желі статистикасы.
  • Операциялық жүйе және архитектура туралы ақпарат енді белгілерге жазылады kubernetes.io/os и kubernetes.io/arch Түйін нысандары (бетадан GA-ға көшірілді).
  • Бөлмедегі контейнерлер үшін арнайы жүйе пайдаланушылар тобын көрсету мүмкіндігі (RunAsGroup, ішінде пайда болды K8s 1.11) озат бета нұсқасына дейін (әдепкі бойынша қосылған).
  • du және cAdvisor қолданбасында қолданылған табу, ауыстырылды on Go жүзеге асыру.

CLI

Cli-орындау уақытында және kubectl қосылды -k интегралдау үшін жалауша теңшеу (айтпақшы, оның дамуы қазір жеке репозиторийде жүзеге асырылады), яғни. арнайы кустомизация каталогтарынан қосымша YAML файлдарын өңдеу үшін (оларды пайдалану туралы толық ақпаратты қараңыз КЭП):

Kubernetes 1.14: негізгі инновацияларға шолу
Қарапайым файлды пайдалану мысалы теңшеу (ішінде кустомизацияның күрделірек қолданылуы мүмкін қабаттасулар)

Сонымен қатар:

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

Басқа

Келесі мүмкіндіктер тұрақты (GA) күйге ие болды:

Kubernetes 1.14-те енгізілген басқа өзгерістер:

  • Әдепкі RBAC саясаты енді API қатынасына рұқсат бермейді discovery и access-review аутентификациясыз пайдаланушылар (аутентификацияланбаған).
  • Ресми CoreDNS қолдауы қамтамасыз етілген Тек Linux, сондықтан оны кластерде (CoreDNS) орналастыру үшін kubeadm пайдаланған кезде түйіндер тек Linux жүйесінде жұмыс істеуі керек (бұл шектеу үшін nodeSelectors пайдаланылады).
  • Әдепкі CoreDNS конфигурациясы қазір пайдаланады алға плагин прокси орнына. Сондай-ақ, CoreDNS қосылды ReadinessProbe, ол сәйкес (қызмет көрсетуге дайын емес) бағандарда жүктемені теңестіруге жол бермейді.
  • kubeadm, фазалар бойынша init немесе upload-certs, мүмкін болды жаңа басқару ұшағын kubeadm-certs құпиясына қосу үшін қажетті сертификаттарды жүктеңіз (жалаушаны пайдаланыңыз --experimental-upload-certs).
  • Windows орнатулары үшін альфа нұсқасы пайда болды қолдау gMSA (Топпен басқарылатын қызмет тіркелгісі) - 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

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру