Vidokezo na Vidokezo 10 vya Juu vya Kubernetes

Vidokezo na Vidokezo 10 vya Juu vya Kubernetes

Kuna vitabu vingi vya kumbukumbu kwenye mtandao, lakini wakati mwingine ushauri rahisi ni wa thamani zaidi. Timu Kubernetes aaS kutoka Mail.ru kutafsiriwa uteuzi wa mbinu kumi na vidokezo, ambayo mwandishi wa makala alikusanya baada ya mwaka wa kufanya kazi na Kubernetes. Vidokezo havijapangwa kwa umuhimu, lakini tunadhani kwamba kila mtu atapata kitu muhimu kwao wenyewe.

Amri rahisi zaidi ya kufanya kazi na Kubernetes

Kuanza, labda hatua rahisi na muhimu zaidi katika kufanya kazi na Kubernetes. Amri ifuatayo inawezesha kukamilika kwa amri kubectl kwenye ganda la bash:

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

Kujaza mwenyewe kubectl itaandikwa kwa faili ya .bashrc na itawashwa kiotomatiki kila wakati shell inapoanzishwa. Hii huharakisha kuandika amri ndefu na vigezo kama vile all-namespaces. Soma zaidi katika Kubernetes bash msaada.

Kumbukumbu chaguomsingi na vikomo vya CPU katika nafasi ya majina

Ikiwa programu imeandikwa vibaya, kwa mfano, inafungua uunganisho mpya kwenye hifadhidata kila sekunde lakini haifungi kamwe, basi nguzo ina uvujaji wa kumbukumbu. Na ikiwa programu haina kikomo cha kumbukumbu kilichowekwa wakati wa kupelekwa, hii inaweza kusababisha kushindwa kwa nodi.

Ili kuzuia hili, Kubernetes hukuruhusu kuweka vizuizi chaguomsingi kwa misingi ya nafasi ya kila jina. Zimeandikwa katika faili ya yaml kwa nafasi maalum ya majina. Hapa kuna mfano wa faili kama hiyo:

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

Unda yaml kama hiyo na uitumie kwa nafasi yoyote ya majina. Kwa mfano, kwa nafasi ya majina limit-example. Sasa kontena lolote lililowekwa katika nafasi hii ya majina litakuwa na kikomo cha 512Mi, isipokuwa kikomo kingine mahususi kimewekwa kwa ajili ya kontena hili.

Mkusanyiko wa takataka katika matoleo ya zamani ya Kubernetes

Kubelet kwa chaguo-msingi huanza ukusanyaji wa taka wakati var/lib/docker inachukua 90% ya nafasi ya diski inayopatikana. Hii ni nzuri, hata hivyo, hadi Kubernetes 1.7 hakukuwa na kikomo chaguo-msingi kwa idadi ya ingizo zilizotumiwa, ambazo zinalingana na idadi ya faili kwenye mfumo wa faili.

Uwezekano wa chombo chako var/lib/docker inaweza tu kutumia 50% ya nafasi ya diski, lakini inaweza kukosa ingizo, ambayo itasababisha shida kwa wafanyikazi.

Katika matoleo ya zamani ya kubelet kutoka 1.4 hadi 1.6 itabidi uongeze bendera hii:

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

Katika matoleo 1.7 na ya baadaye bendera hii imewekwa kwa chaguomsingi. Walakini, matoleo ya awali hayafuatilii kikomo cha ingizo.

Minikube... Kubernetes ndogo lakini yenye nguvu ya ndani

Minikube ndiyo njia rahisi zaidi ya kuendesha kundi la ndani la Kubernetes. Imezinduliwa na amri rahisi:

minikube start

Kuendesha amri hii husababisha nguzo halisi ya Kubernetes inayoendesha kwenye mashine yako.

Vidokezo na Vidokezo 10 vya Juu vya Kubernetes
Chanzo cha kielelezo

Ujanja ni jinsi ya kuunda programu na kuiendesha ndani ya nguzo hiyo. Isipokuwa imeagizwa mahsusi, picha ya Docker itajengwa kwenye kompyuta yako na sio kwenye nguzo.

Ili kulazimisha Docker kusukuma picha kwenye nguzo ya Kubernetes ya eneo hilo, mashine ya docker inapewa amri ifuatayo:

eval $(minikube docker-env)

Sasa tunaweza kuunda programu kwenye kundi la ndani la Kubernetes.

Usipe kubectl ufikiaji kwa kila mtu

Hii inaonekana dhahiri, lakini ikiwa timu nyingi zinatumia nguzo moja kwa programu zao (ambayo ndiyo Kubernetes iliundwa), haupaswi kumpa kila mtu tu. kubectl. Ni bora kutenganisha amri, kugawa kila moja yao nafasi ya jina na kuzuia ufikiaji kwa kutumia sera za RBAC.

Unaweza kuchanganyikiwa kwa kugawa haki za kufikia, kusoma, kuunda, kufuta na shughuli zingine kwa kila ganda. Lakini jambo kuu ni kupunguza upatikanaji wa siri, kuruhusu tu kwa wasimamizi. Kwa njia hii tutatofautisha kati ya wale wanaoweza kusimamia nguzo na wale ambao wanaweza kupeleka kwake.

Dhibiti Bajeti za Pod

Jinsi ya kuhakikisha hakuna wakati wa kupumzika kwa programu kwenye nguzo ya Kubernetes? PodDisruptionBudget na tena PodDisruptionBudget.

Vikundi vinasasishwa mara kwa mara na nodi huondolewa. Hakuna kinachosimama, huo ndio ukweli. Kila upelekaji wenye zaidi ya mfano mmoja unapaswa kujumuisha PDB (PodDisruptionBudget). Imeundwa katika faili rahisi ya yaml ambayo inatumika kwa nguzo. Eneo la chanjo la PDB fulani limedhamiriwa na wateuzi wa lebo.

Kumbuka: Bajeti ya PDB inazingatiwa tu wakati ukiukaji wa bajeti unarekebishwa (usumbufu wa hiari) Katika hali kama vile hitilafu za maunzi, PDB haitafanya kazi.

Mfano wa PDB:

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

Vigezo kuu viwili ni matchLabels ΠΈ minAvailable. Kigezo cha kwanza kinabainisha ni matumizi gani ambayo bajeti inatumika. Kwa mfano, ikiwa nina utumaji na lebo app: app-a ΠΈ app: app-b, basi PDB hii itatumika kwa ile ya kwanza pekee.

Parameter minAvailable kuzingatiwa wakati wa kusafisha (kusafisha) nodi. Kwa mfano, katika mfano wetu, wakati wa kufuta, matukio yote yanafukuzwa app: app-a, isipokuwa mbili.

Hii inakuruhusu kudhibiti ni matukio ngapi ya programu inapaswa kuendeshwa kwa wakati fulani.

Ufuatiliaji wa afya ya maombi

Ufuatiliaji huo unawezekana kwa njia mbili: kutumia vipimo vya Utayari au Uhai.

Uchunguzi wa kwanza (utayari) huamua utayari wa chombo kupokea trafiki.

Ya pili (uhai) inaonyesha kama chombo kiko na afya au kinahitaji kuwashwa upya.

Mipangilio husika huongezwa kwa yaml kwa ajili ya kupelekwa. Huko unaweza kubainisha muda wa kuisha, nyakati za kuchelewa na idadi ya majaribio tena. Tazama maelezo zaidi kuwahusu Nyaraka za Kubernetes.

Lebo ziko kila mahali

Lebo ni mojawapo ya dhana za kimsingi katika Kubernetes. Wanaruhusu vitu kuwasiliana kwa uhuru na kila mmoja, na pia kuunda maswali kulingana na lebo. Katika Kubernetes, unaweza hata kwenda kwa mteja na kutazama matukio kwa lebo maalum.

Unaweza kufanya karibu kila kitu na vitambulisho, lakini mfano mzuri ungekuwa kuunda mazingira mengi ya kuendesha programu kwenye nguzo moja.

Wacha tuseme unatumia nguzo sawa kwa dev ΠΈ qa. Hii inamaanisha kuwa unaweza kuwa na programu app-a, kufanya kazi kwa wakati mmoja katika mazingira yote mawili qa ΠΈ dev. Katika kesi hii, tunaweza kufikia tofauti ya mfano wa maombi katika mazingira maalum kwa kubainisha parameter inayofaa environment. Kwa mfano app: app-a ΠΈ environment: dev kwa mazingira moja, na app: app-a ΠΈ environment: qa kwa pili.

Hii inakuwezesha kufikia matukio yote mawili ya programu, kwa mfano, kufanya majaribio kwa wakati mmoja.

Jipange

Kubernetes ni mfumo wenye nguvu sana, lakini mfumo wowote hatimaye unaweza kuathiriwa na michakato mingi. Kubelet huendesha michakato yote na hukagua unayobainisha, pamoja na yake mwenyewe.

Bila shaka, huduma moja ya yatima haitapunguza kasi ya mfumo, na Kubernetes imeundwa kuongeza kiwango kutoka chini kwenda juu. Lakini ikiwa badala ya huduma moja milioni itaonekana, kubelet huanza kukwama.

Ikiwa kwa sababu fulani utafuta kupelekwa (chombo, picha, chochote), hakikisha tu kufanya usafi kamili.

Kutana na Go

Tulihifadhi ushauri mkuu kwa mwisho. Jifunze lugha ya programu ya Go.

Kubernetes imeundwa katika Go, viendelezi vyote vimeandikwa katika Go, na maktaba ya mteja-go pia inaauniwa rasmi.

Inaweza kutumika kwa mambo tofauti na ya kuvutia. Kwa mfano, kupanua mfumo wa Kubernetes kwa ladha yako. Kwa hivyo, unaweza kutumia programu zako mwenyewe kukusanya data, kupeleka programu, au kusafisha vyombo.

Kujifunza lugha ya programu ya Go na kumudu mteja-go labda ni ushauri muhimu zaidi unayoweza kuwapa watumiaji wapya wa Kubernetes.

Imetafsiriwa kwa usaidizi wa Mail.ru Cloud Solutions

Nini kingine cha kusoma:

  1. Viwango vitatu vya kuongeza kasi kiotomatiki katika Kubernetes na jinsi ya kuzitumia kwa ufanisi.
  2. Nodi za wafanyikazi wa Kubernetes: nyingi ndogo au chache kubwa?
  3. Zana 25 Muhimu za Kupeleka na Kusimamia Kubernetes.

Chanzo: mapenzi.com

Kuongeza maoni