Google'дун 7 Контейнер мыкты тажрыйбасы

Эскертүү. котормо.: Түпнуска макаланын автору - Google Cloud Solutions архитектору Тео Чамли. Google Cloud блогуна арналган бул постто ал өзүнүн компаниясынын "деп аталган кеңири жол көрсөткүчүнүн кыскача мазмунун берет.Контейнерлерди иштетүү боюнча мыкты тажрыйбалар" Анда Google адистери Google Kubernetes Engine жана башкаларды колдонуунун контекстинде контейнерлерди иштетүү боюнча мыкты тажрыйбаларды чогултуп, көптөгөн темаларга токтолушту: коопсуздуктан баштап мониторинг жана журналга чейин. Ошентип, Google боюнча эң маанилүү контейнер практикалары кайсылар?

Google'дун 7 Контейнер мыкты тажрыйбасы

Kubernetes Engine (Google Булутунда контейнердик тиркемелерди иштетүү үчүн Кубернетеске негизделген кызмат - болжол менен которуу) масштабдалышы керек болгон жүктөрдү иштетүүнүн эң жакшы жолдорунун бири. Kubernetes эгерде алар контейнерге салынган болсо, көпчүлүк колдонмолордун үзгүлтүксүз иштешин камсыз кылат. Бирок, эгер сиз колдонмоңузду башкаруу оңой болушун кааласаңыз жана Kubernetesтин бардык мүмкүнчүлүктөрүн колдонгуңуз келсе, мыкты тажрыйбаларды колдонушуңуз керек. Алар тиркеменин иштешин, анын мониторингин жана мүчүлүштүктөрдү оңдоону жөнөкөйлөштүрөт, ошондой эле коопсуздукту жогорулатат.

Бул макалада биз Kubernetes'те контейнерлерди натыйжалуу иштетүү үчүн сиз билишиңиз керек болгон нерселердин тизмесин карап чыгабыз. Деталдарга тереңирээк кирүүнү каалагандар материалды окуп чыгышы керек Контейнерлерди иштетүү боюнча мыкты тажрыйбалар, жана да биздин көңүл бургула мурунку пост контейнерлерди чогултуу жөнүндө.

1. Контейнердик каротаждоо механизмдерин колдонуңуз

Эгерде колдонмо Kubernetes кластеринде иштеп жатса, журналдар үчүн көп нерсе талап кылынбайт. Борборлоштурулган каттоо системасы сиз колдонуп жаткан кластерге орнотулган болушу мүмкүн. Kubernetes Engine колдонгон учурда, бул жооптуу Stackdriver Logging. (Эскертүү. котормо.: Эгерде сиз өзүңүздүн Kubernetes орнотууңузду колдонсоңуз, биз ачык булактуу чечимибизди кылдаттык менен карап чыгууну сунуштайбыз - жыгач үй.) Жашооңузду жөнөкөй кармаңыз жана жергиликтүү контейнерлерди каттоо механизмдерин колдонуңуз. stdout жана stderr'ге журналдарды жазыңыз - алар автоматтык түрдө кабыл алынат, сакталат жана индекстелет.

Кааласаңыз, журналдарды да жазсаңыз болот JSON форматы. Бул ыкма аларга метадайындарды кошууну жеңилдетет. Жана алар менен Stackdriver Logging бул метадайындарды колдонуу менен журналдар аркылуу издөө мүмкүнчүлүгүнө ээ болот.

2. Контейнерлер жарандыгы жок жана өзгөрүлбөс экенин текшериңиз

Кубернетес кластеринде контейнерлер туура иштеши үчүн, алар жарандыгы жок жана өзгөрүлбөс болушу керек. Бул шарттар аткарылгандан кийин, Kubernetes өз ишин аткара алат, качан жана керектүү жерде тиркеме объекттерин түзүп, жок кылат.

жарандыгы жок ар кандай абал (кандайдыр бир түрдөгү туруктуу маалыматтар) контейнерден тышкары сакталат дегенди билдирет. Бул үчүн, муктаждыктарына жараша, тышкы сактагычтын ар кандай түрлөрү колдонулушу мүмкүн: Cloud сактоо, Туруктуу дисктер, Redis, Булут SQL же башка башкарылган маалымат базалары. (Эскертүү. котормо.: Бул тууралуу кененирээк биздин макаладан окуңуз "Kubernetes үчүн операторлор: мамлекеттик тиркемелерди кантип иштетүү керек".)

Өзгөрүлбөс контейнер анын иштөө мөөнөтүндө өзгөртүлбөйт дегенди билдирет: эч кандай жаңыртуулар, патчтар, конфигурациялар өзгөрбөйт. Колдонмо кодуңузду жаңыртышыңыз же патч колдонушуңуз керек болсо, жаңы сүрөт түзүп, аны жайылтыңыз. Контейнердин конфигурациясын (угуу порту, иштөө чөйрөсүнүн параметрлери ж.б.) сыртка жылдыруу сунушталат - Secrets и ConfigMaps. Аларды жаңы контейнер сүрөтүн түзбөстөн эле жаңыртса болот. Сүрөт монтаждоо менен түтүктөрдү оңой түзүү үчүн, сиз колдоно аласыз Cloud Build. (Эскертүү. котормо.: Биз бул максаттар үчүн Open Source куралын колдонобуз dapper.)

Google'дун 7 Контейнер мыкты тажрыйбасы
Конфигурация катары подколордо орнотулган ConfigMap аркылуу Kubernetes'те Жайгаштыруу конфигурациясын жаңыртуу мисалы

3. Артыкчылыктуу контейнерлерден алыс болуңуз

Колдонмолорду серверлериңизде тамыр катары иштетпейсиз, туурабы? Колдонмого чабуулчу кирсе, ал тамыр мүмкүнчүлүгүнө ээ болот. Ушул эле ойлор артыкчылыктуу контейнерлерди иштетпөөгө да тиешелүү. Хосттун жөндөөлөрүн өзгөртүү керек болсо, контейнерди конкреттүү түрдө бере аласыз мүмкүнчүлүктөрү опциясын колдонуу securityContext Кубернетес шаарында. Эгер өзгөртүү керек болсо sysctls, Kubernetes ээ өзүнчө реферат бул үчүн. Жалпысынан алганда, максималдуу пайдаланууга аракет кыл ичинде- жана ушуга окшогон артыкчылыктуу операцияларды аткаруу үчүн каптал контейнерлери. Алар ички же тышкы трафик үчүн жеткиликтүү болбошу керек.

Эгер сиз кластерди башкарсаңыз, колдоно аласыз Pod коопсуздук саясаты артыкчылыктуу контейнерлерди колдонууга чектөөлөр үчүн.

4. Тамыр катары чуркоодон алыс болуңуз

Артыкчылыктуу контейнерлер буга чейин талкууланган, бирок мындан тышкары, сиз контейнердин ичиндеги тиркемелерди тамыр катары иштетпесеңиз, андан да жакшы болот. Эгерде чабуулчу түпкү укугу бар тиркемеде кодду аткарууга мүмкүндүк берген алыскы аялуу жерин тапса, андан кийин ал контейнерден азырынча белгисиз алсыздык аркылуу чыгып кете алат, ал хостто тамыр алат.

Мунун алдын алуунун эң жакшы жолу - биринчи кезекте эч нерсени root катары иштетпөө. Бул үчүн, сиз директиваны колдоно аласыз USER в Dockerfile же runAsUser Кубернетес шаарында. Кластердин администратору ошондой эле колдонуу менен аткаруу жүрүм-турумун конфигурациялай алат Pod коопсуздук саясаты.

5. Колдонмону көзөмөлдөөнү оңой кылыңыз

Каттоо сыяктуу эле, мониторинг колдонмолорду башкаруунун ажырагыс бөлүгү болуп саналат. Kubernetes коомчулугунда популярдуу мониторинг чечими болуп саналат Prometheus - мониторингди талап кылган поддондорду жана кызматтарды автоматтык түрдө аныктаган система. (Эскертүү. котормо.: Биздин деталдуу отчет Prometheus жана Kubernetes аркылуу мониторинг темасында.) Stackdriver Kubernetes кластерлерин көзөмөлдөөгө жөндөмдүү жана тиркемелерди көзөмөлдөө үчүн өзүнүн Prometheus версиясын камтыйт.

Google'дун 7 Контейнер мыкты тажрыйбасы
Stackdriverдеги Kubernetes башкаруу тактасы

Prometheus колдонмо метрикаларды HTTP акыркы чекитине жөнөтүүнү күтөт. Бул үчүн жеткиликтүү Prometheus кардарлардын китепканалары. Ушул эле формат сыяктуу башка куралдар колдонулат OpenCensus и Istio.

6. Колдонмонун ден соолук абалын жеткиликтүү кылыңыз

Өндүрүштө колдонууну башкаруу анын абалын бүт системага жеткирүү жөндөмү менен жардам берет. Колдонмо иштеп жатабы? жакшыбы? Сиз трафикти кабыл алууга даярсызбы? Ал өзүн кандай алып жүрөт? Бул көйгөйдү чечүүнүн эң кеңири таралган жолу - ден соолукту текшерүү (ден соолукту текшерүү). Kubernetes эки түрү бар: жандуу-лукту жана даяр-дыкты текшерууде.

Жашоо үчүн (жандуулугун текшерүү) тиркемеде "200 OK" жооп кайтарган HTTP акыркы чекити болушу керек, эгерде ал иштеп жатса жана анын негизги көз карандылыгы канааттандырылса. Даярдык текшерүү үчүн (кызматтын даярдыгын текшерүү) тиркемеде "200 OK" жооп кайтарган башка HTTP акыркы чекит болушу керек, эгерде колдонмо дени сак абалда болсо, инициализация кадамдары аткарылса жана жарактуу сурам катага алып келбесе. Kubernetes трафикти контейнерге багыттайт, эгерде колдонмо ушул текшерүүлөргө ылайык даяр болсо. Эгерде жандуу жана даяр абалдын ортосунда эч кандай айырма жок болсо, эки акыркы чекит бириктирилиши мүмкүн.

Бул тууралуу кененирээк Google'дун Иштеп чыгуучунун адвокаты Сандип Динештин тиешелүү макаласынан окуй аласыз: "Kubernetes мыкты тажрыйбалары: Даярдык жана жандуу текшерүүлөр менен ден соолук текшерүүлөрүн орнотуу«.

7. Сүрөттүн версиясын кылдаттык менен тандаңыз

Көпчүлүк коомдук жана купуя сүрөттөр бөлүмүндө сүрөттөлгөндөй белгилөө тутумун колдонушат Контейнерлер куруу боюнча мыкты тажрыйбалар. Эгерде сүрөт жакын системаны колдонсо семантикалык версиялоо, белгилөөнүн өзгөчөлүгүн эске алуу зарыл. Мисалы, тег latest сүрөттөлүштөн сүрөткө тез-тез жыла алат - алдын ала жана кайталануучу куруу жана орнотуулар керек болсо, ага ишенүүгө болбойт.

Сиз белгини колдоно аласыз X.Y.Z (алар дээрлик дайыма өзгөрүүсүз), бирок бул учурда, сүрөттүн бардык патчтарын жана жаңыртууларына көз салып туруңуз. Эгер сиз колдонуп жаткан сүрөттүн теги бар болсо X.Y, бул алтын орто үчүн жакшы вариант. Аны тандоо менен сиз автоматтык түрдө тактарды аласыз жана ошол эле учурда тиркеменин туруктуу версиясына таянасыз.

Котормочудан PS

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

Source: www.habr.com

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