Pamusoro gumi Kubernetes Tricks uye Mazano

Pamusoro gumi Kubernetes Tricks uye Mazano

Pane zvakawanda zvezvinyorwa zvinyorwa paInternet, asi dzimwe nguva mazano akareruka ndiwo anonyanya kukosha. Team Kubernetes aaS kubva kuMail.ru rakashandurwa kusarudzwa kwemazano gumi uye mazano, iyo munyori wechinyorwa akaunganidza mushure megore rekushanda naKubernetes. Iwo matipi haana kurongwa nekukosha, asi isu tinofunga kuti munhu wese achawana chimwe chinhu chinobatsira ivo pachavo.

Iwo akareruka kuraira kushanda neKubernetes

Kutanga, pamwe iri nyore uye rinonyanya kubatsira chiito mukushanda naKubernetes. Murairo unotevera unogonesa kupedzisa kwekuraira kubectl mu bash shell:

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

Autofill kubectl ichanyorwa ku .bashrc faira uye inozoitwa otomatiki pese panotangwa goko. Izvi zvinomhanyisa kutaipa mirairo refu uye parameters senge all-namespaces. Verenga zvakawanda mu Kubernetes bash rubatsiro.

Default ndangariro uye CPU muganho mune namespace

Kana iyo application yakanyorwa zvisizvo, semuenzaniso, inovhura yekubatanidza kutsva kune dhatabhesi sekondi yega yega asi isingamboivhara, ipapo cluster ine memory leak. Uye kana iyo application isina muganho wekuyeuka wakaiswa panguva yekutumirwa, izvi zvinogona kutungamira mukutadza kwenode.

Kuti udzivise izvi, Kubernetes inobvumidza iwe kuti uise zvirambidzo zvakagadzika pane-yezita renzvimbo. Izvo zvakanyorwa muyaml faira kune chaiyo nzvimbo yezita. Heino muenzaniso wefaira rakadaro:

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

Gadzira yaml yakadai uye shandisa kune chero nzvimbo yezita. Semuenzaniso, kune namespace limit-example. Ikozvino chero mudziyo wakaiswa munzvimbo ino yezita uchave nemuganho we512Mi, kunze kwekunge mumwe muganho wakaiswa pamudziyo uyu.

Kuunganidzwa kwemarara muzvinyorwa zvekare zveKubernetes

Kubelet by default inotanga kuunganidzwa kwemarara kana var/lib/docker inotora 90% yenzvimbo inowanikwa disk. Izvi zvakanaka, zvisinei, kusvikira Kubernetes 1.7 pakanga pasina muganho wekupedzisira pane nhamba yeinode yakashandiswa, iyo inoenderana nenhamba yemafaira mufaira system.

Pamwe mudziyo wako var/lib/docker inogona kungoshandisa 50% yedhisiki nzvimbo, asi inogona kupera kunze kweinode, izvo zvinozokonzera matambudziko kune vashandi.

Mune shanduro dzekare dze kubelet kubva 1.4 kusvika 1.6 iwe uchafanirwa kuwedzera iyi mureza:

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

Mushanduro dze1.7 uye dzepashure mureza uyu wakaiswa nekukasira. Nekudaro, shanduro dzakapfuura hadzitarise iyo inode muganho.

Minikube... diki asi ine simba yemuno Kubernetes

Minikube ndiyo nzira iri nyore yekumhanyisa yemuno Kubernetes cluster. Inotangwa nemurairo uri nyore:

minikube start

Kumhanyisa uyu murairo kunoguma mune chaiyo Kubernetes cluster inomhanya pamushini wako.

Pamusoro gumi Kubernetes Tricks uye Mazano
Illustration source

Iyo dhizaini ndeyekuvaka iyo application uye kuimhanyisa munharaunda pane iyo cluster. Kunze kwekunge yanyatsorairwa, iyo Docker mufananidzo uchavakwa pakombuta yako uye kwete pasumbu.

Kumanikidza Docker kusundira mufananidzo kune yemuno Kubernetes cluster, mushini wedocker unopihwa unotevera kuraira:

eval $(minikube docker-env)

Iye zvino isu tinogona kuvaka zvikumbiro pane yemuno Kubernetes cluster.

Usape kubectl kuwana kune wese munhu

Izvi zvinoita sezviri pachena, asi kana zvikwata zvakawanda zviri kushandisa sumbu rimwe chete rekushandisa (ndiro rakagadzirirwa Kubernetes), haufanirwe kungopa munhu wese. kubectl. Zviri nani kuparadzanisa mirairo, kugovera imwe neimwe yadzo nzvimbo yezita uye kudzikisira kuwana uchishandisa RBAC marongero.

Iwe unogona kuvhiringika nekupa kodzero dzekuwana, kuverenga, kugadzira, kudzima uye mamwe mashandiro ega yega pod. Asi chinhu chikuru ndechekudzikamisa kuwana zvakavanzika, zvichibvumira chete kune vatungamiriri. Nenzira iyi tichasiyanisa pakati pevanogona kutungamira cluster nevaya vanogona kungoendesa kwariri.

Tonga Pod Budgets

Maitiro ekuita sei kuti hapana nguva yekudzikira yekushandisa muKubernetes cluster? PodDisruptionBudget uye zvakare PodDisruptionBudget.

Masumbu anovandudzwa nguva nenguva uye node dzinobviswa. Hapana chinomira, ndicho chokwadi. Kwese kutumirwa kune inopfuura chiitiko chimwe kunofanirwa kusanganisira PDB (PodDisruptionBudget). Iyo yakagadzirwa mune yakapfava yaml faira iyo inoshandiswa kune cluster. Nzvimbo yekuvhara yeimwe PDB inotemerwa nevanosarudza mavara.

Cherechedza: Iyo bhajeti yePDB inotariswa chete kana kutyorwa kwebhajeti kuchidzoserwa (kuvhiringwa kwekuzvipira) Mumamiriro ezvinhu akaita sekutadza kwehardware, PDB haishande.

Muenzaniso PDB:

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

Iwo maviri makuru parameters ndiwo matchLabels ΠΈ minAvailable. Yekutanga parameter inotsanangura kuti ndeapi mashandisirwo ayo bhajeti rinoshanda kwariri. Semuenzaniso, kana ndine deployments ine mavara app: app-a ΠΈ app: app-b, ipapo iyi PDB inongoshanda kune yekutanga.

Parameter minAvailable inocherechedzwa pakubvisa (kuchenesa) node. Semuenzaniso, mumuenzaniso wedu, panguva yekubvisa, zviitiko zvese zvinodzingwa app: app-a, kunze kwevaviri.

Izvi zvinokutendera iwe kudzora kuti mangani maekisheni ekushandisa anofanirwa kunge achimhanya chero nguva yakapihwa.

Kushandiswa kwehutano hwehutano

Kutarisa kwakadaro kunogoneka nenzira mbiri: kushandisa Readiness kana Liveness bvunzo.

Yekutanga probe (kugadzirira) inosarudza kugadzirira kwemudziyo kugamuchira traffic.

Yechipiri (liveness) inoratidza kuti mudziyo une hutano here kana kuti unoda kutangwa patsva.

Izvo zvakakodzera zvigadziriso zvinongowedzerwa kune yaml kuti iendeswe. Ikoko iwe unogona kutsanangura nguva dzekubuda, nguva dzekunonoka uye nhamba yekudzokororwa. Ona zvimwe zvakawanda pamusoro pavo Kubernetes zvinyorwa.

Matagi ari kwese kwese

Labels ndeimwe yeakakosha pfungwa muKubernetes. Vanobvumira zvinhu kutaurirana zvakasununguka kune mumwe nemumwe, pamwe nekugadzira mibvunzo inoenderana nemazita. MuKubernetes, unogona kutoenda kumutengi uye woona zviitiko zvema tag chaiwo.

Iwe unogona kuita chero chinhu chine ma tag, asi muenzaniso wakanaka unenge uchigadzira akawanda nharaunda kuti umhanye zvirongwa pane imwecheteyo cluster.

Ngatiti iwe unoshandisa sumbu rimwe chete dev ΠΈ qa. Izvi zvinoreva kuti iwe unogona kuve neapp app-a, panguva imwe chete kushanda munzvimbo mbiri qa ΠΈ dev. Mune ino kesi, isu tinokwanisa kupatsanura mukana wekushandisa mune imwe nharaunda nekutsanangura yakakodzera parameter environment. Somuenzaniso, app: app-a ΠΈ environment: dev kune imwe nharaunda, uye app: app-a ΠΈ environment: qa kwechipiri.

Izvi zvinokutendera iwe kuti uwane ese ari maviri mamiriro ekushandisa, semuenzaniso, kuita bvunzo panguva imwe chete.

Rongai

Kubernetes isimba rine simba kwazvo, asi chero system inogona kupedzisira yakabatikana neakawandisa maitiro. Iyo Kubelet inomhanyisa maitiro ese uye inotarisa iwe unotsanangura, pamwe neyayo.

Ehe, sevhisi imwe yenherera haizodzikisi sisitimu, uye Kubernetes yakagadzirirwa kuyera kubva pasi kumusoro. Asi kana pachinzvimbo chesevhisi imwe miriyoni ikaonekwa, kubelet inotanga kudzipwa.

Kana nekuda kwechimwe chikonzero iwe ukadzima deployment (mudziyo, mufananidzo, chero chii), ingoita shuwa kuita kuchenesa kwakazara.

Kusangana Go

Takachengeta zano guru rekupedzisira. Dzidza mutauro weGo programming.

Kubernetes inogadzirwa muGo, ese ekuwedzera akanyorwa muGo, uye raibhurari yemutengi-enda yemutengi inotsigirwawo zviri pamutemo.

Inogona kushandiswa kune zvakasiyana uye zvinonakidza zvinhu. Semuenzaniso, kuwedzera iyo Kubernetes system kune yako kuravira. Saka, iwe unogona kushandisa ako pachako zvirongwa kuunganidza data, kuendesa maapplication, kana kungochenesa midziyo.

Kudzidza iyo Go programming mutauro uye kugona mutengi-enda pamwe ndiro zano rakakosha raunogona kupa kune vatsva vashandisi veKubernetes.

Yakaturikirwa nerutsigiro rweMail.ru Cloud Solutions

Chii chimwe chekuverenga:

  1. Matanho matatu eautoscaling muKubernetes uye maitiro ekuashandisa nemazvo.
  2. Kubernetes worker nodes: akawanda madiki kana mashoma makuru?
  3. 25 Zvishandiso Zvinobatsira Kutumira uye Kugadzirisa Kubernetes.

Source: www.habr.com

Voeg