Top 10 Hişk û Serişteyên Kubernetes

Top 10 Hişk û Serişteyên Kubernetes

Li ser Înternetê gelek wêjeya referansê hene, lê carinan şîreta herî hêsan ya herî hêja ye. Kom Kubernetes aaS ji Mail.ru wergerandin hilbijartina deh tricks û tips, ku nivîskarê gotarê piştî salek xebata bi Kubernetes re berhev kir. Serişteyên ji hêla girîngiyê ve têne rêve kirin, lê em difikirin ku her kes dê ji bo xwe tiştek kêrhatî bibîne.

Fermana herî hêsan a ku bi Kubernetes re dixebite

Ji bo destpêkê, dibe ku di xebata bi Kubernetes re çalakiya herî hêsan û herî kêrhatî. Fermana jêrîn temamkirina fermanê dike kubectl li bash shell:

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

Autofill kubectl dê di pelê .bashrc de were nivîsandin û her gava ku şêlê dest pê dike dê bixweber were çalak kirin. Ev leza nivîsandina fermanên dirêj û parametreyên wek all-namespaces. Zêdetir bixwînin Alîkariya Kubernetes bash.

Sînorên bîra xwerû û CPU di nav cîhek navekî de

Ger serîlêdan bi xeletî were nivîsandin, mînakî, ew her saniye pêwendiyek nû bi databasê re vedike lê qet wê nagire, wê hingê komxebatek bîranînek heye. Û heke serîlêdanê di dema sazkirinê de sînorek bîranînê nebe, ev dikare bibe sedema têkçûna nodê.

Ji bo pêşîlêgirtina vê yekê, Kubernetes dihêle hûn li ser bingehek cîhê navekî sînorkirinên xwerû destnîşan bikin. Ew di pelê yaml de ji bo navekî taybetî têne nivîsandin. Li vir mînakek pelek weha ye:

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

Yamlek wusa biafirînin û li her cîhê navan bicîh bikin. Mînakî, li cîhê navan limit-example. Naha her konteynerek ku di vê cîhê navan de hatî bicîh kirin dê xwedan sînorek 512Mi be, heya ku ji bo vê konteynerê sînorek kesane ya din neyê danîn.

Di guhertoyên kevntir ên Kubernetes de berhevkirina çopê

Kubelet ji hêla xwerû dema ku dest bi berhevkirina çopê dike var/lib/docker 90% ji cîhê dîskê berdest digire. Lêbelê, ev pir xweş e, heya Kubernetes 1.7 li ser hejmara inode-ên ku têne bikar anîn, ku bi hejmara pelên di pergala pelan de têkildar in, ti sînorek xwerû tune bû.

Potansiyel konteynera we var/lib/docker dibe ku tenê 50% ji cîhê dîskê bikar bîne, lê dibe ku inode biqede, ku dê bibe sedema pirsgirêkan ji bo karkeran.

Di guhertoyên kevntir ên kubelet de ji 1.4 heta 1.6 divê hûn vê ala zêde bikin:

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

Di guhertoyên 1.7 û paşê de ev ala ji hêla xwerû ve hatî danîn. Lêbelê, guhertoyên berê sînorê inode çavdêr nakin.

Minikube... Kubernetesên herêmî yên piçûk lê bi hêz

Minikube awayê herî hêsan e ku meriv komek herêmî ya Kubernetes bimeşîne. Ew bi fermanek hêsan tê destpêkirin:

minikube start

Rêvekirina vê fermanê encam dide komek Kubernetes a rastîn ku li ser makîneya we dixebite.

Top 10 Hişk û Serişteyên Kubernetes
Çavkaniya illustration

Xefet ev e ku meriv çawa serîlêdanê ava dike û wê li ser wê komê li herêmî dimeşîne. Heya ku bi taybetî nehatiye rêve kirin, wêneya Docker dê li ser komputera we û ne li ser komê were çêkirin.

Ji bo ku Docker neçar bike ku wêneyê berbi koma Kubernetes ya herêmî veke, ji makîneya dockerê fermana jêrîn tê dayîn:

eval $(minikube docker-env)

Naha em dikarin serîlêdanan li ser komek Kubernetes ya herêmî ava bikin.

Kubectl nedin her kesî

Ev eşkere xuya dike, lê heke gelek tîm ji bo serîlêdanên xwe heman komê bikar tînin (ya ku Kubernetes ji bo wê hatî afirandin), divê hûn ne tenê bidin her kesî kubectl. Çêtir e ku emran ji hev veqetînin, her yek ji wan cîhê navên xwe veqetînin û gihîştina bi karanîna polîtîkayên RBAC sînordar bikin.

Hûn dikarin bi destnîşankirina mafên gihîştin, xwendin, afirandin, jêbirin û karûbarên din ên ji bo her podê tevlihev bibin. Lê ya sereke ev e ku meriv gihîştina razan sînordar bike, ku destûrê bide wê tenê ji rêvebiran re. Bi vî rengî em ê di navbera yên ku dikarin komê bi rêve bibin û yên ku bi hêsanî dikarin li ser wê bicîh bikin ji hev cuda bikin.

Budçeyên Pod Birêvebirin

Meriv çawa ji bo serîlêdanek di komikek Kubernetes de wextê dakêşanê peyda nake? PodDisruptionBudget û dîsa PodDisruptionBudget.

Kom bi periyodîk têne nûve kirin û girêk têne vala kirin. Tiştek nesekine, ew rastî ye. Pêdivî ye ku her vekêşana bi zêdetirî yek mînakî PDB (PodDisruptionBudget) hebe. Ew di pelek yaml a sade ya ku li komê tê sepandin de hatî çêkirin. Qada vegirtinê ya PDB-ya taybetî ji hêla hilbijêrên labelê ve tê destnîşankirin.

Têbînî: Butçeya PDB tenê dema ku binpêkirina budçeyê vegere tê hesibandin (astengkirina dilxwazî). Di rewşên wekî têkçûna hardware de, PDB dê nexebite.

Mînak PDB:

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

Du pîvanên sereke ne matchLabels и minAvailable. Parametreya yekem diyar dike ku budce li ser kîjan sepanan derbas dibe. Mînakî, heke bi etîketan veqetandinên min hebin app: app-a и app: app-b, wê demê ev PDB dê tenê ji bo ya yekem derbas bibe.

Parîsê minAvailable dema valakirina (paqijkirina) girêk tê girtin. Mînakî, di mînaka me de, di dema valakirinê de, hemî mînak têne derxistin app: app-a, ji bilî du.

Ev dihêle hûn kontrol bikin ka çend mînakên serîlêdanê divê di her kêliyê de werin xebitandin.

Çavdêriya tenduristiya serîlêdanê

Çavdêriya bi vî rengî bi du awayan mimkun e: bi karanîna testên Amadebûn an jîndarbûnê.

Lêkolîna yekem (amadebûn) amadebûna konteynerê ji bo wergirtina trafîkê diyar dike.

Ya duyemîn (livîn) nîşan dide ka konteynir saxlem e an pêdivî ye ku ji nû ve were destpêkirin.

Veavakirinên têkildar bi tenê ji bo bicîhkirinê li yaml têne zêdekirin. Li wir hûn dikarin demaran, demên derengmayînê û hejmara ceribandinan diyar bikin. Zêdetir hûrgulî li ser wan bibînin Belgekirina Kubernetes.

Etîket li her derê ne

Etîket di Kubernetes de yek ji têgehên bingehîn in. Ew dihêle ku tişt bi serbestî bi hevûdu re têkilî daynin, û hem jî li ser bingeha nîşanan pirsan biafirînin. Li Kubernetes, hûn dikarin herin ser xerîdar û ji bo nîşaneyên taybetî bûyeran temaşe bikin.

Hûn dikarin hema hema her tiştî bi etîketan bikin, lê mînakek baş dê çêkirina pir hawîrdoran be ku bernameyan li ser heman komê bimeşînin.

Ka em bibêjin hûn ji bo heman komê bikar tînin dev и qa. Ev tê vê wateyê ku hûn dikarin serîlêdanek hebe app-a, di her du hawîrdoran de hevdem dixebitin qa и dev. Di vê rewşê de, em dikarin bi destnîşankirina pîvana guncan ve ji hev veqetînin mînaka serîlêdanê li hawîrdorek taybetî environment. Mînakî app: app-a и environment: dev ji bo yek jîngehê, û app: app-a и environment: qa ji bo duyemîn.

Ev dihêle hûn bigihîjin her du mînakên serîlêdanê, mînakî, ku hûn bi hevdemî ceribandinê bikin.

Birêxistin bibin

Kubernetes pergalek pir bi hêz e, lê her pergalek dikare di dawiyê de bi pir pêvajoyan re têk bibe. Kubelet hemî pêvajoyan dimeşîne û kontrol dike ku hûn diyar dikin, û hem jî ya xwe.

Bê guman, yek karûbarê sêwî dê pergalê hêdî neke, û Kubernetes ji bo pîvandina ji erdê ve hatî çêkirin. Lê eger li şûna yek xizmetê mîlyonek xuya bibe, kubelet dest pê dike.

Ger ji ber hin sedeman hûn veqetandinek jêbirin (konteyner, wêne, çi be), tenê pê ewle bin ku hûn paqijiyek bêkêmasî bikin.

Meet Go

Me şîreta sereke ji bo paşîn xilas kir. Zimanê bernamesaziyê Go fêr bibin.

Kubernetes di Go-yê de hatî pêşve xistin, hemî pêvekirin di Go-yê de têne nivîsandin, û pirtûkxaneya xerîdar-go jî bi fermî tê piştgirî kirin.

Ew dikare ji bo tiştên cûda û balkêş were bikar anîn. Mînakî, ji bo berfirehkirina pergala Kubernetes li gorî kêfa xwe. Ji ber vê yekê, hûn dikarin bernameyên xwe bikar bînin da ku daneyan berhev bikin, serîlêdanan bicîh bikin, an tenê konteyneran paqij bikin.

Fêrbûna zimanê bernamesaziyê Go û serweriya xerîdar-go dibe ku şîreta herî girîng a ku hûn dikarin ji bikarhênerên nû yên Kubernetes re bidin.

Bi piştgiriya Mail.ru Cloud Solutions ve hatî wergerandin

Din çi bixwînin:

  1. Di Kubernetes de sê astên xweseriya xweseriyê û meriv çawa wan bi bandor bikar tîne.
  2. Girêkên karker ên Kubernetes: gelek piçûk an çend mezin?
  3. 25 Amûrên Kêrhatî Ji bo Bicihkirin û Birêvebirina Kubernetes.

Source: www.habr.com

Add a comment