10 најбољих Кубернетес трикова и савета

10 најбољих Кубернетес трикова и савета

На интернету постоји много референтне литературе, али понекад је највреднији најједноставнији савет. Тим Кубернетес ааС са Маил.ру преведено избор од десет трикова и савета, које је аутор чланка прикупио након годину дана рада са Кубернетесом. Савети нису поређани по важности, али мислимо да ће свако пронаћи нешто корисно за себе.

Најједноставнија команда за рад са Кубернетесом

За почетак, можда најједноставнија и најкориснија акција у раду са Кубернетесом. Следећа команда омогућава довршавање команде kubectl у басх љусци:

echo "source <(kubectl completion bash)" >> ~/.bashrc

Аутоматско попуњавање kubectl биће уписан у .басхрц датотеку и аутоматски ће се активирати сваки пут када се схелл покрене. Ово убрзава куцање дугих команди и параметара као нпр all-namespaces. Прочитајте више у Кубернетес басх помоћ.

Подразумевана ограничења меморије и ЦПУ-а у именском простору

Ако је апликација погрешно написана, на пример, сваке секунде отвара нову везу са базом података, али је никада не затвара, онда кластер има цурење меморије. А ако апликација нема постављено ограничење меморије током имплементације, то може довести до квара чвора.

Да бисте то спречили, Кубернетес вам омогућава да поставите подразумевана ограничења на основу простора имена. Они су написани у иамл датотеци за одређени простор имена. Ево примера такве датотеке:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

Направите такав иамл и примените га на било који простор имена. На пример, у именски простор limit-example. Сада ће сваки контејнер распоређен у овом именском простору имати ограничење од 512Ми, осим ако за овај контејнер није додатно постављено друго појединачно ограничење.

Сакупљање смећа у старијим верзијама Кубернетеса

Кубелет подразумевано покреће сакупљање смећа када вар/либ/доцкер заузима 90% доступног простора на диску. Ово је сјајно, међутим, до Кубернетес 1.7 није било подразумеваног ограничења за број коришћених инода, који одговарају броју датотека у систему датотека.

Потенцијално ваш контејнер вар/либ/доцкер може користити само 50% простора на диску, али може остати без инода, што ће узроковати проблеме радницима.

У старијим верзијама кубелета од 1.4 до 1.6 мораћете да додате ову заставицу:

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

У 1.7 и новијим верзијама ова заставица је подразумевано постављена. Међутим, претходне верзије не прате ограничење иноде.

Миникубе... мали, али моћни локални Кубернетес

Миникубе је најлакши начин да покренете локални Кубернетес кластер. Покреће се једноставном командом:

minikube start

Покретање ове команде резултира правим Кубернетес кластером који ради на вашој машини.

10 најбољих Кубернетес трикова и савета
Извор илустрације

Трик је у томе како направити апликацију и покренути је локално на том кластеру. Осим ако није посебно наложено, Доцкер слика ће бити направљена на вашем рачунару, а не на кластеру.

Да би приморао Доцкер да гурне слику у локални Кубернетес кластер, доцкер машини је дата следећа команда:

eval $(minikube docker-env)

Сада можемо да правимо апликације на локалном Кубернетес кластеру.

Не дајте кубецтл приступ свима

Ово изгледа очигледно, али ако више тимова користи исти кластер за своје апликације (за шта је Кубернетес креиран), не би требало да дате свима kubectl. Боље је раздвојити команде, доделити свакој од њих сопствени простор имена и ограничити приступ коришћењем РБАЦ политика.

Можете се збунити додељивањем права за приступ, читање, креирање, брисање и друге операције за сваку под. Али главна ствар је ограничити приступ тајнама, дозвољавајући га само администраторима. На овај начин ћемо направити разлику између оних који могу да администрирају кластер и оних који се једноставно могу распоредити у њему.

Управљајте буџетима под

Како осигурати да апликација у Кубернетес кластеру нема застоја? ПодДисруптионБудгет и поново ПодДисруптионБудгет.

Кластери се периодично ажурирају и чворови се празне. Ништа не стоји, то је реалност. Свака имплементација са више од једне инстанце треба да садржи ПДБ (ПодДисруптионБудгет). Креира се у једноставној иамл датотеци која се примењује на кластер. Подручје покривености одређеног ПДБ-а је одређено селекторима ознака.

Напомена: Буџет ПДБ се узима у обзир само када је кршење буџета реверзибилно (добровољно ометање). У ситуацијама као што су кварови на хардверу, ПДБ неће радити.

Пример ПДБ:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

Два главна параметра су matchLabels и minAvailable. Први параметар одређује на које апликације се буџет односи. На пример, ако имам примене са ознакама app: app-a и app: app-b, онда ће се овај ПДБ односити само на први.

Параметар minAvailable узети у обзир при пражњењу (чишћењу) чвора. На пример, у нашем примеру, током пражњења, све инстанце су исељене app: app-a, осим два.

Ово вам омогућава да контролишете колико инстанци апликације треба да буде покренуто у било ком тренутку.

Праћење здравља апликација

Такво праћење је могуће на два начина: коришћењем тестова спремности или живог стања.

Прва сонда (спремност) утврђује спремност контејнера за пријем саобраћаја.

Други (живост) показује да ли је контејнер здрав или га треба поново покренути.

Релевантне конфигурације се једноставно додају у иамл за примену. Тамо можете одредити временско ограничење, време кашњења и број поновних покушаја. Погледајте више детаља о њима Кубернетес документација.

Ознаке су свуда

Ознаке су један од основних концепата у Кубернетесу. Они омогућавају објектима да слободно комуницирају једни са другима, као и да креирају упите на основу ознака. У Кубернетес-у можете чак и да одете до клијента и гледате догађаје за одређене ознаке.

Са ознакама можете да радите скоро све, али добар пример би био креирање више окружења за покретање програма на истом кластеру.

Рецимо да користите исти кластер за dev и qa. То значи да можете имати апликацију app-a, истовремено радећи у оба окружења qa и dev. У овом случају можемо засебно приступити инстанци апликације у одређеном окружењу навођењем одговарајућег параметра environment. На пример, app: app-a и environment: dev за једну средину, и app: app-a и environment: qa за другу.

Ово вам омогућава да приступите обема инстанцама апликације, на пример, да спроведете тестирање истовремено.

Организујте се

Кубернетес је веома моћан систем, али сваки систем може на крају да се заглави са превише процеса. Кубелет покреће све процесе и провере које наведете, као и своје сопствене.

Наравно, једна напуштена услуга неће успорити систем, а Кубернетес је дизајниран тако да се повећава из темеља. Али ако се уместо једне услуге појави милион, кубелет почиње да се гуши.

Ако из неког разлога избришете примену (контејнер, слику, било шта), само обавезно урадите потпуно чишћење.

Упознајте Го

Главни савет смо сачували за крај. Научите програмски језик Го.

Кубернетес је развијен у Го-у, сва проширења су написана у Го-у, а клијент-го клијентска библиотека је такође званично подржана.

Може се користити за различите и занимљиве ствари. На пример, да проширите Кубернетес систем по свом укусу. Дакле, можете користити сопствене програме за прикупљање података, постављање апликација или једноставно чишћење контејнера.

Учење програмског језика Го и савладавање цлиент-го-а је можда најважнији савет који можете дати новим корисницима Кубернетес-а.

Преведено уз подршку Маил.ру Цлоуд Солутионс

Шта још читати:

  1. Три нивоа аутоматског скалирања у Кубернетесу и како их ефикасно користити.
  2. Кубернетес раднички чворови: много малих или неколико великих?
  3. 25 корисних алата за примену и управљање Кубернетес-ом.

Извор: ввв.хабр.цом

Додај коментар