Momba ny fitomboan'ny lazan'ny Kubernetes

Hey Habr!

Amin'ny faran'ny fahavaratra, tianay ny mampahatsiahy anao fa manohy miasa amin'ny lohahevitra izahay Kubernetes ary nanapa-kevitra ny hamoaka lahatsoratra avy amin'ny Stackoverflow mampiseho ny toe-draharaha amin'ity tetikasa ity tamin'ny fiandohan'ny volana Jona.

Momba ny fitomboan'ny lazan'ny Kubernetes

Manaova famakiana mahafinaritra!

Tamin'ny fotoana nanoratana ity lahatsoratra ity dia eo ho eo ny taonan'i Kubernetes. enin-taona, ary tao anatin'ny roa taona lasa dia nitombo be ny lazany ka isany tsy tapaka eo amin'ny laharana tiany indrindra sehatra. Laharana fahatelo i Kubernetes tamin'ity taona ity. Raha hamerenana: Kubernetes dia sehatra natao hampandehanana sy handrindrana ireo enta-mavesatry ny container.

Ny kaontenera dia nanomboka ho endrika manokana ho an'ny fitokanana ny fizotran'ny Linux; kaontenera dia nampidirina nanomboka tamin'ny 2007 cgroups, ary nanomboka tamin'ny 2002 – namespaces. Ny kaontenera dia novolavolaina tsara kokoa tamin'ny taona 2008, rehefa tonga izy io LXC, ary Google dia namolavola ny rafitra anatiny manokana antsoina hoe Borg, izay “atao anaty kaontenera ny asa rehetra”. Manomboka eto izahay dia mandroso haingana mankany amin'ny 2013, rehefa niseho ny famoahana voalohany an'i Docker, ary lasa vahaolana faobe malaza ny container. Tamin'izany fotoana izany, ny fitaovana lehibe indrindra amin'ny orkestra kaontenera dia Mesos, na dia tsy dia malaza loatra aza izy. Navoaka voalohany tamin'ny taona 2015 i Kubernetes, ary taorian'izay dia lasa fenitra de facto eo amin'ny sehatry ny orkestra kaontenera ity fitaovana ity.

Mba hanandramana hahatakatra ny antony maha be mpitia ny Kubernetes, andeha isika hamaly fanontaniana vitsivitsy. Oviana no fotoana farany nahafahan'ny mpamorona nifanaraka tamin'ny fomba fametrahana fampiharana amin'ny famokarana? Firy ny developer fantatrao fa mampiasa ireo fitaovana ireo rehefa omena azy ireo ivelan'ny boaty? Firy ny administratera rahona ankehitriny izay tsy mahazo ny fomba fiasan'ny fampiharana? Hodinihintsika ato amin’ity lahatsoratra ity ny valin’ireo fanontaniana ireo.

Fotodrafitrasa toy ny YAML

Ao amin'ny tontolo izay niainga avy amin'ny saribakoly sy Chef mankany Kubernetes, iray amin'ireo fiovana lehibe indrindra ny fifindran'ny "fotodrafitrasa ho fehezan-dalàna" mankany amin'ny "fotodrafitrasa ho angon-drakitra" — indrindra indrindra, toa an'i YAML. Ny loharanon-karena rehetra ao amin'ny Kubernetes, izay ahitana pods, configurations, instance deployed, volumes, sns., dia azo faritana mora foana amin'ny rakitra YAML. Ohatra:

apiVersion: v1
kind: Pod
metadata:
  name: site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80

Ity fomba fijery ity dia manamora ny DevOps na ny SRE matihanina haneho tanteraka ny enta-mavesany nefa tsy mila manoratra kaody amin'ny fiteny toa an'i Python na Javascript.

Ny tombony hafa amin'ny fandaminana fotodrafitrasa ho angon-drakitra dia ahitana:

  • GitOps na Git Operations Version Control. Ity fomba fiasa ity dia ahafahanao mitazona ny rakitra Kubernetes YAML rehetra ao amin'ny git repository, mba hahafahanao manara-maso marina ny fotoana nanaovana ny fanovana, iza no nanao izany, ary inona marina no niova. Izany dia mampitombo ny mangarahara amin'ny asa manerana ny fikambanana ary manatsara ny fahombiazan'ny fampandehanana amin'ny alàlan'ny fanafoanana ny tsy mazava, indrindra amin'ny toerana tokony hitadiavan'ny mpiasa ny loharano ilainy. Mandritra izany fotoana izany dia lasa mora kokoa ny manao fanovana ho azy amin'ny loharanon'i Kubernetes amin'ny alàlan'ny fanakambanana fangatahana fisintonana fotsiny.
  • Scalability. Rehefa faritana ho YAML ny loharanon-karena, dia lasa mora ho an'ny mpandraharaha cluster ny manova isa iray na roa ao amin'ny loharano Kubernetes, ka manova ny fomba mizana. Ny Kubernetes dia manome mekanika ho an'ny fanamafisam-peo mitsivalana ny pods, izay azo ampiasaina hamaritana tsara hoe inona ny isan'ny pods kely indrindra sy ambony indrindra takiana amin'ny fandrindrana fametrahana manokana hiatrehana ny fifamoivoizana ambany sy avo. Ohatra, raha toa ianao ka nametraka fanamafisam-peo izay mitaky fahaiza-manao fanampiny noho ny fiakaran'ny fifamoivoizana tampoka, dia azo ovaina amin'ny 10 ka hatramin'ny 20 ny maxReplicas:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp-deployment
  minReplicas: 1
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

  • Fiarovana sy fitantanana. YAML dia tsara amin'ny fanombanana ny fomba fametrahana zavatra ao amin'ny Kubernetes. Ohatra, ny olana ara-piarovana lehibe iray dia miahiahy raha toa ny entan'ny asanao dia mandeha amin'ny maha mpampiasa tsy admin azy. Amin'ity tranga ity, mety mila fitaovana toy ny fifaninanana, YAML/JSON validator, miampy Open Policy Agent, mpanamarina ny politika mba hahazoana antoka fa ny teny manodidina SecurityContext ny enta-mavesatrao dia tsy mamela ny kaontenera mandeha miaraka amin'ny tombontsoan'ny mpitantana. Raha ilaina izany dia afaka mampihatra politika tsotra ny mpampiasa hady kely, toa izao:

package main

deny[msg] {
  input.kind = "Deployment"
  not input.spec.template.spec.securityContext.runAsNonRoot = true
  msg = "Containers must not run as root"
}

  • Safidy hampidirana amin'ny mpamatsy rahona. Ny iray amin'ireo fironana misongadina indrindra amin'ny teknolojia avo lenta ankehitriny dia ny fampandehanana enta-mavesatra amin'ny mpanome rahona ho an'ny daholobe. Mampiasa ny singa mpamatsy rahona Ny Kubernetes dia mamela ny cluster rehetra hiditra amin'ny mpamatsy rahona izay iasany. Ohatra, raha misy mpampiasa mampiasa fampiharana ao amin'ny Kubernetes amin'ny AWS ary te-hampiseho izany fampiharana izany amin'ny alàlan'ny serivisy iray, dia manampy amin'ny famoronana ho azy ny serivisy ilay mpanome rahona. LoadBalancerizay hanome ho azy ny load balancer Amazon Elastic Load Balancerhamerenana ny fifamoivoizana amin'ny pods fampiharana.

Expandability

Tena azo itarina ny Kubernetes ary tian'ny developer izany. Misy loharano azo ampiasaina toy ny pods, deployments, StatefulSets, tsiambaratelo, ConfigMaps, sns. Marina fa afaka manampy loharano hafa amin'ny endrika ireo mpampiasa sy mpamorona famaritana loharano manokana.

Ohatra, raha tiantsika ny hamaritra loharano iray CronTab, dia afaka manao zavatra toy izao ianao:

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: crontabs.my.org
spec:
  group: my.org
  versions:
    - name: v1
      served: true
      storage: true
      Schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                  pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
                replicas:
                  type: integer
                  minimum: 1
                  maximum: 10
  scope: Namespaced
  names:
    plural: crontabs
    singular: crontab
    kind: CronTab
    shortNames:
    - ct

Avy eo dia afaka mamorona loharano CronTab toy izao isika:

apiVersion: "my.org/v1"
kind: CronTab
metadata:
  name: my-cron-object
spec:
  cronSpec: "* * * * */5"
  image: my-cron-image
  replicas: 5

Safidy iray hafa amin'ny fanitarana ao amin'ny Kubernetes dia ny hoe afaka manoratra ny fanambarany manokana ny mpamorona. mpandraharaha dia dingana manokana ao amin'ny cluster Kubernetes izay miasa araka ny "faritra fanaraha-maso" Miaraka amin'ny fanampian'ny mpandraharaha iray, ny mpampiasa dia afaka manao automatique ny fitantanana ny CRDs (famaritana ny loharanon-karena mahazatra) amin'ny alàlan'ny fifanakalozana vaovao amin'ny API Kubernetes.

Misy fitaovana maromaro ao amin'ny vondrom-piarahamonina izay manamora ny famoronana ny mpandraharaha azy manokana. Anisan-dry zareo - Framework Operator ary ny azy Operator SDK. Ity SDK ity dia manome fototra ahafahan'ny developer manomboka mamorona operator haingana. Andeha atao hoe afaka manomboka amin'ny baiko baiko toy izao ianao:

$ operator-sdk new my-operator --repo github.com/myuser/my-operator

Izany dia mamorona ny kaody boilerplate rehetra ho an'ny mpampiasa anao, ao anatin'izany ny rakitra YAML sy ny kaody Golang:

.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.go

Avy eo ianao dia afaka manampy ireo API sy mpanara-maso ilaina, toy izao:

$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService

$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService

Avy eo, farany, angony ny mpandraharaha ary alefaso any amin'ny rejisitra misy anao:

$ operator-sdk build your.container.registry/youruser/myapp-operator

Raha mila fifehezana bebe kokoa ny mpamorona, dia azo ovaina ny kaody boilerplate ao amin'ny rakitra Go. Ohatra, raha hanova ny mari-pamantarana momba ny mpanara-maso dia azonao atao ny manova ny rakitra controller.go.

Tetikasa iray hafa na aiza na aiza, mamela anao hamorona fanambarana amin'ny alàlan'ny rakitra YAML fanambarana ihany. Ohatra, ny mpandraharaha iray ho an'ny Apache Kafka dia hofaritana eo ho eo toy izany. Miaraka amin'izany ianao dia afaka mametraka cluster Kafka eo an-tampon'ny Kubernetes miaraka amin'ny baiko roa fotsiny:

$ kubectl kudo install zookeeper
$ kubectl kudo install kafka

Ary amboary izany amin'ny baiko hafa:

$ kubectl kudo install kafka --instance=my-kafka-name 
            -p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181 
            -p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m 
            -p BROKER_COUNT=5 -p BROKER_MEM=4096m 
            -p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3 
            -p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20

fanavaozana

Tao anatin'ny taona vitsivitsy izay, nivoaka isaky ny volana vitsivitsy ny famoahana lehibe Kubernetes - izany hoe, famoahana lehibe telo na efatra isan-taona. Tsy mihena ny isan'ny endri-javatra vaovao nampidirina ao amin'ny tsirairay amin'izy ireo. Ambonin’izany, tsy hita soritra ny hihena na dia amin’izao fotoan-tsarotra izao aza – jereo ny zava-misy ankehitriny Hetsika tetikasa Kubernetes ao amin'ny Github.

Ny fahaiza-manao vaovao dia mamela anao hanamora kokoa ny asa cluster amin'ny enta-mavesatra isan-karazany. Fanampin'izany, ny programmer dia manana fifehezana bebe kokoa rehefa mametraka fampiharana mivantana amin'ny famokarana.

Community

Ny lafiny lehibe iray hafa amin'ny lazan'i Kubernetes dia ny tanjaky ny fiarahamoniny. Tamin'ny 2015, rehefa nahatratra ny kinova 1.0, ny Kubernetes dia notohanan'ny Cloud Computing Foundation.

Misy ihany koa ny vondrom-piarahamonina samihafa Sig (Vondrona mahaliana manokana) nifantoka tamin'ny fiasana amin'ny faritra samihafa ao amin'ny Kubernetes rehefa mivoatra ny tetikasa. Ireo vondrona ireo dia manampy endri-javatra vaovao tsy tapaka, mahatonga ny fiaraha-miasa amin'ny Kubernetes ho mora sy mora kokoa.

Ny Cloud Native Foundation ihany koa dia mampiantrano CloudNativeCon/KubeCon, izay, amin'ny fotoana anoratana, no fihaonambe misokatra malalaka indrindra eran-tany. Atao in-telo isan-taona izy io matetika, mampivondrona matihanina an'arivony maniry hanatsara ny Kubernetes sy ny tontolo iainany, ary koa mianatra endri-javatra vaovao miseho isaky ny telo volana.

Ankoatr'izay, ny Cloud Native Foundation dia manana Komitin'ny Fanaraha-maso ara-teknika, izay, miaraka amin'ny SIG, mamerina mijery vaovao sy efa misy tetikasa vola mifantoka amin'ny tontolo iainana rahona. Ny ankamaroan'ireo tetikasa ireo dia manampy amin'ny fanatsarana ny tanjaky ny Kubernetes.

Farany, mino aho fa tsy hahomby tahaka ny misy ny Kubernetes raha tsy misy ny ezaka am-pahatsorana ataon'ny vondrom-piarahamonina iray manontolo, izay iraisan'ny olona fa miaraka amin'izay koa dia mandray ireo vao tonga ao anaty vala.

Future

Ny iray amin'ireo fanamby lehibe tsy maintsy atrehin'ny mpamorona amin'ny ho avy dia ny fahafahana mifantoka amin'ny antsipirihan'ny fehezan-dalàna, fa tsy amin'ny fotodrafitrasa izay iasany. Mifanaraka amin'ireo fironana ireo izany paradigma maritrano tsy misy mpizara, izay iray amin'ireo mpitarika ankehitriny. Efa misy ny rafitra mandroso, oh. knative и OpenFaas, izay mampiasa Kubernetes hanala ny fotodrafitrasa avy amin'ny mpamorona.

Ato amin'ity lahatsoratra ity, dia nosokajintsika fotsiny ny endriky ny fanjakan'i Kubernetes amin'izao fotoana izao — raha ny marina, dia ny tendron'ny vongan-dranomandry fotsiny izany. Ny mpampiasa Kubernetes dia manana loharanon-karena, fahaiza-manao, ary fanamboarana maro hafa azony ampiasaina.

Source: www.habr.com

Add a comment