Yuav ua li cas txuas Kubernetes pawg hauv cov chaw sib txawv

Yuav ua li cas txuas Kubernetes pawg hauv cov chaw sib txawv
Txais tos rau peb Kubernetes Quick Start series. Nov yog kab lus tsis tu ncua nrog cov lus nug nthuav dav uas peb tau txais online thiab hauv peb cov kev cob qhia. Kubernetes cov lus teb.

Cov kws tshaj lij niaj hnub no yog Daniel Polenchik (Daniele Polencic: koj puas xav tau ntau tus thwjtim?). Daniel ua haujlwm ua tus kws qhia thiab software tsim tawm ntawm Learnk8s.

Yog tias koj xav kom koj cov lus nug teb nyob rau hauv kab ntawv tom ntej, tiv tauj peb ntawm email los yog Twitter: @learnk8s.

Tsis nco cov ntawv dhau los? Nrhiav lawv ntawm no.

Yuav ua li cas txuas Kubernetes pawg hauv cov chaw sib txawv?

Luv luv: Kubefed v2 los sai sai no, thiab kuv kuj xav kom nyeem txog Nkoj ua nkoj ΠΈ multi-cluster-scheduler project.

Heev feem ntau, infrastructure yog replicated thiab faib thoob plaws cheeb tsam sib txawv, tshwj xeeb tshaj yog nyob rau hauv kev tswj ib puag ncig.

Yog tias ib cheeb tsam tsis muaj, tsheb khiav mus rau lwm qhov kom tsis txhob muaj kev cuam tshuam.

Nrog Kubernetes, koj tuaj yeem siv lub tswv yim zoo sib xws thiab faib cov haujlwm ua haujlwm thoob plaws cheeb tsam sib txawv.

Koj tuaj yeem muaj ib lossis ntau pawg rau ib pab pawg, cheeb tsam, ib puag ncig, lossis kev sib xyaw ntawm cov ntsiab lus no.

Koj cov pawg tuaj yeem tuav hauv huab sib txawv thiab hauv thaj chaw.

Tab sis koj npaj li cas rau kev tsim kho vaj tse rau thaj chaw sib kis?
Koj puas xav tsim ib pawg loj rau ntau qhov chaw huab cua hauv ib lub network?
Los yog muaj ntau pawg me me thiab nrhiav txoj hauv kev los tswj thiab synchronize lawv?

Ib pawg thawj coj

Tsim ib pawg hauv ib lub network tsis yooj yim li.

Xav txog tias koj muaj kev huam yuaj, kev sib txuas ntawm pawg pawg poob lawm.

Yog tias koj muaj ib tus tswv server, ib nrab ntawm cov peev txheej yuav tsis tuaj yeem tau txais cov lus txib tshiab vim tias lawv yuav tsis tuaj yeem tiv tauj tus tswv.

Thiab tib lub sijhawm koj muaj cov rooj zaum qub (kube-proxy tsis tuaj yeem rub tawm cov tshiab) thiab tsis muaj pods ntxiv (kubelet tsis tuaj yeem thov hloov tshiab).

Yuav ua rau qhov teeb meem loj dua, yog Kubernetes tsis pom lub pob, nws cim tias nws yog menyuam ntsuag thiab faib cov pob kws uas ploj lawm mus rau cov nodes uas twb muaj lawm.

Raws li qhov tshwm sim, koj muaj ob zaug ntau npaum li cov pods.

Yog tias koj ua ib tus tswv server rau txhua cheeb tsam, yuav muaj teeb meem nrog kev pom zoo algorithm hauv lwm yam database. (kwv yees. ed. - Qhov tseeb, etcd database tsis tas yuav tsum tau nyob ntawm tus tswv servers. Nws tuaj yeem khiav ntawm ib pawg ntawm cov servers hauv tib cheeb tsam. Muaj tseeb, tib lub sij hawm tau txais ib qho kev ua tsis tiav ntawm pawg. Tab sis sai sai.)

siv ymd raft algorithmlos sib tham tus nqi ua ntej sau rau disk.
Qhov ntawd yog, feem ntau ntawm cov xwm txheej yuav tsum muaj kev pom zoo ua ntej lub xeev tuaj yeem sau rau lwm yam.

Yog hais tias qhov latency ntawm etcd piv txwv nce ntau, ib yam li cov ntaub ntawv nrog peb lwm yam xwm txheej hauv cheeb tsam sib txawv, nws yuav siv sij hawm ntev los sib tham txog tus nqi thiab sau rau disk.
Qhov no tau tshwm sim hauv Kubernetes controllers.

Tus tswj hwm tswj hwm xav tau sijhawm ntxiv los kawm txog qhov kev hloov pauv thiab sau cov lus teb rau cov ntaub ntawv.

Thiab vim tsis muaj ib tus tswj hwm, tab sis ob peb, kev sib txuas lus tshwm sim thiab tag nrho pawg pib ua haujlwm qeeb heev.

etcd yog latency rhiab heev uas Cov ntaub ntawv raug pom zoo kom siv SSDs es tsis txhob siv cov hard drive li niaj zaus.

Tam sim no tsis muaj cov piv txwv zoo ntawm lub network loj rau ib pawg.

Yeej, cov neeg tsim tawm hauv zej zog thiab SIG-cluster pawg tab tom sim nrhiav seb yuav ua li cas orchestrate pawg tib yam li Kubernetes orchestrates ntim.

Kev xaiv 1: pawg koom haum nrog kubefed

Official teb los ntawm SIG-cluster - kubefed2, ib tug tshiab version ntawm thawj kube federation neeg siv thiab tus neeg teb xov tooj.

Thawj zaug, peb tau sim tswj cov kev sau ntawm pawg ua ib yam khoom siv kube federation cuab yeej.

Qhov pib tau zoo, tab sis thaum kawg kube federation yeej tsis tau nrov vim nws tsis txhawb nqa tag nrho cov peev txheej.

Nws txhawb kev xa khoom thiab kev pabcuam hauv tsoomfwv, tabsis tsis yog StatefulSets, piv txwv.
Tsis tas li ntawd, lub koom haum kev teeb tsa tau raug xa mus rau hauv daim ntawv annotations thiab tsis hloov pauv.

Xav txog yuav ua li cas koj tuaj yeem piav qhia txog qhov sib faib sib faib rau txhua pawg hauv ib lub koomhaum uas siv cov lus piav qhia xwb.

Nws yog ib tug tag nrho mess.

SIG-cluster tau ua haujlwm ntau tom qab kubefed v1 thiab txiav txim siab los ua kom qhov teeb meem los ntawm lwm lub kaum sab xis.

Es tsis txhob annotations, lawv txiav txim siab tso ib tug maub los uas yog ntsia rau pawg. Nws tuaj yeem hloov kho siv Custom Resource Definitions (CRDs).

Rau txhua qhov peev txheej uas yuav yog ib feem ntawm lub koomhaum, koj muaj CRD kev cai txhais nrog peb ntu:

  • tus qauv txhais ntawm cov peev txheej, piv txwv li kev xa tawm;
  • seem placement, qhov twg koj txhais li cas cov peev txheej yuav muab faib rau hauv lub koomhaum;
  • seem override, qhov twg rau ib qho kev pab tshwj xeeb koj tuaj yeem override qhov hnyav thiab qhov ntsuas ntawm qhov chaw.

Ntawm no yog ib qho piv txwv ntawm kev xa khoom ua ke nrog kev tso kawm thiab override seem.

apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedDeployment
metadata:
  name: test-deployment
  namespace: test-namespace
spec:
  template:
    metadata:
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
            - image: nginx
              name: nginx
  placement:
    clusterNames:
      - cluster2
      - cluster1
  overrides:
    - clusterName: cluster2
      clusterOverrides:
        - path: spec.replicas
          value: 5

Raws li koj tuaj yeem pom, cov khoom siv tau muab faib ua ob pawg: cluster1 ΠΈ cluster2.

Thawj pawg muab peb qhov kev hloov pauv, thiab qhov thib ob yog teem rau 5.

Yog tias koj xav tau kev tswj hwm ntau dua ntawm cov khoom siv rov ua dua, kubefed2 muab cov khoom siv tshiab ReplicaSchedulingPreference qhov twg cov khoom tuaj yeem raug hnyav:

apiVersion: scheduling.federation.k8s.io/v1alpha1
kind: ReplicaSchedulingPreference
metadata:
  name: test-deployment
  namespace: test-ns
spec:
  targetKind: FederatedDeployment
  totalReplicas: 9
  clusters:
    A:
      weight: 1
    B:
      weight: 2

CRD qauv thiab API tseem tsis tau npaj txhij, thiab kev ua haujlwm nquag tab tom ua haujlwm hauv qhov chaw cia khoom ua haujlwm.

Khaws ib lub qhov muag ntawm kubefed2, tab sis nco ntsoov tias nws tseem tsis tau tsim nyog rau kev tsim khoom.

Kawm paub ntau ntxiv txog kubefed2 los ntawm official article about kubefed2 hauv blog txog Kubernetes thiab hauv official repository ntawm lub kubefed project.

Kev xaiv 2: sib txuas cov pawg hauv Booking.com style

Cov neeg tsim tawm ntawm Booking.com tsis ua haujlwm rau kubefed v2, tab sis lawv tuaj nrog Shipper - tus neeg teb xov tooj rau kev xa khoom ntawm ntau pawg, hauv ntau thaj tsam thiab ntau huab.

Nkoj ua nkoj me ntsis zoo li kubefed2.

Ob lub cuab yeej tso cai rau koj los kho koj lub tswv yim kev xa tawm ntau pawg (cov pawg twg tau siv thiab pes tsawg replicas lawv muaj).

Tsis tau Shipper lub hom phiaj yog los txo qhov kev pheej hmoo ntawm kev ua yuam kev thaum lub sijhawm xa khoom.

Hauv Shipper, koj tuaj yeem txhais tau ntau cov kauj ruam uas piav qhia txog kev faib tawm ntawm kev hloov pauv ntawm qhov kev xa tawm yav dhau los thiab tam sim no thiab ntim ntawm cov khoom xa tuaj.

Thaum koj thawb cov peev txheej mus rau ib pawg, Shipper controller incrementally dov tawm qhov hloov pauv thoob plaws txhua pawg koom nrog.

Tsis tas li ntawd, Shipper muaj tsawg heev.

Piv txwv li, nws lees txais cov kab kos kab kos raws li kev nkag thiab tsis txhawb nqa cov peev txheej vanilla.
Feem ntau, Shipper ua haujlwm zoo li no.

Hloov chaw xa khoom, koj yuav tsum tsim cov peev txheej thov uas suav nrog Helm daim ntawv qhia:

apiVersion: shipper.booking.com/v1alpha1
kind: Application
metadata:
  name: super-server
spec:
  revisionHistoryLimit: 3
  template:
    chart:
      name: nginx
      repoUrl: https://storage.googleapis.com/shipper-demo
      version: 0.0.1
    clusterRequirements:
      regions:
        - name: local
    strategy:
      steps:
        - capacity:
            contender: 1
            incumbent: 100
          name: staging
          traffic:
            contender: 0
            incumbent: 100
        - capacity:
            contender: 100
            incumbent: 0
          name: full on
          traffic:
            contender: 100
            incumbent: 0
    values:
      replicaCount: 3

Shipper yog qhov kev xaiv zoo rau kev tswj hwm ntau pawg, tab sis nws txoj kev sib raug zoo nrog Helm tsuas yog tau txais txoj hauv kev.

Yuav ua li cas yog peb txhua tus hloov ntawm Helm mus rau kho los yog tus nom?

Xav paub ntau ntxiv txog Shipper thiab nws lub tswv yim ntawm daim ntawv tshaj tawm no.

Yog hais tias koj xav mus khawb rau hauv lub code, mus rau lub official qhov chaw cia khoom.

Kev xaiv 3: "magic" pawg sib koom ua ke

Kubefed v2 thiab Shipper ua haujlwm nrog pawg koom haum, muab cov peev txheej tshiab rau pawg los ntawm kev txhais cov peev txheej.

Tab sis yuav ua li cas yog tias koj tsis xav rov sau tag nrho cov khoom xa tuaj, StatefulSets, DaemonSets, thiab lwm yam.

Yuav ua li cas suav nrog pawg uas twb muaj lawm hauv lub koomhaum tsis hloov YAML?

multi-cluster-scheduler yog Admirality project, uas cuam tshuam nrog kev teem sijhawm ua haujlwm ntawm pawg.

Tab sis es tsis txhob tuaj nrog txoj hauv kev tshiab los cuam tshuam nrog pawg thiab qhwv cov peev txheej hauv cov ntsiab lus kev cai, ntau pawg-seem tau kos rau hauv tus qauv Kubernetes lub neej voj voog thiab cuam tshuam txhua qhov kev hu uas tsim cov pods.

Txhua lub pod tsim tam sim ntawd hloov nrog ib tug dummy.

multi-cluster-scheduler siv webhooks rau kev hloov kholos cuam tshuam kev hu thiab tsim ib qho chaw ua haujlwm dummy pod.

Tus thawj pod mus dhau lwm lub voj voog kev npaj uas, tom qab kev pov npav tag nrho lub koom haum, kev txiav txim siab muab tso rau.

Thaum kawg, lub pod yog xa mus rau lub hom phiaj pawg.

Raws li qhov tshwm sim, koj muaj lub pod ntxiv uas tsis muaj dab tsi, tsuas yog siv qhov chaw xwb.

Qhov zoo dua yog tias koj tsis tas yuav sau cov peev txheej tshiab los ua ke cov khoom siv.

Txhua qhov peev txheej uas tsim ib lub pod yog cia li npaj txhij rau merged.

Qhov no yog qhov nthuav, vim tias tam sim ntawd koj muaj cov khoom siv faib thoob plaws ntau thaj tsam, thiab koj tsis tau pom dua. Txawm li cas los xij, qhov no yog qhov txaus ntshai heev, vim tias txhua yam ntawm no so ntawm kev ua khawv koob.

Tab sis thaum Shipper tab tom sim ua kom feem ntau txo qhov cuam tshuam ntawm kev xa khoom, ntau pawg-tus neeg teem caij ua haujlwm ntau dua thiab tej zaum zoo dua rau kev ua haujlwm batch.

Nws tsis muaj ib tug advanced gradual xa mechanism.

Xav paub ntau ntxiv txog ntau pawg-s teem caij tuaj yeem nrhiav tau ntawm official repository page.

Yog tias koj xav nyeem txog ntau pawg-s teem sijhawm hauv kev nqis tes ua, Admiralty muaj nthuav siv rooj plaub nrog Argo - workflows, txheej xwm, CI thiab CD Kubernetes.

Lwm yam cuab yeej thiab kev daws teeb meem

Kev sib txuas thiab tswj ntau pawg yog ib txoj haujlwm nyuaj, thiab tsis muaj kev daws teeb meem thoob ntiaj teb.

Yog tias koj xav tshawb nrhiav lub ntsiab lus ntxiv, ntawm no yog qee qhov kev pab:

Qhov ntawd yog txhua yam rau hnub no

Ua tsaug rau koj nyeem kom kawg!

Yog tias koj paub yuav ua li cas txuas ntau pawg ua haujlwm tau zoo dua, qhia rau peb.

Peb yuav ntxiv koj txoj kev mus rau qhov txuas.

Ua tsaug tshwj xeeb rau Chris Nesbitt-Smith (Chris Nesbitt-Smiththiab Vincent de Sme (Vincent De Smet) (kev ntseeg siab engineer hauv swb mobile.io) rau kev nyeem tsab xov xwm thiab sib qhia cov ntaub ntawv muaj txiaj ntsig txog kev ua haujlwm ntawm tsoomfwv.

Tau qhov twg los: www.hab.com

Ntxiv ib saib