Барған сайын көбірек Kubernetes қызметтерін жасай бастағанда, бастапқыда қарапайым тапсырмалар күрделі бола бастайды. Мысалы, әзірлеу топтары бірдей атпен қызметтерді немесе орналастыруларды жасай алмайды. Егер сізде мыңдаған түйіршіктер болса, оларды жай ғана тізімдеу оларды дұрыс басқару былай тұрсын, көп уақытты алады. Ал бұл айсбергтің бір ұшы ғана.
Атау кеңістігі Kubernetes ресурстарын басқаруды қалай жеңілдететінін қарастырайық. Сонымен, аттар кеңістігі дегеніміз не? Атау кеңістігін Kubernetes кластеріндегі виртуалды кластер ретінде қарастыруға болады. Бір Kubernetes кластері ішінде бір-бірінен оқшауланған бірнеше аттар кеңістігі болуы мүмкін. Олар сізге және сіздің командаларыңызға ұйымдастыру, қауіпсіздік және тіпті жүйе өнімділігі бойынша шынымен көмектесе алады.
Kubernetes дистрибутивтерінің көпшілігінде кластер "әдепкі" деп аталатын аттар кеңістігі бар қораптан шығады. Кубернетес жұмыс істейтін үш аттар кеңістігі бар: әдепкі, kube-жүйе және kube-public. Қазіргі уақытта Kube-public өте жиі қолданылмайды.
Kube аттар кеңістігін жалғыз қалдыру жақсы идея, әсіресе Google Kubernetes Engine сияқты басқарылатын жүйеде. Ол сіздің қызметтеріңіз бен қолданбаларыңыз жасалған орын ретінде «әдепкі» аттар кеңістігін пайдаланады. Бұл туралы ерекше ештеңе жоқ, тек Kubernetes оны пайдалану үшін қораптан тыс конфигурацияланған және оны жою мүмкін емес. Бұл іске қосу және өнімділігі төмен жүйелер үшін тамаша, бірақ мен үлкен өнім жүйелерінде әдепкі аттар кеңістігін пайдалануды ұсынбаймын. Соңғы жағдайда бір әзірлеу тобы басқа біреудің кодын оңай қайта жаза алады және басқа команданың жұмысын тіпті түсінбей бұзады.
Сондықтан сіз бірнеше аттар кеңістігін жасап, оларды қызметтеріңізді басқарылатын бірліктерге бөлу үшін пайдалануыңыз керек. Атау кеңістігін бір пәрменмен жасауға болады. Егер сіз сынақ деп аталатын аттар кеңістігін жасағыңыз келсе, $ kubectl аттар кеңістігінің сынағын жасау пәрменін пайдаланыңыз немесе жай YAML файлын жасаңыз және оны кез келген басқа Kubernetes ресурсы сияқты пайдаланыңыз.
$ kubectl get namespace пәрмені арқылы барлық аттар кеңістігін көруге болады.
Аяқтағаннан кейін сіз үш кірістірілген аттар кеңістігін және «сынау» деп аталатын жаңа аттар кеңістігін көресіз. Қондырғы жасау үшін қарапайым YAML файлын қарастырайық. Сіз аттар кеңістігі туралы айтылмағанын байқайсыз.
Осы файлды іске қосу үшін kubectl пайдалансаңыз, ол қазіргі белсенді аттар кеңістігінде mypod модулін жасайды. Сіз оны өзгерткенше бұл әдепкі аттар кеңістігі болады. Kubernetes ресурсыңызды қандай аттар кеңістігінде жасағыңыз келетінін айтудың 2 жолы бар. Бірінші әдіс - ресурс жасау кезінде аттар кеңістігінің жалауын пайдалану.
Екінші әдіс - YAML декларациясында аттар кеңістігін көрсету.
YAML ішінде аттар кеңістігін көрсетсеңіз, ресурс әрқашан сол аттар кеңістігінде жасалады. Егер аттар кеңістігінің жалауын пайдалану кезінде басқа аттар кеңістігін пайдалануға әрекет жасасаңыз, пәрмен орындалмайды. Енді сіз өзіңіздің бағаныңызды табуға тырыссаңыз, оны таба алмайсыз.
Бұл барлық пәрмендер ағымдағы белсенді аттар кеңістігінен тыс орындалатындықтан орын алады. Қондырғыны табу үшін аттар кеңістігінің жалаушасын пайдалану керек, бірақ бұл тез жалықтырады, әсіресе егер сіз өз аттар кеңістігін пайдаланатын топтағы әзірлеуші болсаңыз және бұл жалауды әрбір команда үшін пайдаланғыңыз келмейтін болса. Мұны қалай түзетуге болатынын көрейік.
Белсенді аттар кеңістігіңіз әдепкі деп аталады. YAML ресурсында аттар кеңістігін көрсетпесеңіз, барлық Kubernetes пәрмендері осы белсенді әдепкі аттар кеңістігін пайдаланады. Өкінішке орай, kubectl көмегімен белсенді аттар кеңістігін басқару әрекеті сәтсіз болуы мүмкін. Дегенмен, бұл процесті айтарлықтай жеңілдететін Kubens деп аталатын өте жақсы құрал бар. Kubens пәрменін іске қосқан кезде белсенді аттар кеңістігі бөлектелген барлық аттар кеңістігін көресіз.
Белсенді аттар кеңістігін сынақ аттар кеңістігіне ауыстыру үшін жай ғана $kubens сынақ пәрменін іске қосыңыз. Содан кейін $kubens пәрменін қайта іске қоссаңыз, жаңа белсенді аттар кеңістігі бөлінгенін көресіз - сынақ.
Бұл сынақ аттар кеңістігіндегі подкастты көру үшін аттар кеңістігінің жалауы қажет емес дегенді білдіреді.
Осылайша аттар кеңістігі бір-бірінен жасырылады, бірақ бір-бірінен оқшауланбайды. Бір аттар кеңістігіндегі қызмет басқа аттар кеңістігіндегі қызметпен оңай байланыса алады, бұл жиі өте пайдалы. Әртүрлі аттар кеңістігінде байланысу мүмкіндігі әзірлеушілер қызметі басқа аттар кеңістігіндегі басқа әзірлеушілер тобының қызметімен байланыса алатынын білдіреді.
Әдетте, қолданбаңыз Kubernetes қызметіне қол жеткізгісі келгенде, кірістірілген DNS табу қызметін пайдаланасыз және жай ғана қолданбаңызға қызмет атауын бересіз. Дегенмен, осылай жасау арқылы бірнеше аттар кеңістігінде бірдей атпен қызметті жасауға болады, бұл қабылданбайды.
Бақытымызға орай, бұл DNS мекенжайының кеңейтілген пішінін пайдалану арқылы оңай өтуге болады. Kubernetes қызметтері жалпы DNS үлгісін пайдаланып соңғы нүктелерін көрсетеді. Бұл келесідей көрінеді:
Әдетте сізге тек қызмет атауы қажет және DNS толық мекенжайды автоматты түрде анықтайды.
Дегенмен, басқа аттар кеңістігіндегі қызметке кіру қажет болса, жай ғана қызмет атауын және аттар кеңістігінің атауын пайдаланыңыз:
Мысалы, сынақ аттар кеңістігіндегі қызмет дерекқорына қосылғыңыз келсе, мекенжай дерекқоры database.test пайдалана аласыз.
Өнім аттар кеңістігіндегі қызмет дерекқорына қосылғыңыз келсе, database.prod пайдаланасыз.
Егер сіз шынымен аттар кеңістігіне кіруді оқшаулағыңыз және шектегіңіз келсе, Kubernetes мұны Kubernetes желілік саясаттары арқылы жасауға мүмкіндік береді. Бұл туралы келесі бөлімде айтатын боламын.
Маған жиі сұрақ қояды, қанша атау кеңістігін жасауым керек және қандай мақсаттар үшін? Басқарылатын деректер бөлігі дегеніміз не?
Егер сіз тым көп аттар кеңістігін жасасаңыз, олар жай ғана жолыңызға түседі. Егер олардың саны тым аз болса, мұндай шешімнің барлық артықшылықтарын жоғалтасыз. Менің ойымша, әрбір компания өзінің ұйымдық құрылымын құруда төрт негізгі кезеңнен өтеді. Жобаңыздың немесе компанияңыздың даму кезеңіне байланысты сәйкес атау кеңістігі стратегиясын қабылдағыңыз келуі мүмкін.
Сіз 5-10 микросервистерді әзірлеумен айналысатын шағын топтың бір бөлігі екеніңізді елестетіп көріңіз және сіз бір бөлмеде барлық әзірлеушілерді оңай жинай аласыз. Бұл жағдайда әдепкі аттар кеңістігінде барлық өнім қызметтерін іске қосу мағынасы бар. Әрине, икемділік үшін 2 атау кеңістігін пайдалануға болады - өнім және әзірлеу үшін бөлек. Мүмкін, сіз Minikube сияқты нәрсені пайдаланып жергілікті компьютерде дамуыңызды тексересіз.
Барлығы өзгерді делік және сізде бір уақытта 10-нан астам микросервисте жұмыс істейтін жылдам өсіп келе жатқан топ бар. Бірнеше кластерлерді немесе аттар кеңістігін өнім мен әзірлеу үшін бөлек пайдалану қажет болатын уақыт келеді. Сіз топты бірнеше қосалқы топтарға бөлуге болады, осылайша олардың әрқайсысының жеке микросервистері болады және осы командалардың әрқайсысы бағдарламалық жасақтаманы әзірлеу мен шығаруды басқару процесін жеңілдету үшін өз аттар кеңістігін таңдай алады.
Әрбір топ мүшесі жүйенің тұтастай қалай жұмыс істейтінін түсінген сайын, әрбір өзгерісті барлық басқа әзірлеушілермен үйлестіру қиындай түседі. Жергілікті құрылғыңызда толық стекті айналдыру әрекеті күн сайын қиындап барады.
Ірі компанияларда әзірлеушілер әдетте кімнің немен жұмыс істеп жатқанын білмейді. Командалар қызмет көрсету келісім-шарттары арқылы байланысады немесе Istio конфигурациялау құралы сияқты желі арқылы абстракциялық қабатты қосатын қызмет тор технологиясын пайдаланады. Толық стекті жергілікті түрде іске қосу мүмкін емес. Мен Kubernetes-тегі Spinnaker сияқты үздіксіз жеткізу (CD) платформасын пайдалануды ұсынамын. Сонымен, әрбір пәрменге міндетті түрде өз аттар кеңістігі қажет болатын сәт келеді. Әр команда тіпті әзірлеу ортасы мен өнім ортасы үшін бірнеше аттар кеңістігін таңдай алады.
Ақырында, әзірлеушілердің бір тобы басқа топтардың бар екендігі туралы тіпті білмейтін ірі кәсіпкерлік компаниялар бар. Мұндай компания әдетте жақсы құжатталған API арқылы өзара әрекеттесетін үшінші тарап әзірлеушілерін жалдай алады. Әрбір осындай топта бірнеше командалар және бірнеше микросервистер бар. Бұл жағдайда мен бұрын айтқан барлық құралдарды пайдалану керек.
Бағдарламашылар қызметтерді қолмен орналастырмауы керек және оларға қатысы жоқ аттар кеңістігіне қол жеткізе алмауы керек. Бұл кезеңде нашар конфигурацияланған қолданбалардың «жарылыс радиусын» азайту, есеп айырысу процестерін және ресурстарды басқаруды жеңілдету үшін бірнеше кластерлер болған жөн.
Осылайша, ұйымыңыздың аттар кеңістігін дұрыс пайдалануы Кубернеттерді басқарылатын, басқарылатын, қауіпсіз және икемді етуге мүмкіндік береді.
Кейбір жарнамалар 🙂
Бізбен бірге болғандарыңызға рахмет. Сізге біздің мақалалар ұнайды ма? Қызықты мазмұнды көргіңіз келе ме? Тапсырыс беру немесе достарыңызға ұсыну арқылы бізге қолдау көрсетіңіз,
Dell R730xd Амстердамдағы Equinix Tier IV деректер орталығында 2 есе арзан ба? Тек осында
Ақпарат көзі: www.habr.com