Top 10 Kubernetes Tricks ug Tips

Top 10 Kubernetes Tricks ug Tips

Adunay daghang reperensiya nga literatura sa Internet, apan usahay ang pinakasimple nga tambag mao ang labing bililhon. Team Kubernetes aaS gikan sa Mail.ru gihubad usa ka pagpili sa napulo ka mga limbong ug mga tip, nga gikolekta sa tagsulat sa artikulo pagkahuman sa usa ka tuig nga pagtrabaho kauban ang Kubernetes. Ang mga tip wala gihan-ay sa kamahinungdanon, apan kami naghunahuna nga ang tanan makakaplag usa ka butang nga mapuslanon alang sa ilang kaugalingon.

Ang pinakasimple nga sugo sa pagtrabaho uban sa Kubernetes

Sa pagsugod, tingali ang pinakasimple ug labing mapuslanon nga aksyon sa pagtrabaho uban sa Kubernetes. Ang mosunod nga sugo makahimo sa pagkompleto sa sugo kubectl sa bash shell:

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

Autofill kubectl isulat sa .bashrc file ug awtomatik nga ma-activate sa matag higayon nga ang kabhang gisugdan. Gipadali niini ang pag-type sa taas nga mga sugo ug mga parameter sama sa all-namespaces. Basaha ang dugang sa Kubernetes bash tabang.

Default nga memorya ug mga limitasyon sa CPU sa usa ka namespace

Kung ang aplikasyon gisulat nga dili husto, pananglitan, kini nagbukas sa usa ka bag-ong koneksyon sa database matag segundo apan dili kini gisira, nan ang cluster adunay usa ka memory leak. Ug kung ang aplikasyon walay limitasyon sa panumduman nga gitakda sa panahon sa pag-deploy, kini mahimong mosangpot sa pagkapakyas sa node.

Aron mapugngan kini, gitugotan ka sa Kubernetes sa pagtakda sa mga default nga mga pagdili sa usa ka basehanan sa kada namespace. Gisulat kini sa yaml file alang sa usa ka piho nga namespace. Ania ang usa ka pananglitan sa ingon nga file:

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

Paghimo sa ingon nga yaml ug i-apply sa bisan unsang namespace. Pananglitan, sa namespace limit-example. Karon ang bisan unsang sudlanan nga gibutang sa kini nga namespace adunay limitasyon nga 512Mi, gawas kung adunay lain nga limitasyon sa indibidwal nga gitakda alang niini nga sudlanan.

Pagkolekta sa basura sa mga daan nga bersyon sa Kubernetes

Ang Kubelet pinaagi sa default magsugod sa pagkolekta sa basura kung kanus-a var/lib/docker nag-okupar sa 90% sa anaa nga disk space. Maayo kini, bisan pa, hangtod sa Kubernetes 1.7 wala’y default nga limitasyon sa gidaghanon sa mga inode nga gigamit, nga katumbas sa gidaghanon sa mga file sa file system.

Potensyal ang imong sudlanan var/lib/docker mahimong mogamit lang sa 50% sa disk space, apan mahimong mahurot ang mga inode, nga magpahinabog mga problema sa mga trabahante.

Sa mga daan nga bersyon sa kubelet gikan sa 1.4 hangtod 1.6 kinahanglan nimo nga idugang kini nga bandila:

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

Sa 1.7 ug sa ulahi nga mga bersyon kini nga bandila gitakda sa default. Bisan pa, ang mga naunang bersyon wala mag-monitor sa limitasyon sa inode.

Minikube... gamay apan gamhanang lokal nga mga Kubernete

Ang Minikube mao ang pinakasayon ​​nga paagi sa pagpadagan sa lokal nga Kubernetes cluster. Gilunsad kini sa usa ka yano nga sugo:

minikube start

Ang pagpadagan niini nga sugo moresulta sa tinuod nga Kubernetes cluster nga nagdagan sa imong computer.

Top 10 Kubernetes Tricks ug Tips
Tinubdan sa paghulagway

Ang lansis mao kung giunsa paghimo ang aplikasyon ug pagdagan kini sa lokal sa kana nga kumpol. Gawas kung espesipikong itudlo, ang imahe sa Docker matukod sa imong kompyuter ug dili sa cluster.

Aron pugson ang Docker sa pagduso sa imahe sa lokal nga Kubernetes cluster, ang docker machine gihatagan sa mosunod nga sugo:

eval $(minikube docker-env)

Karon makahimo na kami og mga aplikasyon sa lokal nga Kubernetes cluster.

Ayaw paghatag ug kubectl access sa tanan

Kini daw klaro, apan kung daghang mga team ang naggamit sa parehas nga cluster para sa ilang mga aplikasyon (nga mao ang gibuhat sa Kubernetes), dili lang nimo ihatag ang tanan. kubectl. Mas maayo nga bulagon ang mga mando, hatagan ang matag usa sa kaugalingon nga namespace ug limitahan ang pag-access gamit ang mga palisiya sa RBAC.

Mahimo ka nga maglibog pinaagi sa pag-assign sa mga katungod sa pag-access, pagbasa, paghimo, pagtangtang ug uban pang mga operasyon alang sa matag pod. Apan ang nag-unang butang mao ang paglimite sa pag-access sa mga sekreto, nga gitugotan lamang kini sa mga administrador. Niining paagiha mailhan nato ang kalainan tali sa mga makadumala sa cluster ug sa mga yano nga ma-deploy niini.

Pagdumala sa mga Badyet sa Pod

Giunsa pagsiguro nga walay downtime alang sa usa ka aplikasyon sa usa ka Kubernetes cluster? PodDisruptionBudget ug usab PodDisruptionBudget.

Ang mga pundok matag karon ug unya gi-update ug ang mga node wala’y sulod. Walay makapugong, mao kana ang kamatuoran. Ang matag deployment nga adunay labaw sa usa ka higayon kinahanglan nga maglakip sa usa ka PDB (PodDisruptionBudget). Gihimo kini sa usa ka yano nga yaml file nga gipadapat sa cluster. Ang coverage area sa usa ka partikular nga PDB gitino sa mga tigpili sa label.

Mubo nga sulat: Ang badyet sa PDB gikonsiderar lamang kung ang paglapas sa badyet mahimong balihon (boluntaryong pagkabalda). Sa mga sitwasyon sama sa pagkapakyas sa hardware, ang PDB dili molihok.

Pananglitan PDB:

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

Ang duha ka nag-unang mga parameter mao ang matchLabels ΠΈ minAvailable. Ang una nga parameter nagtino kung unsang mga aplikasyon ang magamit sa badyet. Pananglitan, kung ako adunay mga pag-deploy nga adunay mga label app: app-a ΠΈ app: app-b, unya kini nga PDB magamit lamang sa una.

Parameter minAvailable gikuha ngadto sa asoy sa diha nga haw-ang (paglimpyo) sa node. Pananglitan, sa among panig-ingnan, sa panahon sa paghaw-as, ang tanan nga mga higayon gipapahawa app: app-a, gawas sa duha.

Gitugotan ka niini nga makontrol kung pila ka mga higayon sa aplikasyon ang kinahanglan nga modagan sa bisan unsang oras.

Pag-monitor sa kahimsog sa aplikasyon

Ang ingon nga pagmonitor posible sa duha ka paagi: gamit ang Readiness o Liveness nga mga pagsulay.

Ang unang pagsusi (kaandam) nagtino sa kaandam sa sudlanan sa pagdawat sa trapiko.

Ang ikaduha (liveness) nagpakita kung ang sudlanan himsog o kinahanglan nga i-restart.

Ang mga may kalabutan nga mga pag-configure gidugang ra sa yaml alang sa pag-deploy. Didto mahimo nimong ipiho ang mga timeout, mga oras sa paglangan ug ang gidaghanon sa mga pagsulay pag-usab. Tan-awa ang dugang nga mga detalye bahin kanila Dokumentasyon sa Kubernetes.

Ang mga tag bisan asa

Ang mga label usa sa sukaranang mga konsepto sa Kubernetes. Gitugotan nila ang mga butang nga gawasnong makigkomunikar sa usag usa, ingon man paghimo og mga pangutana base sa mga label. Sa Kubernetes, mahimo ka nga moadto sa kliyente ug motan-aw sa mga panghitabo alang sa piho nga mga tag.

Mahimo nimo ang halos bisan unsang butang nga adunay mga tag, apan usa ka maayong pananglitan ang paghimo og daghang mga palibot aron makadagan ang mga programa sa parehas nga kumpol.

Ingnon ta nga gigamit nimo ang parehas nga cluster alang sa dev ΠΈ qa. Kini nagpasabut nga mahimo ka adunay aplikasyon app-a, dungan nga nagtrabaho sa duha ka palibot qa ΠΈ dev. Sa kini nga kaso, mahimo namon nga gilain ang pag-access sa pananglitan sa aplikasyon sa usa ka piho nga palibot pinaagi sa pagtino sa angay nga parameter environment. Pananglitan app: app-a ΠΈ environment: dev alang sa usa ka palibot, ug app: app-a ΠΈ environment: qa para sa ikaduha.

Gitugotan ka niini nga ma-access ang duha nga mga higayon sa aplikasyon, pananglitan, aron magpahigayon og pagsulay nga dungan.

Pag-organisar

Ang Kubernetes usa ka gamhanan kaayo nga sistema, apan ang bisan unsang sistema sa kadugayan mahimong mabara sa daghang mga proseso. Ang Kubelet nagpadagan sa tanan nga mga proseso ug nagsusi nga imong gipiho, ingon man ang kaugalingon niini.

Siyempre, ang usa ka orphaned nga serbisyo dili makapahinay sa sistema, ug ang Kubernetes gidesinyo sa pag-scale gikan sa sinugdanan. Apan kung imbes nga usa ka serbisyo usa ka milyon ang makita, ang kubelet magsugod sa pagtuok.

Kung tungod sa usa ka hinungdan imong gitangtang ang usa ka deployment (container, imahe, bisan unsa), siguruha lang nga buhaton ang usa ka kompleto nga paglimpyo.

Himamata si Go

Gitipigan namon ang panguna nga tambag alang sa katapusan. Pagkat-on sa Go programming language.

Ang Kubernetes gihimo sa Go, ang tanan nga mga extension gisulat sa Go, ug ang client-go client library opisyal usab nga gisuportahan.

Mahimo kini gamiton alang sa lainlain ug makapaikag nga mga butang. Pananglitan, aron mapalapad ang sistema sa Kubernetes sa imong gusto. Busa, mahimo nimong gamiton ang imong kaugalingon nga mga programa sa pagkolekta sa datos, pag-deploy sa mga aplikasyon, o paglimpyo lang sa mga sudlanan.

Ang pagkat-on sa Go programming language ug pag-master sa client-go mao tingali ang pinakaimportante nga tambag nga imong mahatag sa mga bag-ong tiggamit sa Kubernetes.

Gihubad uban sa suporta sa Mail.ru Cloud Solutions

Unsa pa ang basahon:

  1. Tulo ka lebel sa autoscaling sa Kubernetes ug kung giunsa kini gamiton nga epektibo.
  2. Kubernetes worker node: daghang gagmay o pipila ka dagko?
  3. 25 Mapuslanon nga mga Himan sa Pag-deploy ug Pagdumala sa Kubernetes.

Source: www.habr.com

Idugang sa usa ka comment