Кубернеттер - Википедия - Kubernetes

Кубернет
Kubernetes logo without workmark.svg
Түпнұсқа автор (лар)Google
ӘзірлеушілерCloud Native Computing Foundation
Бастапқы шығарылым7 маусым 2014 ж; 6 жыл бұрын (2014-06-07)[1]
Тұрақты шығарылым
1.20[2] / 2020 жылғы 8 желтоқсан; 7 күн бұрын (2020-12-08)[3]
Репозиторий Мұны Wikidata-да өңде
ЖазылғанБарыңыз
ТүріКластерді басқарудың бағдарламалық жасақтамасы
ЛицензияApache лицензиясы 2.0
Веб-сайткубернеттер.io

Кубернет (әдеттегідей стильдендірілген k8s[4]) болып табылады ашық көзі контейнер -оркестрлеу компьютерді автоматтандыру жүйесі қолдану орналастыру, масштабтау және басқару.[5]

Ол бастапқыда жобаланған Google және қазір Cloud Native Computing Foundation. Ол «орналастыру, масштабтау және қолданбалы контейнерлердің хосттар кластері бойынша жұмысын автоматтандыруға арналған платформаны» қамтамасыз етуге бағытталған.[6] Ол бастапқыда іске қосылған контейнер құралдарының бірқатарымен жұмыс істейді Докер қолдау,[7] содан бері болды ескірген.[8]

Көптеген бұлт қызметтер Kubernetes негізіндегі платформаны немесе қызмет ретінде инфрақұрылымды ұсынады (PaaS немесе IaaS ) Кубернеттер платформаны ұсынатын қызмет ретінде қолданыла алады. Көптеген жеткізушілер сонымен қатар өздерінің Kubernetes фирмалық дистрибьюторларын ұсынады.

Тарих

Google Kubernetes Engine Google Cloud Summit-тегі сөйлесу

Кубернет (κυβερνήτης, Грек тілінен аударғанда «штурман «немесе» ұшқыш «немесе» губернатор «және этимологиялық түбірі кибернетика )[6] Джо Беда, Брендан Бернс және Крейг МакЛукки негізін қалаған,[9] Google-дың басқа инженерлері, соның ішінде Брайан Грант және Тим Хоккин тез қосылды және оны Google 2014 жылдың ортасында жариялады.[10] Оның дамуы мен дизайнына Google-дің ықпалы зор Борг жүйе,[11][12] және жобаға ең көп үлес қосқан көптеген адамдар бұрын Borg-та жұмыс істеген. Google-дегі Кубернетестің кодтық атауы Project 7 болды, сілтеме Star Trek бұрынғыБорг кейіпкер Тоғыздың жетеуі.[13] Кубернетес логотипінің дөңгелегіндегі жеті спиц - бұл осы кодтың атауы. Borg жобасының түпнұсқасы толығымен C ++ тілінде жазылған,[11] бірақ Kubernetes қайта жазылған жүйесі енгізілген Барыңыз.

Kubernetes v1.0 2015 жылдың 21 шілдесінде шығарылды.[14] Kubernetes v1.0 шығарылымымен бірге Google Linux Foundation қалыптастыру Cloud Native Computing Foundation (CNCF)[15] және Кубернетесті тұқым технологиясы ретінде ұсынды. 2016 жылдың ақпанында[16] Хельм[17][18] пакеттер менеджері Кубернетеске шығарылды. 2018 жылдың 6 наурызында Кубернетес жобасы GitHub-дағы міндеттер бойынша тоғызыншы, авторлар мен шығарылымдар бойынша екінші орынға ие болды, Linux ядросы.[19]

V1.18 дейін Кубернетес N-2 қолдау саясатын ұстанды[20] (ең соңғы 3 кішігірім нұсқасы қауіпсіздік пен қателерді түзетуді білдіреді)

V1.19 бастап Кубернетес N-3 қолдау саясатын ұстанады.[21]

Шығарылым тарихы
НұсқаШығару күніЕскертулер
Ескі нұсқасы, енді қолданылмайды: 1.010 шілде 2015Түпнұсқа шығарылым
Ескі нұсқасы, енді қолданылмайды: 1.19 қараша 2015 ж
Ескі нұсқасы, енді қолданылмайды: 1.216 наурыз 2016 ж
Ескі нұсқасы, енді қолданылмайды: 1.31 шілде 2016
Ескі нұсқасы, енді қолданылмайды: 1.426 қыркүйек 2016 ж
Ескі нұсқасы, енді қолданылмайды: 1.512 желтоқсан 2016
Ескі нұсқасы, енді қолданылмайды: 1.628 наурыз 2017 ж
Ескі нұсқасы, енді қолданылмайды: 1.730 маусым 2017 ж
Ескі нұсқасы, енді қолданылмайды: 1.828 тамыз 2017
Ескі нұсқасы, енді қолданылмайды: 1.915 желтоқсан 2017
Ескі нұсқасы, енді қолданылмайды: 1.1028 наурыз 2018 жыл
Ескі нұсқасы, енді қолданылмайды: 1.113 шілде 2018
Ескі нұсқасы, енді қолданылмайды: 1.1227 қыркүйек 2018 жыл
Ескі нұсқасы, енді қолданылмайды: 1.133 желтоқсан 2018
Ескі нұсқасы, енді қолданылмайды: 1.1425 наурыз 2019
Ескі нұсқасы, енді қолданылмайды: 1.1520 маусым 2019
Ескі нұсқасы, енді қолданылмайды: 1.1622 қазан 2019
Ескі нұсқасы, енді қолданылмайды: 1.179 желтоқсан 2019
Ескі нұсқасы, әлі де сақталған: 1.1825 наурыз 2020
Ескі нұсқасы, әлі де сақталған: 1.1926 тамыз 2020[22]1. Kubernetes 1.19 нұсқасынан бастап қолдау терезесі бір жылға дейін ұзартылады[21]
Ескі нұсқасы, әлі де сақталған: 1.19.314 қазан 2020[23]
Ағымдағы тұрақты нұсқа: 1.208 желтоқсан 2020https://kubernetes.io/blog/2020/12/08/kubernetes-1-20-release-announcement/
Аңыз:
Ескі нұсқа
Ескі нұсқасы, әлі де сақталған
Соңғы нұсқасы
Соңғы алдын ала қарау нұсқасы
Болашақ шығарылым

Түсініктер

Кубернет архитектурасының диаграммасы

Кубернетес құрылымдық блоктардың жиынтығын («примитивтер») анықтайды, олар процессорға, жадқа негізделген қосымшаларды орналастыратын, қолдайтын және масштабтайтын механизмдерді жиынтықта ұсынады.[24] немесе теңшелетін көрсеткіштер.[25] Кубернетес еркін байланыстырылған және әр түрлі жүктемелерді қанағаттандыру үшін кеңейтіледі. Бұл кеңеюді көбіне ішкі компоненттер, сондай-ақ Кубернетесте жұмыс жасайтын кеңейтімдер мен контейнерлер пайдаланатын Kubernetes API ұсынады.[26] Платформа есептеу және сақтау ресурстарын ресурстарды объектілер ретінде анықтау арқылы басқарады, содан кейін оларды басқаруға болады.

Кубернет келесі әрекеттерді орындайды бастапқы / реплика архитектурасы. Кубернет құрамдас бөліктерін жеке адамды басқаратын деп бөлуге болады түйін және басқару жазықтығының құрамына кіретіндер.[26][27]

Басқару жазықтығы

Кубернетес шебері кластердің негізгі басқару блогы болып табылады, оның жүктемесін басқарады және жүйеде байланысты басқарады. Кубернетес басқару жазықтығы әр компоненттен тұрады, олардың әрқайсысы өз процесі, бір түйін түйінінде де, бірнеше шеберлерде де қолдана алады. қол жетімділігі жоғары кластерлер.[27] Кубернетес басқару жазықтығының әртүрлі компоненттері:

  • және т.б.: және т.б.[28] - бұл тұрақты, жеңіл, таратылған, маңызды құндылықтар дүкені CoreOS кластердің жалпы күйін көрсететін кластердің конфигурациясы туралы деректерді кез келген уақыт кезеңінде сенімді түрде сақтайтын. Сияқты Apache ZooKeeper, etcd - бұл желі бөлімі кезінде қол жетімділікке сәйкестікті жақтайтын жүйе (қараңыз) CAP теоремасы ). Бұл жүйелілік қызметтерді дұрыс жоспарлау және пайдалану үшін өте маңызды. Kubernetes API сервері etcd's watch API көмегімен кластерді бақылайды және конфигурацияның маңызды өзгерістерін шығарады немесе жай күйдегі кез-келген алшақтықты жайғастырушы жариялаған күйге қайтарады. Мысал ретінде, егер орналастырушы белгілі бір подның үш данасын іске қосу керек деп көрсеткен болса, бұл факт etcd-де сақталады. Егер екі дананың ғана жұмыс істейтіні анықталса, онда бұл delta etcd деректерімен салыстыру арқылы анықталады, ал Кубернетес мұны сол подтың қосымша данасын құруды жоспарлау үшін пайдаланады.[27]
  • API сервері: API сервері негізгі компонент болып табылады және Кубернеттерге қызмет етеді API қолдану JSON аяқталды HTTP, бұл Кубернетесті ішкі және сыртқы интерфейспен қамтамасыз етеді.[26][29] API сервері өңдейді және тексереді Демалыс сұраныстары мен күйлерінің күйі API нысандары etcd, осылайша клиенттерге жұмыс жүктемелері мен контейнерлерді Worker түйіндері бойынша конфигурациялауға мүмкіндік береді.[30]
  • Жоспарлаушы: Жоспарлаушы - бұл ресурстардың қол жетімділігіне қарай жоспарланбаған подды (жоспарлаушы басқаратын негізгі объект) қай түйінде жұмыс істейтінін таңдайтын қосылатын компонент. Жоспарлаушы әр түйінде ресурстардың пайдаланылуын қадағалап, жұмыс көлемінің қол жетімді ресурстардан артық жоспарланбауын қамтамасыз етеді. Осы мақсат үшін жоспарлаушы ресурстарға қойылатын талаптарды, ресурстардың қол жетімділігін және пайдаланушының басқа шектеулері мен саясаттың директиваларын білуі керек, мысалы, қызмет сапасы, жақындық / жақындыққа қарсы талаптар, мәліметтердің орналасуы және т.б. Шын мәнінде, жоспарлаушының рөлі «ұсыныс» ресурсын «сұранысқа» сәйкес келеді.[31]
  • Контроллер менеджері: контроллер - бұл басқарылатын ресурстарды құру, жаңарту және жою үшін API серверімен байланыс орнатып, кластердің нақты күйін қажетті кластерлік күйге жеткізетін салыстыру циклі (подкладкалар, қызметтің соңғы нүктелері және т.б.).[32][29] Контроллер менеджері - бұл Kubernetes негізгі контроллерлерінің жиынтығын басқаратын процесс. Контроллердің бір түрі - бұл репликация мен масштабтауды кластер бойынша подның көшірмелерінің көрсетілген санын іске қосу арқылы өңдейтін репликалау контроллері. Сондай-ақ, егер түйін сәтсіздікке ұшыраса, ауыстыру бүршіктерін жасауды басқарады.[32] Кубернеттердің негізгі жүйесінің құрамына кіретін басқа контроллерлерге DaemonSet контроллері әр машинада (немесе машиналардың кейбір жиынтығында) дәл бір подды іске қосуға арналған және аяқтауға дейін жұмыс істейтін бүршіктерді басқаруға арналған Job Controller кіреді. партиялық жұмыс бөлігі ретінде.[33] Контроллер басқаратын бұршақ жиынтығы контроллер анықтамасына кіретін таңбалауыштар арқылы анықталады.[34]

Түйіндер

Түйін, ол жұмысшы немесе минион деп те аталады, бұл контейнерлер (жұмыс жүктемелері) орналастырылатын машина. Кластердегі әрбір түйін контейнерді іске қосуы керек жұмыс уақыты сияқты Докер, сондай-ақ төменде аталған компоненттер сияқты, осы контейнерлердің желілік конфигурациясы үшін біріншілік байланыс.

  • Кубелет: Кубелет түйіндегі барлық контейнерлердің сау болуын қамтамасыз етіп, әр түйіннің жұмыс күйіне жауап береді. Бұл басқару жазықтығының нұсқауына сәйкес, ыдысқа орналастырылған қолдану контейнерлерін іске қосу, тоқтату және сақтау туралы қамқорлық жасайды.[26][35]
Кубелет түйіршіктің күйін бақылайды, ал егер қалаған күйде болмаса, түйіршік сол түйінге қайта оралады. Түйін мәртебесі бірнеше секунд сайын жүрек соғысы туралы хабарламалар арқылы негізгіге беріледі. Бастапқы түйіннің сәтсіздігін анықтағаннан кейін, реплика контроллері осы күйдің өзгеруін байқайды және басқа сау түйіндерде түйіршіктерді іске қосады.[дәйексөз қажет ]
  • Kube-прокси: Kube-прокси - бұл a-ны іске асыру желілік прокси және а жүктеме теңгерушісі және ол қызметтің абстракциясын басқа желілік операциялармен бірге қолдайды.[26] Ол кірістің сұранысының IP және порт нөмірі негізінде трафикті тиісті контейнерге бағыттауға жауапты.
  • Контейнердің жұмыс уақыты: контейнер ыдыстың ішінде орналасқан. Контейнер - бұл қосымшаны, кітапханаларды және олардың тәуелділіктерін сақтайтын микро қызметтің ең төменгі деңгейі. Сыртқы IP мекен-жайы арқылы контейнерлер әлемге әсер етуі мүмкін. Кубернетес алғашқы нұсқасынан бастап Docker контейнерлерін қолдайды, ал 2016 жылдың шілдесінде rkt контейнер қозғалтқышы қосылды.[36]

Кәстрөлдер

Кубернетестегі жоспарлаудың негізгі бірлігі - бұл под.[37] Қап - бұл контейнерленген компоненттердің топтасуы. Қапшық бір түйінде бірге орналасуына кепілдік берілген бір немесе бірнеше контейнерден тұрады.[26]

Кубернетестегі әрбір подға қосымшаларға порттарды жанжал қаупі жоқ пайдалануға мүмкіндік беретін бірегей IP-мекен-жайы беріледі.[38] Бөлшектің ішінде барлық контейнерлер localhost-та бір-біріне сілтеме жасай алады, бірақ бір ыдыс ішіндегі контейнердің басқа контейнерге басқа контейнерге тікелей бағытталу мүмкіндігі жоқ; ол үшін ол Pod IP мекенжайын қолдануы керек. Қосымшаны жасаушы ешқашан Pod IP-адресін ешқашан басқа пододтың мүмкіндігіне сілтеме жасау / шақыру үшін пайдаланбауы керек, өйткені Pod IP-адрестері уақытша болып табылады - олар сілтеме жасайтын нақты под қайта қосылу кезінде басқа Pod IP-адреске берілуі мүмкін. Оның орнына олар a сілтемесін қолдануы керек Сервис, нақты Pod IP-мекен-жайындағы мақсатты подға сілтеме бар.

Бөлшек жергілікті диск каталогы немесе желілік диск сияқты көлемді анықтай алады және оны қораптағы контейнерлерге шығарады.[39] Кубернет арқылы қолмен басқаруға болады API немесе оларды басқару контроллерге берілуі мүмкін.[26] Мұндай көлемдер ConfigMaps (контейнерге көрінетін файлдық жүйе арқылы конфигурацияға қол жеткізуді қамтамасыз ету үшін) және Құпиялар (қашықтағы ресурстарға қауіпсіз қол жеткізу үшін қажет тіркелгі мәліметтеріне қол жетімділікті қамтамасыз ету үшін Кубернетес) мүмкіндіктерінің негізі болып табылады. рұқсат етілген контейнерлерге).

Реплика жиындары

ReplicaSet-тің мақсаты - кез-келген уақытта жұмыс істейтін реплика поддарының тұрақты жиынтығын сақтау. Осылайша, ол жиі бірдей Pod-дың белгілі бір санының болуына кепілдік беру үшін қолданылады.[40]

ReplicaSet[41] сонымен қатар Кубернетеске берілген под үшін жарияланған жағдайлардың санын сақтауға мүмкіндік беретін топтау механизмі деп айтуға болады. Реплика жиынтығының анықтамасында селектор қолданылады, оның бағалауы онымен байланысты барлық түйіршіктерді анықтауға әкеледі.

Қызметтер

Қызметтердің Кубернетес кластеріндегі Pod желісімен өзара әрекеттесуін көрсететін жеңілдетілген көрініс

Кубернетес қызметі дегеніміз - а деңгейінің бірі сияқты бірігіп жұмыс жасайтын бұршақ жиынтығы көп деңгейлі қолдану. Қызметті құрайтын бүршіктер жиынтығы таңбалауышпен анықталады.[26] Кубернеттер екі режимді ұсынады қызметтің ашылуы, қоршаған ортаның айнымалыларын пайдалану немесе Kubernetes DNS пайдалану.[42] Қызметті табу тұрақты IP мекенжайын тағайындайды және DNS атауы қызметке және жүктеме жүктемесін а айналма робин селекторға сәйкес келетін бүршіктер арасында осы IP-мекен-жайдың желілік қосылуларының тәсілі (сәтсіздіктер бүршіктердің машинадан машинаға ауысуына себеп болса да).[38] Әдепкі бойынша, қызмет кластердің ішінде болады (мысалы, артқы шеті бұршақтарды қызметке топтастыруға болады, олардың алдыңғы қабаттарының сұраныстары олардың арасында теңдестірілген), бірақ қызмет кластерден тыс жерде де көрінуі мүмкін (мысалы, клиенттер алдыңғы түптерге жетуі үшін).[43]

Көлемдер

Кубернетес контейнеріндегі файлдық жүйелер әдепкі бойынша уақытша сақтауды қамтамасыз етеді. Бұл дегеніміз, қаптаманың қайта іске қосылуы осындай контейнерлердегі кез-келген деректерді жояды, сондықтан сақтаудың бұл түрі маңызды емес қосымшаларда ғана шектеледі. Кубернетес томы[44] өміршеңнің өзі үшін тұрақты сақтауды қамтамасыз етеді. Бұл сақтау орнын контейнерлер үшін ортақ дискілік кеңістік ретінде де пайдалануға болады. Көлемдер контейнер ішіндегі арнайы орнату нүктелеріне орнатылады, олар под конфигурациясымен анықталады және басқа томдарға орнатыла алмайды немесе басқа томдарға байланыстырыла алмайды. Бір көлемді файлдық жүйе ағашының әр түрлі нүктелерінде әртүрлі контейнерлермен орнатуға болады.

Атаулар кеңістігі

Кубернетес басқаратын ресурстарды аттар кеңістігі деп аталатын қабаттаспайтын жиынтықтарға бөлуді қамтамасыз етеді.[45] Олар бірнеше пайдаланушыларға немесе жобаларға таралатын көптеген пайдаланушылармен бірге, тіпті даму, сынақ және өндіріс сияқты орталарды пайдалануға арналған.

ConfigMaps және Secrets

Қолданбаның жалпы проблемасы конфигурация ақпаратын қайда сақтау және басқару туралы шешім қабылдау болып табылады, олардың кейбіреулері құпия деректерді қамтуы мүмкін. Конфигурация деректері жеке қасиеттер сияқты ұсақ түйінді немесе бүкіл конфигурация файлдары немесе JSON / XML құжаттары сияқты ірі түйіршікті ақпарат болуы мүмкін. Кубернеттер бұл қажеттілікпен күресу үшін екі өзара байланысты механизмдерді ұсынады: «конфигуралар» және «құпиялар», олардың екеуі де қосымшаны құруды талап етпей конфигурацияны өзгертуге мүмкіндік береді. Конфиграмдар мен құпиялардың деректері қолдану арқылы осы объектілерді байланыстырған қосымшаның барлық даналарына қол жетімді болады. Құпия және / немесе конфигурация картасы тек түйінге жіберіледі, егер сол түйіндегі под үшін қажет болса. Кубернеттер оны сол түйінде жадында сақтайды. Құпияға немесе конфигурация картасына тәуелді подкасток жойылғаннан кейін, барлық құпия және конфигурация карталарының жадтағы көшірмесі де жойылады. Деректерге екі жолдың бірі арқылы қол жеткізуге болады: а) қоршаған орта айнымалылары ретінде (оларды поддон іске қосылған кезде Кубернетес жасайды) немесе б) тек контейнер ішінен көрінетін контейнер файлдық жүйесінде.

Деректердің өзі мастерде сақталады, бұл қауіпсіздігі жоғары машина, оған ешкім кіре алмауы керек. Құпия мен конфигурацияның ең үлкен айырмашылығы - құпиядағы мәліметтер мазмұны base64 кодталған. Кубернетестің соңғы нұсқалары шифрлауды қолдайтын қолданысты енгізді. Құпиялар көбінесе сертификаттарды, парольдерді, құпияларды (сурет регистрлерімен жұмыс істеуге арналған мәліметтер) және ssh кілттерін сақтау үшін қолданылады.

Мемлекеттік жиынтықтар

Азаматтығы жоқ қосымшаларды масштабтау мәселесін шешу өте оңай: оған тек көп жұмыс істейтін бүршіктер қосылады - бұл Кубернетестің жұмысы өте жақсы. Сыртқы жүктемелер әлдеқайда қиын, өйткені егер күйдіргіш қайта іске қосылса, күйді сақтау керек, егер қосымша немесе кішірейтілген болса, онда күйді қайта бөлу қажет болуы мүмкін. Деректер базасы - мемлекеттік жүктеменің мысалы. Қол жетімділігі жоғары режимде жұмыс істегенде, көптеген мәліметтер базасы бастапқы дана және екінші дана (лар) ұғымымен келеді. Бұл жағдайда инстанцияларға тапсырыс беру ұғымы маңызды. Басқа қосымшалар ұнайды Кафка деректерді олардың брокерлері арасында таратыңыз, сондықтан бір брокер екінші брокермен бірдей емес. Бұл жағдайда инстанцияның бірегейлігі ұғымы маңызды. Мемлекеттік жиынтықтар[46] контроллер болып табылады (қараңыз) Контроллер менеджері, төменде) Кубернетес ұсынған, олар бірегейлік қасиеттерін күшейтеді және под даналары арасында ретке келтіреді және жай қосымшаларды іске қосу үшін қолданыла алады.

DaemonSets

Әдетте, бұршақ іске қосылатын орындар Кубернетес Жоспарлағышында жүзеге асырылған алгоритммен анықталады. Кейбір пайдалану жағдайлары үшін кластердегі әрбір түйінге под қосудың қажеттілігі туындауы мүмкін. Бұл журнал жинау, кіру контроллері және сақтау қызметтері сияқты жағдайларды қолдану үшін пайдалы. Под жоспарлаудың осы түрін жасау мүмкіндігі DaemonSets деп аталатын мүмкіндіктің көмегімен жүзеге асырылады.[47]

Жапсырмалар мен селекторлар

Kubernetes клиенттерге (пайдаланушыларға немесе ішкі компоненттерге) жүйеде кез-келген API нысанына «жапсырма» деп аталатын кілттерді қосуға мүмкіндік береді, мысалы: түйіндер. Сәйкесінше, «затбелгі таңдағыштар» дегеніміз - сәйкес келетін нысандарға қатысты шешімдерге қатысты сұрау.[26] Қызмет анықталған кезде, трафикке бағытталатын под даналарын таңдау үшін қызмет маршрутизаторы / жүктеме теңгерушісі пайдаланатын таңбалауыштарды анықтауға болады. Осылайша, тек түйіршіктердің жапсырмаларын өзгерту немесе қызметтегі таңбалауыштарды өзгерту арқылы қай түйіршіктер трафикті алатындығын және қайсысының болмайтындығын басқаруға болады, оларды әртүрлі орналастыру үлгілерін қолдау үшін қолдануға болады. көк-жасыл орналастырулар немесе A-B сынағы. Қызметтің іске асырушы ресурстарды қалай қолдана отырып, инфрақұрылым шеңберінде байланыстыруды қамтамасыз ететіндігін динамикалық түрде бақылау мүмкіндігі.

Мысалы, егер қосымшаның бүршіктерінде жүйеге арналған белгілер болса деңгей (сияқты мәндермен алғы жақ, артқы жағы, мысалы) және а release_track (сияқты мәндермен канария, өндіріс, мысалы), содан кейін барлығына операция артқы жағы және канария түйіндер жапсырма селекторын қолдана алады, мысалы:[34]

tier = back-end AND release_track = канария

Этикеткалар сияқты өрістерді таңдаушылар да Кубернетестің ресурстарын таңдауға мүмкіндік береді. Жапсырмалардан айырмашылығы, таңдау пайдаланушы анықтаған категорияға емес, таңдалған ресурсқа тән төлсипат мәндеріне негізделген. метадеректер аты және metadata.namespace барлық Кубернет объектілерінде болатын өрісті таңдайтындар. Қолдануға болатын басқа селекторлар объект / ресурс түріне байланысты.

Репликалау контроллері және орналастырулары

A ReplicaSet қажет под даналарының санын жариялайды және реплика контроллері жүйені басқарады, осылайша жұмыс істеп тұрған сау қабықшалардың саны ReplicaSet-те (оның селекторын бағалау арқылы анықталған) жарияланған ұяшықтар санына сәйкес келеді.

Орналастырулар - бұл ReplicaSets үшін жоғары деңгейлі басқару механизмі. Реплика контроллері ReplicaSet масштабын басқарады, ал Deployments ReplicaSet-пен не болатынын басқарады - жаңартуды шығару керек пе, жоқ па, т.с. орналастыру масштабталған немесе кішірейтілген кезде бұл декларацияға әкеледі. ReplicaSet өзгерту - және жарияланған күйдегі бұл өзгерісті Replication Controller басқарады.

Қосымшалар

Қондырмалар кластерде жұмыс жасайтын кез-келген басқа бағдарлама сияқты жұмыс істейді: олар поддондар мен қызметтер арқылы жүзеге асырылады және тек Кубернетес кластерінің ерекшеліктерін жүзеге асыратындығымен ерекшеленеді. Бөлшектерді Deployments, ReplicationControllers және т.б. басқаруы мүмкін. Қосымшалар көп, тізім көбейіп келеді. Кейбір маңыздылары:

  • DNS: барлық Kubernetes кластерлерінде DNS кластері болуы керек; бұл міндетті ерекшелік. DNS кластері - бұл сіздің ортаңыздағы басқа DNS серверімен (серверлерімен) қатар, Dubernet серверлері үшін DNS жазбаларына қызмет ететін DNS сервері. Кубернетес бастаған контейнерлер автоматты түрде осы DNS серверін DNS іздеуіне қосады.
  • Веб-интерфейс: бұл Kubernetes кластерлеріне арналған веб-интерфейс. Ол қолданушыларға кластерде жұмыс істейтін қосымшаларды, сондай-ақ кластердің өзін басқаруға және ақаулықтарды жоюға мүмкіндік береді.
  • Контейнер ресурстарының мониторингі: қосымшаның сенімді жұмыс уақытын қамтамасыз ету және оны жұмыс жүктемесіне жауап ретінде жоғарылатып немесе төмендету, жұмыс жүктемесінің өнімділігін үздіксіз және тиімді бақылау мүмкіндігін білдіреді. Контейнерлердің ресурстарын бақылау бұл мүмкіндікті контейнерлер туралы көрсеткіштерді орталық мәліметтер базасында тіркеу арқылы қамтамасыз етеді және осы деректерді шолу үшін интерфейсті ұсынады. CAdvisor - шектеулі метрикалық бақылау мүмкіндігін қамтамасыз ететін құл түйініндегі компонент. Мониторингтің көптеген қажеттіліктерін қанағаттандыра алатын Prometheus сияқты толық метрикалық құбырлар бар.
  • Кластер деңгейіндегі журнал жүргізу: журналдарда түйіндерге, бүршіктерге немесе контейнерлерге тәуелсіз бөлек сақтау және өмірлік цикл болуы керек. Әйтпесе, түйіннің немесе подның істен шығуы оқиға туралы деректердің жоғалуына әкелуі мүмкін. Мұны істеу мүмкіндігі кластерлік деңгейдегі журнал деп аталады, және мұндай механизмдер контейнер журналдарын іздеу / шолу интерфейсі бар орталық журнал дүкеніне сақтауға жауап береді. Kubernetes журнал деректері үшін жергілікті сақтауды қамтамасыз етпейді, бірақ Kubernetes кластеріне көптеген қолданыстағы тіркеу шешімдерін біріктіруге болады.

Сақтау орны

Бағдарламалық жасақтаманы портативті ету тәсілі ретінде контейнерлер пайда болды. Контейнерде қызметті іске қосу үшін қажет барлық пакеттер бар. Берілген файлдық жүйе контейнерлерді өте портативті етеді және оларды әзірлеу кезінде қолдануға ыңғайлы. Контейнерді конфигурация өзгертпейтін немесе салыстырмалы түрде аз өзгерте отырып, әзірлеуден сынаққа немесе өндіріске ауыстыруға болады.

Тарихи жағынан Кубернет тек азаматтығы жоқ қызметтерге жарамды болды. Алайда, көптеген қосымшаларда мәліметтер базасы бар, олар табандылықты қажет етеді, бұл Кубернетес үшін тұрақты сақтау орнын құруға әкеледі. Контейнерлерге арналған тұрақты сақтауды жүзеге асыру - бұл Kubernetes әкімшілерінің, DevOps және бұлтты инженерлердің ең маңызды мәселелерінің бірі. Контейнерлер уақытша болуы мүмкін, бірақ олардың көп мөлшері жоқ, сондықтан контейнер тоқтаған немесе аппараттық құрал істен шыққан жағдайда деректердің сақталуын қамтамасыз ету қажет.

Кубернеттермен немесе контейнерленген қосымшалармен контейнерлерді орналастыру кезінде компаниялар үнемі сақтау қажет екенін түсінеді. Олар дерекқорларды, түбірлік кескіндерді және контейнерлер пайдаланатын басқа деректерді жылдам және сенімді сақтауды қамтамасыз етуі керек.

Ландшафттан басқа, Cloud Native Computing Foundation (CNCF), Kubernetes Persistent Storage туралы басқа ақпаратты, оның ішінде контейнерге бекітілген сақтау үлгісін анықтауға көмектесетін блогты жариялады. Бұл үлгіні Кубернетестің өзін сақтау жүйесінің немесе қызметтің құрамдас бөлігі ретінде қолданатын үлгі деп санауға болады.[48]

Осы және басқа тәсілдердің салыстырмалы танымалдығы туралы көбірек ақпаратты CNCF ландшафты түсірілімінен табуға болады, бұл MayaData мен Rook ұсынған OpenEBS - сақтау оркестрінің жобасы - күз мезгілінде бағалауға болатын екі жоба болғанын көрсетті. 2019 ж.[49]

Контейнерді сақтау - бұл Кубернетес танымал бола бастаған кезде пайда болған деректерді сақтау түрі. Контейнерді сақтау әдісі немесе үлгісі, негізінен блок, файл, объект және интерфейстерді Кубернетте жұмыс істейтін жүктемелерге жеткізе отырып, белгілі бір мүмкіндіктерге Кубернетестің өзіне сүйенеді.[50]

Контейнерді сақтаудың кең таралған атрибуттарына Кубернетеске арналған кеңейтімдерді қолдану, мысалы, теңшелетін ресурстық анықтамалар және Кубернетестің өзін, егер ол басқаша сақталатын және сақтау немесе деректерді басқару үшін орналастырылатын функциялар үшін пайдаланылуы кіретін болса. Реттелетін ресурстар анықтамалары немесе Кубернетестің өзі жеткізетін функционалдылықтың мысалдары Кубернетестің өзі жеткізген қайталану логикасын және қол жетімді сақтау құралдары мен көлемдерінің тізімдемесін құру мен жүргізуді қамтиды.[51][52]

API

Кубернеттер негізіндегі жобалау принциптері Кубернетес кластерлерін бағдарламалық құруға, конфигурациялауға және басқаруға мүмкіндік береді. Бұл функция кластерлік API деп аталатын API арқылы көрінеді. API-де қамтылған негізгі тұжырымдама - бұл Кубернетес кластері - бұл кез-келген басқа Кубернетес ресурстары сияқты басқаруға болатын ресурс / объект деген ұғым. Сол сияқты кластерді құрайтын машиналар Кубернетес қоры ретінде қарастырылады. API екі бөліктен тұрады - негізгі API және провайдердің іске асырылуы. Провайдердің іске асырылуы бұлтты провайдердің қызметтері мен ресурстарымен жақсы интеграцияланған Kubernetes кластерлік API ұсынуға мүмкіндік беретін арнайы функциялардан тұрады.

Қолданады

Кубернеттер әдетте микросервиске негізделген енгізуді орналастыру тәсілі ретінде қолданылады, өйткені ол және онымен байланысты құралдар экожүйесі кез-келген мәселені шешуге қажетті барлық мүмкіндіктерді ұсынады микросервис сәулеті.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ «Кубернеттер үшін бірінші GitHub-ті жасау». github.com. 2014-06-07. Мұрағатталды түпнұсқасынан 2017-03-01.
  2. ^ «GitHub парағын шығарады». github.com. Алынған 2020-10-31.
  3. ^ «Kubernetes 1.20: ең түбегейлі шығарылым». Кубернет. Алынған 2020-12-14.
  4. ^ Гаррисон, Джастин (2016 жылғы 19 желтоқсан). «Неліктен Кубернетесті k8s қысқартты». Орташа.
  5. ^ «kubernetes / kubernetes». GitHub. Мұрағатталды түпнұсқасынан 2017-04-21. Алынған 2017-03-28.
  6. ^ а б «Кубернетес деген не?». Кубернет. Алынған 2017-03-31.
  7. ^ «Kubernetes v1.12: RuntimeClass-пен таныстыру». kubernetes.io.
  8. ^ «kubernetes / kubernetes». GitHub. Алынған 2020-12-04.
  9. ^ «Google бұлтты күшейту үшін өзінің құпия жоспарын жария етті». Мұрағатталды түпнұсқасынан 2016-07-01 ж. Алынған 2016-06-27.
  10. ^ «Google бұлтты есептеулердегі құпия қаруы». Сымды. Мұрағатталды түпнұсқадан 2015 жылғы 10 қыркүйекте. Алынған 24 қыркүйек 2015.
  11. ^ а б Абхишек Верма; Луис Педроса; Мадхукар Р. Коруполу; Дэвид Оппенгеймер; Эрик Тюн; Джон Уилкс (21-24 сәуір, 2015). «Google-де Borg көмегімен ауқымды кластерді басқару». Компьютерлік жүйелер бойынша Еуропалық конференция материалдары (EuroSys). Мұрағатталды түпнұсқасынан 2017-07-27.
  12. ^ «Борг, Омега және Кубернетес - ACM кезегі». queue.acm.org. Мұрағатталды түпнұсқасынан 2016-07-09 ж. Алынған 2016-06-27.
  13. ^ «Heptio-ді ерте сатыда бастау Кубернетесті достыққа айналдыруды мақсат етеді». Алынған 2016-12-06.
  14. ^ «Kubernetes Hits 1.0-ге сәйкес, Google технологияны жаңадан құрылған бұлтты жергілікті есептеу қорына береді». TechCrunch. Мұрағатталды түпнұсқадан 2015 жылғы 23 қыркүйекте. Алынған 24 қыркүйек 2015.
  15. ^ «Cloud Native Computing Foundation». Мұрағатталды түпнұсқасынан 2017-07-03.
  16. ^ https://github.com/helm/helm/releases/tag/v1.0
  17. ^ https://www.wikieduonline.com/wiki/Helm_(package_manager)
  18. ^ https://helm.sh/
  19. ^ Конвей, Сара. «Кубернетес - бұл CNCF түлегі үшін алғашқы жоба» (HTML). Cloud Native Computing Foundation. Мұрағатталды түпнұсқадан 2018 жылғы 29 қазанда. Алынған 3 желтоқсан 2018. GitHub-тағы 1,5 миллион жобамен салыстырғанда, Кубернетес міндеттемелер бойынша №9, ал авторлар / шығарылымдар бойынша No2, Linux-тен кейінгі орында.
  20. ^ «Kubernetes нұсқасы мен нұсқасының қисаюын қолдау саясаты». Кубернет. Алынған 2020-03-03.
  21. ^ а б «Kubernetes 1.19 шығарылымы туралы хабарландыру> Kubernetes қолдау терезесін бір жылға дейін арттыру». Кубернет. Алынған 2020-08-28.
  22. ^ «Kubernetes 1.19 шығарылымы туралы хабарландыру». Кубернет. Алынған 2020-08-28.
  23. ^ «kubernetes / kubernetes». GitHub. Алынған 2020-10-31.
  24. ^ Шарма, Приянка (13 сәуір 2017). «Кубернетестегі процессор / жад негізіндегі автоөлшеу - II бөлім». Powerupcloud Tech блогы. Орташа. Алынған 27 желтоқсан 2018.
  25. ^ «Kubernetes автоөлшемін теңшелетін көрсеткіштермен теңшеу». Битнами. BitRock. 15 қараша 2018 ж. Алынған 27 желтоқсан 2018.
  26. ^ а б c г. e f ж сағ мен «Кубернетке кіріспе». DigitalOcean. Мұрағатталды түпнұсқадан 2015 жылғы 1 қазанда. Алынған 24 қыркүйек 2015.
  27. ^ а б c «Kubernetes инфрақұрылымы». OpenShift қауымдастық құжаттары. OpenShift. Мұрағатталды түпнұсқадан 2015 жылғы 6 шілдеде. Алынған 24 қыркүйек 2015.
  28. ^ CoreOS контейнері бар Linux: Кластерлік инфрақұрылым
  29. ^ а б Мархуби, Камал (2015-09-26). «Кубернеттер негізінен: API сервері». kamalmarhubi.com. Мұрағатталды түпнұсқасынан 2015-10-29 жж. Алынған 2015-11-02.
  30. ^ Эллингвуд, Джастин (2 мамыр 2018). «Кубернетке кіріспе». DigitalOcean. Архивтелген түпнұсқа 5 шілде 2018 ж. Алынған 20 шілде 2018. Маңызды негізгі қызметтердің бірі - API сервері. Бұл бүкіл кластердің негізгі басқару нүктесі, өйткені ол пайдаланушыға Кубернетестің жұмыс жүктемелері мен ұйымдық бөліктерін конфигурациялауға мүмкіндік береді. Сондай-ақ, etcd дүкені мен орналастырылған контейнерлердің қызмет көрсету мәліметтері келісілгеніне көз жеткізуге жауапты. Ол кластерлік денсаулықты сақтау және ақпарат пен командаларды тарату үшін әртүрлі компоненттер арасындағы көпір рөлін атқарады.
  31. ^ «Кубернетестердің контейнерлік оркестрінің үш тірегі - фермерлік зертханалар». rancher.com. 18 мамыр 2017 ж. Мұрағатталды түпнұсқадан 2017 жылғы 24 маусымда. Алынған 22 мамыр 2017.
  32. ^ а б «Репликалау контроллеріне шолу». Құжаттама. CoreOS. Мұрағатталды түпнұсқасынан 2015-09-22. Алынған 2015-11-02.
  33. ^ Сандерс, Джейк (2015-10-02). «Кубернеттер: эксперименттің қызықты ерекшеліктері». Livewyer. Мұрағатталды түпнұсқадан 2015-10-20. Алынған 2015-11-02.
  34. ^ а б «Кіріспе: Докер мен Кубернетес жаттығуы - 2-күн». Қызыл қалпақ. 2015-10-20. Архивтелген түпнұсқа 2015-10-29. Алынған 2015-11-02.
  35. ^ Мархуби, Камал (2015-08-27). «Кубелет дегеніміз не? ..». kamalmarhubi.com. Мұрағатталды түпнұсқадан 2015-11-13 жж. Алынған 2015-11-02.
  36. ^ «rktnetes rkt контейнер қозғалтқышын Кубернетке әкеледі». kubernetes.io.
  37. ^ «Кәстрөлдер». kubernetes.io.
  38. ^ а б Лангемак, Джон (2015-02-11). «Kubernetes 101 - желілік байланыс». Дас Блинкен Лихтен. Мұрағатталды 2015-10-25 аралығында түпнұсқадан. Алынған 2015-11-02.
  39. ^ Страхан, Джеймс (2015-05-21). «Әзірлеушілерге арналған Кубернет». Орташа (баспа платформасы). Мұрағатталды түпнұсқасынан 2015-09-07 ж. Алынған 2015-11-02.
  40. ^ «ReplicaSet». kubernetes.io. Алынған 2020-03-03.
  41. ^ «Орналастырулар, реплика жиындары және бөлімдер».
  42. ^ «Қызмет». kubernetes.io.
  43. ^ Лангемак, Джон (2015-02-15). «Kubernetes 101 - кластерге сыртқы қол жетімділік». Дас Блинкен Лихтен. Мұрағатталды түпнұсқадан 2015-10-26. Алынған 2015-11-02.
  44. ^ «Томдар». kubernetes.io.
  45. ^ «Аттар кеңістігі». kubernetes.io.
  46. ^ «StatefulSets». kubernetes.io.
  47. ^ «DaemonSet». kubernetes.io.
  48. ^ https://www.cncf.io/blog/2018/04/19/container-attached-storage-a-primer/
  49. ^ https://www.cncf.io/wp-content/uploads/2020/03/CNCF_Survey_Report.pdf
  50. ^ «Контейнерді сақтау: праймер». Cloud Native Computing Foundation. 2018-04-19. Алынған 2020-10-09.
  51. ^ «Контейнерді сақтау | SNIA». www.snia.org. Алынған 2020-10-09.
  52. ^ «Cloud Native Application Checklist: Cloud Native Storage». www.replex.io. Алынған 2020-10-09.

Сыртқы сілтемелер