ʻO 10 mau mea hoʻopunipuni a me nā ʻōlelo aʻoaʻo Kubernetes

ʻO 10 mau mea hoʻopunipuni a me nā ʻōlelo aʻoaʻo Kubernetes

Nui nā palapala kuhikuhi ma ka Pūnaewele, akā i kekahi manawa ʻo ka ʻōlelo aʻo maʻalahi ka mea waiwai loa. Hui Kubernetes aaS mai Mail.ru unuhi ʻia he koho o na maalea he umi a me na kokua, i hōʻiliʻili ʻia e ka mea kākau o ka ʻatikala ma hope o hoʻokahi makahiki o ka hana ʻana me Kubernetes. ʻAʻole hoʻokaʻawale ʻia nā ʻōlelo aʻoaʻo e ka mea nui, akā manaʻo mākou e loaʻa nā mea a pau i mea pono no lākou iho.

ʻO ke kauoha maʻalahi e hana pū me Kubernetes

I ka hoʻomaka ʻana, ʻo ia paha ka hana maʻalahi a maikaʻi loa i ka hana ʻana me Kubernetes. Hiki i kēia kauoha ke hoʻopau i ke kauoha kubectl ma ka bash shell:

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

Autofill kubectl e kākau ʻia i ka faila .bashrc a e hoʻāla ʻia i kēlā me kēia manawa e hoʻomaka ai ka pūpū. Hoʻoikaika kēia i ke kākau ʻana i nā kauoha lōʻihi a me nā ʻāpana e like me all-namespaces. Heluhelu hou aku ma Kōkua nā Kubernetes bash.

Hoʻomanaʻo paʻamau a me nā palena CPU ma kahi inoa inoa

Inā kākau pololei ʻia ka palapala noi, no ka laʻana, wehe ia i kahi pilina hou i ka waihona i kēlā me kēia kekona akā ʻaʻole i pani ʻia, a laila he leak hoʻomanaʻo ka puʻupuʻu. A inā ʻaʻohe palena hoʻomanaʻo o ka noi i hoʻonohonoho ʻia i ka wā o ka waiho ʻana, hiki i kēia ke alakaʻi i kahi hemahema node.

No ka pale ʻana i kēia, ʻae ʻo Kubernetes iā ʻoe e hoʻonohonoho i nā palena paʻamau ma ke kumu no kēlā me kēia inoa. Ua kākau ʻia lākou ma ka faila yaml no kahi inoa inoa kikoʻī. Eia kekahi laʻana o ia faila:

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

E hana i kēlā yaml a hoʻopili i kekahi inoa inoa. No ka laʻana, i ka namespace limit-example. I kēia manawa, loaʻa ka palena o 512Mi i kēlā me kēia pahu i kau ʻia ma kēia inoa inoa, ke ʻole e kau ʻia kahi palena ʻē aʻe no kēia ipu.

ʻOhi ʻōpala i nā mana kahiko o Kubernetes

Hoʻomaka ʻo Kubelet i ka hōʻiliʻili ʻōpala i ka wā var/lib/docker noho ʻo 90% o ka wahi disk i loaʻa. He mea maikaʻi kēia, akā naʻe, a hiki i ka Kubernetes 1.7 ʻaʻohe palena paʻamau i ka helu o nā inodes i hoʻohana ʻia, e pili ana i ka helu o nā faila i ka ʻōnaehana faila.

ʻO kāu pahu paha var/lib/docker hiki ke hoʻohana wale i 50% o ka disk space, akā hiki ke holo i waho o nā inodes, kahi e pilikia ai nā limahana.

I nā mana kahiko o kubelet mai 1.4 a i 1.6 pono ʻoe e hoʻohui i kēia hae:

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

Ma ka 1.7 a me nā mana ma hope ua hoʻonohonoho ʻia kēia hae ma ka paʻamau. Eia naʻe, ʻaʻole nānā nā mana mua i ka palena inode.

Minikube... nā Kubernetes kūloko liʻiliʻi akā ikaika

ʻO Minikube ke ala maʻalahi loa e holo ai i kahi hui Kubernetes kūloko. Hoʻomaka ʻia me kahi kauoha maʻalahi:

minikube start

ʻO ka holo ʻana i kēia kauoha e loaʻa i kahi pūʻulu Kubernetes maoli e holo ana ma kāu kamepiula.

ʻO 10 mau mea hoʻopunipuni a me nā ʻōlelo aʻoaʻo Kubernetes
Puna kiʻi

ʻO ka hoʻopunipuni pehea e kūkulu ai i ka noi a holo ma ka ʻāina ma kēlā puʻupuʻu. Inā ʻaʻole i kuhikuhi ʻia, e kūkulu ʻia ke kiʻi Docker ma kāu kamepiula a ʻaʻole ma ka hui.

No ka koi ʻana iā Docker e pana i ke kiʻi i ka hui Kubernetes kūloko, hāʻawi ʻia ka mīkini docker i kēia kauoha:

eval $(minikube docker-env)

I kēia manawa hiki iā mākou ke kūkulu i nā noi ma kahi hui Kubernetes kūloko.

Mai hāʻawi iā kubectl i ke komo i nā mea a pau

ʻIke ʻia kēia, akā inā hoʻohana nā hui he nui i ka puʻupuʻu like no kā lākou mau noi (ʻo ia ka mea i hana ʻia ai ʻo Kubernetes), ʻaʻole pono ʻoe e hāʻawi i kēlā me kēia kanaka. kubectl. ʻOi aku ka maikaʻi o ka hoʻokaʻawale ʻana i nā kauoha, hāʻawi i kēlā me kēia o lākou i kona inoa ponoʻī a hoʻopaʻa i ke komo ʻana me nā kulekele RBAC.

Hiki iā ʻoe ke huikau ma ka hāʻawi ʻana i nā kuleana e komo, heluhelu, hana, holoi a me nā hana ʻē aʻe no kēlā me kēia pod. Akā ʻo ka mea nui e kaupalena i ke komo ʻana i nā mea huna, e ʻae wale i nā luna hoʻomalu. Ma kēia ala mākou e hoʻokaʻawale ai ma waena o ka poʻe hiki ke hoʻokele i ka pūʻulu a me ka poʻe hiki ke hoʻopili wale iā ia.

Hoʻoponopono i nā kālā Pod

Pehea e hōʻoia ai ʻaʻohe manawa hoʻomaha no kahi noi ma kahi pūʻulu Kubernetes? PodDisruptionBudget a me PodDisruptionBudget hou.

Hoʻonui ʻia nā pūʻulu i kēlā me kēia manawa a hoʻopau ʻia nā node. ʻAʻohe mea e kū mālie, ʻo ia ka ʻoiaʻiʻo. Pono e hoʻokomo i kēlā me kēia hoʻolālā me kahi ʻoi aku o hoʻokahi PDB (PodDisruptionBudget). Hana ʻia ia ma kahi faila yaml maʻalahi i hoʻopili ʻia i ka pūpū. Hoʻoholo ʻia ka wahi uhi o kahi PDB e nā mea koho lepili.

'Ōlelo Aʻo: E noʻonoʻo ʻia ka waihona kālā PDB inā hiki ke hoʻohuli ʻia ka uhaki kālā (hoohaunaele manawalea). I nā kūlana e like me ka hāʻule ʻana o ka hardware, ʻaʻole e hana ʻo PDB.

Laʻana PDB:

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

ʻO nā palena nui ʻelua matchLabels и minAvailable. Hōʻike ka ʻāpana mua i nā noi e pili ana ka waihona kālā. No ka laʻana, inā loaʻa iaʻu nā hoʻolaha me nā lepili app: app-a и app: app-b, a laila pili kēia PDB i ka mea mua.

ʻO ka pākuhi minAvailable noʻonoʻo ʻia i ka wā e hoʻokaʻawale ai (hoʻomaʻemaʻe) i ka node. No ka laʻana, i kā mākou laʻana, i ka wā o ka hoʻokaʻawale ʻana, ua kipaku ʻia nā manawa āpau app: app-a, koe elua.

ʻAe kēia iā ʻoe e hoʻomalu i ka nui o nā manawa o ka noi e holo i kēlā me kēia manawa.

Ka nānā 'ana i ke ola kino noi

Hiki ke nānā ʻia ma nā ʻano ʻelua: me ka hoʻohana ʻana i nā hoʻokolohua Readiness a Liveness.

ʻO ka ʻimi mua (mākaukau) e hoʻoholo i ka mākaukau o ka pahu e loaʻa i ke kaʻa.

Hōʻike ka lua (liveness) inā olakino ka pahu a pono e hoʻomaka hou.

Hoʻohui wale ʻia nā hoʻonohonoho kūpono i ka yaml no ka hoʻolaha ʻana. Ma laila hiki iā ʻoe ke kuhikuhi i nā manawa manawa, nā manawa lohi a me ka helu o nā hoʻokolokolo hou. E ʻike i nā kikoʻī hou aku e pili ana iā lākou Nā palapala Kubernetes.

Aia nā kaha ma nā wahi a pau

ʻO nā lepili kekahi o nā manaʻo kumu ma Kubernetes. Hāʻawi lākou i nā mea e kamaʻilio manuahi me kekahi, a me ka hana ʻana i nā nīnau e pili ana i nā lepili. Ma Kubernetes, hiki iā ʻoe ke hele i ka mea kūʻai aku a nānā i nā hanana no nā hōʻailona kikoʻī.

Hiki iā ʻoe ke hana i nā mea āpau me nā hōʻailona, ​​​​akā, ʻo kahi laʻana maikaʻi ke hana ʻana i nā kaiapuni he nui e holo i nā papahana ma ka pūʻulu like.

E ʻōlelo kākou ua hoʻohana ʻoe i ka pūʻulu like no dev и qa. ʻO kēia ke ʻano hiki iā ʻoe ke loaʻa kahi noi app-a, e hana like ana ma nā wahi ʻelua qa и dev. I kēia hihia, hiki iā mākou ke komo kaʻawale i ka hiʻohiʻona noi i kahi kaiapuni kikoʻī ma ke kuhikuhi ʻana i ka palena kūpono environment. Eia kekahi laʻana app: app-a и environment: dev no ka puni hookahi, a app: app-a и environment: qa no ka lua.

Hiki iā ʻoe ke komo i nā manawa ʻelua o ka noi, no ka laʻana, e hana i ka hoʻāʻo ʻana i ka manawa like.

E hoʻonohonoho

He ʻōnaehana ikaika loa ʻo Kubernetes, akā hiki i kēlā me kēia ʻōnaehana ke hoʻopau i lalo me nā kaʻina hana he nui loa. E holo ana ka Kubelet i nā kaʻina hana a pau a me ka nānā ʻana āu i kuhikuhi ai, a me kāna ponoʻī.

ʻOiaʻiʻo, ʻaʻole e hoʻolōʻihi ka lawelawe keiki makua ʻole i ka ʻōnaehana, a ua hoʻolālā ʻia ʻo Kubernetes e hoʻonui i ka honua. Akā inā ma kahi o kahi lawelawe hoʻokahi miliona e ʻike ʻia, hoʻomaka ka kubelet e ʻoki.

Inā no kekahi kumu e hoʻopau ai ʻoe i kahi hoʻolaha (pahu, kiʻi, nā mea a pau), e hoʻomaʻemaʻe piha.

Hui iā Go

Ua mālama mākou i ka ʻōlelo aʻo nui no ka hope. E aʻo i ka ʻōlelo papahana Go.

Hoʻokumu ʻia ʻo Kubernetes ma Go, kākau ʻia nā hoʻonui a pau ma Go, a kākoʻo ʻia ka waihona mea kūʻai aku-go.

Hiki ke hoʻohana ʻia no nā mea like ʻole a hoihoi. No ka laʻana, e hoʻonui i ka ʻōnaehana Kubernetes i kou makemake. No laila, hiki iā ʻoe ke hoʻohana i kāu mau polokalamu ponoʻī e hōʻiliʻili i ka ʻikepili, hoʻolaha i nā noi, a i ʻole e hoʻomaʻemaʻe wale i nā ipu.

ʻO ke aʻo ʻana i ka ʻōlelo polokalamu Go a me ka haku ʻana i ka client-go ka ʻōlelo aʻoaʻo nui loa āu e hāʻawi ai i nā mea hoʻohana Kubernetes hou.

Unuhi ʻia me ke kākoʻo o Mail.ru Cloud Solutions

He aha hou aʻe e heluhelu ai:

  1. ʻEkolu pae o ka autoscaling ma Kubernetes a pehea e hoʻohana pono ai.
  2. Nā node limahana Kubernetes: nui nā mea liʻiliʻi a liʻiliʻi paha nā mea nui?
  3. 25 Nā mea hana pono no ka hoʻohana ʻana a me ka mālama ʻana i nā Kubernetes.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka