Top 10 Kubernetes ke trik nouvèl ak konsèy

Top 10 Kubernetes ke trik nouvèl ak konsèy

Gen anpil literati referans sou Entènèt la, men pafwa konsèy ki pi senp la se pi enpòtan an. Ekip Kubernetes aaS soti nan Mail.ru tradui yon seleksyon nan dis ke trik nouvèl ak konsèy, ki otè a nan atik la kolekte apre yon ane nan travay ak Kubernetes. Konsèy yo pa klase pa enpòtans, men nou panse ke tout moun ap jwenn yon bagay itil pou tèt yo.

Kòmand ki pi senp pou travay ak Kubernetes

Pou kòmanse, petèt aksyon ki pi senp ak pi itil nan travay ak Kubernetes. Kòmandman sa a pèmèt fini lòd kubectl nan kokiy bash:

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

AutoFill kubectl yo pral ekri nan dosye a .bashrc epi yo pral otomatikman aktive chak fwa koki a kòmanse. Sa a akselere sezisman kòmandman long ak paramèt tankou all-namespaces. Li plis nan Kubernetes bash èd.

Default memwa ak CPU limit nan yon espas non

Si aplikasyon an ekri mal, pou egzanp, li louvri yon nouvo koneksyon ak baz done a chak segonn men pa janm fèmen li, Lè sa a, gwoup la gen yon koule memwa. Men, si aplikasyon an pa gen yon limit memwa fikse pandan deplwaman, sa ka mennen nan yon echèk ne.

Pou anpeche sa a, Kubernetes pèmèt ou mete restriksyon default sou yon baz pou chak espas non. Yo ekri nan dosye yaml pou yon espas non espesifik. Men yon egzanp yon dosye konsa:

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

Kreye yaml sa yo epi aplike nan nenpòt espas non. Pou egzanp, nan espas non an limit-example. Kounye a, nenpòt veso ki deplwaye nan espas non sa a pral gen yon limit 512Mi, sof si yo tabli yon lòt limit endividyèl pou veso sa a.

Koleksyon fatra nan ansyen vèsyon Kubernetes

Kubelet pa default kòmanse koleksyon fatra lè var/lib/docker okipe 90% nan espas disk ki disponib. Sa a se gwo, sepandan, jouk Kubernetes 1.7 pa te gen okenn limit default sou kantite inodes yo itilize, ki koresponn ak kantite dosye nan sistèm nan dosye.

Potansyèlman veso ou a var/lib/docker ka sèlman sèvi ak 50% nan espas ki la ki gen kapasite, men ka kouri soti nan inodes, ki pral lakòz pwoblèm pou travayè yo.

Nan vèsyon ki pi gran nan kubelet soti nan 1.4 a 1.6 ou pral oblije ajoute drapo sa a:

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

Nan vèsyon 1.7 ak pita yo mete drapo sa a pa default. Sepandan, vèsyon anvan yo pa kontwole limit inode la.

Minikube... ti men pwisan Kubernetes lokal yo

Minikube se fason ki pi fasil pou dirije yon gwoup Kubernetes lokal yo. Li te lanse ak yon kòmand senp:

minikube start

Kouri kòmand sa a rezilta nan yon gwoup Kubernetes reyèl kouri sou machin ou.

Top 10 Kubernetes ke trik nouvèl ak konsèy
Sous ilistrasyon

Trick la se ki jan yo bati aplikasyon an epi kouri li lokalman sou gwoup sa a. Sòf si yo bay enstriksyon espesifik, imaj Docker la pral bati sou òdinatè w lan epi li pa sou gwoup la.

Pou fòse Docker pouse imaj la nan gwoup Kubernetes lokal la, yo bay machin Docker la lòd sa a:

eval $(minikube docker-env)

Koulye a, nou ka bati aplikasyon sou yon gwoup lokal Kubernetes.

Pa bay kubectl aksè a tout moun

Sa a sanble evidan, men si plizyè ekip yo ap itilize menm gwoup la pou aplikasyon yo (ki se pou sa Kubernetes te kreye), ou pa ta dwe jis bay tout moun. kubectl. Li pi bon pou separe kòmandman yo, bay chak nan espas non pa yo epi limite aksè lè l sèvi avèk règleman RBAC.

Ou ka jwenn konfonn lè w bay dwa pou jwenn aksè, li, kreye, efase ak lòt operasyon pou chak gous. Men, bagay prensipal la se limite aksè a sekrè, ki pèmèt li sèlman nan administratè yo. Nan fason sa a nou pral fè diferans ant moun ki ka administre gwoup la ak moun ki ka senpleman deplwaye nan li.

Jere Bidjè Pod

Ki jan yo asire pa gen okenn tan pou yon aplikasyon nan yon gwoup Kubernetes? PodDisruptionBudget epi ankò PodDisruptionBudget.

Gwoup yo mete ajou detanzantan epi nœuds yo vide. Pa gen anyen ki kanpe toujou, se reyalite a. Chak deplwaman ki gen plis pase yon egzanp ta dwe gen ladan yon PDB (PodDisruptionBudget). Li kreye nan yon senp fichye yaml ki aplike nan gwoup la. Zòn pwoteksyon yon PDB patikilye detèmine pa seleksyon etikèt yo.

Remak: Yo pran bidjè PDB a an konsiderasyon sèlman lè vyolasyon bidjè a revèsib (dezòd volontè). Nan sitiyasyon tankou echèk pyès ki nan konpitè, PDB p ap travay.

Egzanp PDB:

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

De paramèt prensipal yo se matchLabels и minAvailable. Premye paramèt la presize pou ki aplikasyon bidjè a aplike. Pou egzanp, si mwen gen deplwaman ak etikèt app: app-a и app: app-b, Lè sa a, PDB sa a pral aplike sèlman nan premye a.

Paramèt minAvailable pran an konsiderasyon lè w vide (netwaye) ne la. Pa egzanp, nan egzanp nou an, pandan vid, tout ka yo degèpi app: app-a, eksepte de.

Sa a pèmèt ou kontwole konbyen ka aplikasyon an ta dwe kouri nan nenpòt ki lè.

Siveyans sante aplikasyon an

Siveyans sa yo posib nan de fason: lè l sèvi avèk tès Preparasyon oswa Liveness.

Premye sond (preparasyon) detèmine preparasyon veso a pou resevwa trafik.

Dezyèm lan (vivans) montre si veso a an sante oswa si li bezwen rekòmanse.

Konfigirasyon ki enpòtan yo tou senpleman ajoute nan yaml la pou deplwaman. Gen ou ka presize delè, tan reta ak kantite rejis. Gade plis detay sou yo Dokiman Kubernetes.

Tags yo tout kote

Etikèt yo se youn nan konsèp fondamantal nan Kubernetes. Yo pèmèt objè yo lib kominike youn ak lòt, osi byen ke kreye demann ki baze sou etikèt. Nan Kubernetes, ou ka menm ale nan kliyan an epi gade evènman pou tag espesifik.

Ou ka fè prèske anyen ak tags, men yon bon egzanp ta dwe kreye plizyè anviwònman pou kouri pwogram sou menm gwoup la.

Ann di ou itilize menm gwoup la pou dev и qa. Sa vle di ou ka gen yon aplikasyon app-a, ansanm ap travay nan tou de anviwònman yo qa и dev. Nan ka sa a, nou ka separeman jwenn aksè nan egzanp aplikasyon an nan yon anviwònman espesifik lè nou espesifye paramèt ki apwopriye a environment. Pou egzanp app: app-a и environment: dev pou yon anviwonman, ak app: app-a и environment: qa pou dezyèm lan.

Sa a pèmèt ou jwenn aksè nan tou de ka aplikasyon an, pou egzanp, fè tès ansanm.

Jwenn òganize

Kubernetes se yon sistèm trè pwisan, men nenpòt sistèm ka evantyèlman vin anbourbe ak twòp pwosesis. Kubelet la kouri tout pwosesis yo ak chèk ou presize, osi byen ke pwòp li yo.

Natirèlman, yon sèvis òfelen pa pral ralanti sistèm nan, ak Kubernetes fèt pou echèl soti nan tè a. Men, si olye de yon sèvis yon milyon parèt, kubelet la kòmanse toufe.

Si pou kèk rezon ou efase yon deplwaman (veso, imaj, kèlkeswa sa), jis asire w ke ou fè yon netwayaj konplè.

Rankontre Go

Nou sere konsèy prensipal la pou dènye. Aprann lang pwogramasyon Go.

Kubernetes devlope nan Go, tout ekstansyon yo ekri nan Go, ak bibliyotèk kliyan kliyan-go tou ofisyèlman sipòte.

Li ka itilize pou bagay diferan ak enteresan. Pou egzanp, elaji sistèm Kubernetes nan gou ou. Se konsa, ou ka itilize pwòp pwogram ou yo pou kolekte done, deplwaye aplikasyon, oswa tou senpleman netwaye veso yo.

Aprann lang pwogramasyon Go ak metrize kliyan-go se petèt konsèy ki pi enpòtan ou ka bay nouvo itilizatè Kubernetes.

Tradui ak sipò Mail.ru Cloud Solutions

Ki lòt bagay pou li:

  1. Twa nivo autoscaling nan Kubernetes ak kijan pou itilize yo efektivman.
  2. Nœuds travayè Kubernetes: anpil ti oswa kèk gwo?
  3. 25 Zouti itil pou deplwaye ak jere Kubernetes.

Sous: www.habr.com

Add nouvo kòmantè