Torolàlana hita maso amin'ny famahana olana Kubernetes

Fanamarihana. transl.: Ity lahatsoratra ity dia ampahany amin'ny fitaovana tetikasa navoaka ho an'ny daholobe learnk8s, manofana orinasa sy mpitantana tsirairay hiara-hiasa amin'ny Kubernetes. Ao anatin'izany, i Daniele Polencic, mpitantana ny tetikasa, dia mizara torolalana hita maso momba ny dingana tokony hatao raha misy olana amin'ny ankapobeny amin'ny fampiharana mandeha amin'ny cluster K8s.

Torolàlana hita maso amin'ny famahana olana Kubernetes

TL; DR: ity misy kisary hanampy anao amin'ny fametrahana debug ao amin'ny Kubernetes:

Torolàlana hita maso amin'ny famahana olana Kubernetes

Flowchart amin'ny fitadiavana sy famahana ny lesoka ao anaty cluster. Ny original (amin'ny teny anglisy) dia hita ao amin'ny PDF и toy ny sary.

Rehefa mametraka fampiharana amin'ny Kubernetes dia misy singa telo tokony hofaritana matetika:

  • fanapariahana - karazana fomba fanaovana dika mitovy amin'ny fampiharana iray, antsoina hoe pods;
  • Service - mpifandanja entana anatiny izay mizara ny fifamoivoizana amin'ny pods;
  • Ingress - famaritana ny fomba hahatongavan'ny fifamoivoizana avy any ivelany mankany amin'ny serivisy.

Ity misy famintinana ara-tsary haingana:

1) Ao amin'ny Kubernetes, ny fampiharana dia mahazo fifamoivoizana avy any ivelany amin'ny alàlan'ny fifandanjana entana roa sosona: anatiny sy ivelany.

Torolàlana hita maso amin'ny famahana olana Kubernetes

2) Ny mpifandanja anatiny dia antsoina hoe Service, ny ivelany dia antsoina hoe Ingress.

Torolàlana hita maso amin'ny famahana olana Kubernetes

3) Ny fametrahana dia mamorona pods ary manara-maso azy ireo (tsy natao tanana izy ireo).

Torolàlana hita maso amin'ny famahana olana Kubernetes

Aleo atao hoe te-hametraka fampiharana tsotra a la ianao Bonjour Monde. Ny fandrindrana YAML ho azy dia ho toy izao:

apiVersion: apps/v1
kind: Deployment # <<<
metadata:
  name: my-deployment
  labels:
    track: canary
spec:
  selector:
    matchLabels:
      any-name: my-app
  template:
    metadata:
      labels:
        any-name: my-app
    spec:
      containers:
      - name: cont1
        image: learnk8s/app:1.0.0
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service # <<<
metadata:
  name: my-service
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    name: app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress # <<<
metadata:
  name: my-ingress
spec:
  rules:
  - http:
    paths:
    - backend:
        serviceName: app
        servicePort: 80
      path: /

Ny famaritana dia somary lava ary mora ny sahiran-tsaina momba ny fifandraisan'ny singa tsirairay.

Ohatra:

  • Rahoviana ianao no tokony hampiasa port 80 ary rahoviana ianao no tokony hampiasa 8080?
  • Tokony hamorona seranan-tsambo vaovao ho an'ny serivisy tsirairay ve aho mba tsy hifandona?
  • Zava-dehibe ve ny anarana etikety? Tokony hitovy ve izy ireo na aiza na aiza?

Alohan'ny hifantohana amin'ny debugging, andeha hotadidintsika ny fifandraisan'ireo singa telo ireo. Andeha isika hanomboka amin'ny Deployment sy Service.

Fifandraisana eo amin'ny fandefasana sy serivisy

Ho gaga ianao, saingy tsy mifandray amin'ny fomba rehetra ny Deployments and Services. Raha ny tokony ho izy, dia manondro mivantana amin'ny Pods ny serivisy, miala amin'ny Deployment.

Noho izany, mahaliana anay ny fomba ifandraisan'ny Pods sy Services. Zavatra telo tokony hotsaroana:

  1. Selector (selector) ho an'ny Serivisy dia tsy maintsy mifanaraka amin'ny mari-pamantarana Pod iray farafahakeliny.
  2. targetPort tsy maintsy mifanandrify containerPort fitoeran-javatra ao anaty Pod.
  3. port Service dia mety ho na inona na inona. Ny serivisy samihafa dia afaka mampiasa seranana iray ihany satria manana adiresy IP samihafa izy ireo.

Следующая схема представляет все вышеперечисленное в графической форме:

1) Alaivo sary an-tsaina fa ny serivisy dia mitarika fifamoivoizana mankany amin'ny pod iray:

Torolàlana hita maso amin'ny famahana olana Kubernetes

2) Rehefa mamorona pod ianao dia tsy maintsy mamaritra containerPort ho an'ny container tsirairay ao anaty pods:

Torolàlana hita maso amin'ny famahana olana Kubernetes

3) Rehefa mamorona serivisy ianao dia tsy maintsy mamaritra port и targetPort. Fa iza no ampiasaina hifandraisana amin'ny kaontenera?

Torolàlana hita maso amin'ny famahana olana Kubernetes

4) Via targetPort. Tsy maintsy mifanaraka containerPort.

Torolàlana hita maso amin'ny famahana olana Kubernetes

5) Aleo atao hoe port 3000 no misokatra ao anaty container. Avy eo ny sandany targetPort tokony ho mitovy.

Torolàlana hita maso amin'ny famahana olana Kubernetes

Ao amin'ny rakitra YAML, etikety sy ports / targetPort tsy maintsy mifanandrify:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  labels:
    track: canary
spec:
  selector:
    matchLabels:
      any-name: my-app
  template:
    metadata:
     labels:  # <<<
        any-name: my-app  # <<<
   spec:
      containers:
      - name: cont1
        image: learnk8s/app:1.0.0
        ports:
       - containerPort: 8080  # <<<
---
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
  - port: 80
   targetPort: 8080  # <<<
 selector:  # <<<
    any-name: my-app  # <<<

Ahoana ny momba ny etikety track: canary eo an-tampon'ny fizarana Deployment? Tokony hifanaraka ve izany?

Ity mari-pamantarana ity dia manokana amin'ny fametrahana ary tsy ampiasain'ny serivisy hanodina ny fifamoivoizana. Amin'ny teny hafa dia azo esorina na omena sanda hafa izany.

Ahoana ny amin'ny mpifidy matchLabels?

Tsy maintsy mifanandrify hatrany amin'ny etik'i Pod izany, satria ampiasain'ny Deployment hanaraha-maso pods.

Aoka hatao hoe nanao fanitsiana marina ianao. Ahoana no hanamarinana azy ireo?

Azonao atao ny manamarina ny etikety pod miaraka amin'ity baiko manaraka ity:

kubectl get pods --show-labels

Na, raha an'ny fampiharana maromaro ny pods:

kubectl get pods --selector any-name=my-app --show-labels

izay any-name=my-app dia etikety any-name: my-app.

Mbola misy olana ve?

Afaka mifandray amin'ny pod ianao! Mba hanaovana izany dia mila mampiasa ny baiko ianao port-forward amin'ny kubectl. Izany dia ahafahanao mifandray amin'ny serivisy ary manamarina ny fifandraisana.

kubectl port-forward service/<service name> 3000:80

eto:

  • service/<service name> - anaran'ny serivisy; amin'ny antsika izany my-service;
  • 3000 no seranan-tsambo mila sokafana amin'ny solosaina;
  • 80 - seranan-tsambo voalaza ao amin'ny saha port fanompoana.

Raha toa ka napetraka ny fifandraisana, dia marina ny toe-javatra.

Raha tsy mahomby ny fifandraisana dia misy olana amin'ny labels na tsy mifanaraka ny seranana.

Fifandraisana eo amin'ny serivisy sy ny Ingress

Ny dingana manaraka amin'ny fanomezana fidirana amin'ny fampiharana dia mifandraika amin'ny fametrahana Ingress. Mila mahafantatra ny fomba fitadiavana serivisy i Ingress, avy eo mitady pods ary mivantana ny fifamoivoizana mankany aminy. Ingress dia mahita ny serivisy ilaina amin'ny anarana sy ny seranana misokatra.

Ao amin'ny famaritana ny Ingress sy ny serivisy dia tsy maintsy mifanandrify ny masontsivana roa:

  1. servicePort ao amin'ny Ingress dia tsy maintsy mifanaraka amin'ny parameter port amin'ny fanompoana;
  2. serviceName ao amin'ny Ingress dia tsy maintsy mifanaraka amin'ny saha name amin'ny serivisy.

Ity diagram manaraka ity dia mamintina ny fifandraisana amin'ny seranana:

1) Araka ny efa fantatrao, Service dia mihaino ny sasany port:

Torolàlana hita maso amin'ny famahana olana Kubernetes

2) Ny Ingress dia manana paramètre antsoina hoe servicePort:

Torolàlana hita maso amin'ny famahana olana Kubernetes

3) Ity parameter ity (servicePort) dia tsy maintsy mifanaraka foana port amin'ny famaritana serivisy:

Torolàlana hita maso amin'ny famahana olana Kubernetes

4) Raha voalaza ao amin'ny Service ny port 80, dia ilaina izany servicePort mitovy amin'ny 80 ihany koa:

Torolàlana hita maso amin'ny famahana olana Kubernetes

Amin'ny fampiharana dia mila mitandrina ireto andalana manaraka ireto ianao:

apiVersion: v1
kind: Service
metadata:
 name: my-service  # <<<
spec:
  ports:
 - port: 80  # <<<
   targetPort: 8080
  selector:
    any-name: my-app
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - http:
    paths:
    - backend:
       serviceName: my-service  # <<<
       servicePort: 80  # <<<
     path: /

Ahoana no hijerena raha mandeha ny Ingress?

Azonao atao ny mampiasa ny fomba kubectl port-forward, fa raha tokony ho ny serivisy dia mila mifandray amin'ny mpanara-maso Ingress ianao.

Voalohany dia mila mitady ny anaran'ny pod miaraka amin'ny Ingress controller ianao:

kubectl get pods --all-namespaces
NAMESPACE   NAME                              READY STATUS
kube-system coredns-5644d7b6d9-jn7cq          1/1   Running
kube-system etcd-minikube                     1/1   Running
kube-system kube-apiserver-minikube           1/1   Running
kube-system kube-controller-manager-minikube  1/1   Running
kube-system kube-proxy-zvf2h                  1/1   Running
kube-system kube-scheduler-minikube           1/1   Running
kube-system nginx-ingress-controller-6fc5bcc  1/1   Running

Tadiavo ny pod Ingress (mety ho any amin'ny toeran'ny anarana hafa izany) ary tanteraho ny baiko describemba hahitana ny laharana seranana:

kubectl describe pod nginx-ingress-controller-6fc5bcc 
--namespace kube-system 
 | grep Ports
Ports:         80/TCP, 443/TCP, 18080/TCP

Farany, mifandray amin'ny pod:

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system

Isaky ny mandefa fangatahana amin'ny port 3000 amin'ny solosainao ianao dia halefa any amin'ny port 80 amin'ny pod miaraka amin'ny mpanara-maso Ingress. Amin'ny fandehanana any http://localhost:3000, tokony ho hitanao ny pejy novokarin'ny fampiharana.

Famintinana ny seranan-tsambo

Ndeha hotadidintsika indray hoe iza amin'ireo seranana sy etikety tsy maintsy mifanandrify:

  1. Tsy maintsy mifanandrify amin'ny etik'ilay pod ny mpifidy amin'ny famaritana Serivisy;
  2. targetPort ao amin'ny famaritana Service dia tsy maintsy mifanaraka containerPort fitoeran-javatra ao anaty vilany;
  3. port amin'ny famaritana Service dia mety ho na inona na inona. Afaka mampiasa seranan-tsambo iray ihany ny serivisy samihafa satria samy manana ny adiresy IP izy ireo;
  4. servicePort Tsy maintsy mifanaraka ny ingress port amin'ny famaritana ny serivisy;
  5. Ny anaran'ny serivisy dia tsy maintsy mifanaraka amin'ny saha serviceName ao amin'ny Ingress.

Mampalahelo fa tsy ampy ny mahafantatra ny fomba handrafetana tsara ny YAML configuration.

Inona no mitranga rehefa misy zavatra tsy mety?

Mety tsy manomboka ny pod na mety hianjera.

Dingana 3 hamantarana ny olan'ny fampiharana ao amin'ny Kubernetes

Alohan'ny hanombohanao debug ny fametrahanao dia mila mahafantatra tsara ny fomba fiasan'i Kubernetes ianao.

Koa satria ny fampiharana tsirairay alaina ao amin'ny K8s dia manana singa telo, dia tokony hapetraka amin'ny filaharana iray izy ireo, manomboka amin'ny farany ambany.

  1. Voalohany dia mila mahazo antoka ianao fa miasa ny pods, avy eo ...
  2. Jereo raha mamatsy fifamoivoizana amin'ny pods ny serivisy, ary avy eo...
  3. Jereo raha toa ka voarindra tsara ny Ingress.

fanehoana hita maso:

1) Tokony hanomboka hitady olana hatrany amin'ny farany ambany ianao. Hamarino aloha fa misy sata ny pods Ready и Running:

Torolàlana hita maso amin'ny famahana olana Kubernetes

2) Raha vonona ny pods (Ready), tokony ho fantatrao raha mizara fifamoivoizana eo anelanelan'ny pods ny serivisy:

Torolàlana hita maso amin'ny famahana olana Kubernetes

3) Farany, mila mandinika ny fifandraisana misy eo amin'ny serivisy sy ny Ingress ianao:

Torolàlana hita maso amin'ny famahana olana Kubernetes

1. Diagnostika ny pods

Amin'ny ankamaroan'ny toe-javatra, ny olana dia mifandray amin'ny pod. Ataovy azo antoka fa voatanisa ho toy ny ny pods Ready и Running. Azonao atao ny manamarina izany amin'ny alàlan'ny baiko:

kubectl get pods
NAME                    READY STATUS            RESTARTS  AGE
app1                    0/1   ImagePullBackOff  0         47h
app2                    0/1   Error             0         47h
app3-76f9fcd46b-xbv4k   1/1   Running           1         47h

Ao amin'ny famoahana baiko etsy ambony, ny pod farany dia voatanisa ho Running и Ready, na izany aza, tsy izany no mitranga amin'ireo roa hafa.

Ahoana no ahafantarana izay tsy nety?

Misy baiko efatra ilaina amin'ny fizahana ny pods:

  1. kubectl logs <имя pod'а> mamela anao haka hazo avy amin'ny kaontenera ao anaty pod;
  2. kubectl describe pod <имя pod'а> mamela anao hijery ny lisitry ny hetsika mifandray amin'ny pod;
  3. kubectl get pod <имя pod'а> mamela anao hahazo ny YAML configuration amin'ny pod voatahiry ao amin'ny Kubernetes;
  4. kubectl exec -ti <имя pod'а> bash ahafahanao manangana akorandriaka baiko mifampiresaka amin'ny iray amin'ireo kaontenera pod

Iza no tokony hofidinao?

Ny zava-misy dia tsy misy baiko iraisam-pirenena. Ny fitambaran'ireo dia tokony hampiasaina.

Olana mahazatra pod

Misy karazany roa ny lesoka pod: lesoka fanombohana sy lesoka amin'ny fotoana fandehanana.

Fahadisoana fanombohana:

  • ImagePullBackoff
  • ImageInspectError
  • ErrImagePull
  • ErrImageNeverPull
  • RegistryUnavailable
  • InvalidImageName

Error amin'ny fotoana fandehanana:

  • CrashLoopBackOff
  • RunContainerError
  • KillContainerError
  • VerifyNonRootError
  • RunInitContainerError
  • CreatePodSandboxError
  • ConfigPodSandboxError
  • KillPodSandboxError
  • SetupNetworkError
  • TeardownNetworkError

Ny fahadisoana sasany dia mahazatra kokoa noho ny hafa. Ireto ny sasany amin'ireo fahadisoana mahazatra indrindra sy ny fomba hamahana azy ireo.

ImagePullBackOff

Mipoitra ity hadisoana ity rehefa tsy afaka mahazo sary ho an'ny iray amin'ireo fitoeran'ny pod i Kubernetes. Ireto misy antony telo mahazatra indrindra mahatonga izany:

  1. Ny anaran'ny sary dia diso - ohatra, nanao fahadisoana ianao, na tsy misy ilay sary;
  2. Misy marika tsy misy nofaritana ho an'ny sary;
  3. Ny sary dia voatahiry ao amin'ny rejisitra manokana ary tsy manana alalana hidirana azy i Kubernetes.

Ny antony roa voalohany dia mora esorina - ahitsio fotsiny ny anaran'ny sary sy ny marika. Amin'ny tranga farany, mila mampiditra ny fahazoan-dàlana ho an'ny rejisitra mihidy ao amin'ny Secret ianao ary ampio rohy ao anaty pods. Ao amin'ny antontan-taratasy Kubernetes misy ohatra ahoana no hanaovana izany.

Crash Loop Mihemotra

Kubenetes manipy fahadisoana CrashLoopBackOff, raha tsy afaka manomboka ny fitoeran-javatra. Matetika no mitranga izany rehefa:

  1. Misy bibikely ao amin'ny fampiharana izay manakana azy tsy hivoaka;
  2. fitoeran-javatra diso ny fanamboarana;
  3. Tsy nahomby imbetsaka ny fitsapana Liveness.

Tsy maintsy miezaka mankany amin'ny hazo avy amin'ny kaontenera ianao mba hahitana ny anton'ny tsy fahombiazany. Raha sarotra ny miditra amin'ny logs satria manomboka haingana loatra ny container dia azonao ampiasaina ity baiko manaraka ity:

kubectl logs <pod-name> --previous

Mampiseho hafatra diso avy amin'ny fahatongavan'ny fitoeran-javatra teo aloha izy io.

RunContainerError

Mitranga io hadisoana io rehefa tsy manomboka ny fitoeran-javatra. Mifanaraka amin'ny fotoana alohan'ny hanombohan'ny fampiharana izany. Matetika noho ny fanefana diso, ohatra:

  • manandrana mametraka boky tsy misy toy ny ConfigMap na Secrets;
  • Andramo ny mametraka boky vakiana fotsiny ho vakiana-manoratra.

Ny ekipa dia mety tsara amin'ny famakafakana ny fahadisoana toy izany kubectl describe pod <pod-name>.

Ao amin'ny fanjakana miandry ny pods

Rehefa noforonina dia mijanona ao amin'ny fanjakana ny pod Pending.

Nahoana no mitranga izany?

Ireto ny antony mety hitranga (heveriko fa mandeha tsara ny fandaharam-potoana):

  1. Ny cluster dia tsy manana loharano ampy, toy ny hery fanodinana sy fitadidiana, hampandehanana ny pod.
  2. Ny zavatra dia napetraka ao amin'ny namespace mety ResourceQuota ary ny famoronana pod dia hahatonga ny namespace hihoatra ny quota.
  3. Pod dia mifamatotra amin'ny miandry PersistentVolumeClaim.

Amin'ity tranga ity, dia soso-kevitra ny hampiasa ny baiko kubectl describe ary jereo ny fizarana Events:

kubectl describe pod <pod name>

Raha misy hadisoana mifandraika amin'ny ResourceQuotas, soso-kevitra ny hijery ny logs cluster mampiasa ny baiko

kubectl get events --sort-by=.metadata.creationTimestamp

Pods dia tsy vonona

Raha voatanisa ny pod Running, fa tsy ao anaty fanjakana Ready, midika hoe manamarina ny fahavononany (fanadihadiana fahavononana) tsy mahomby.

Rehefa mitranga izany dia tsy mifandray amin'ny serivisy ny pod ary tsy misy fifamoivoizana mankany aminy. Ny tsy fahombiazan'ny fitsapana fahavononana dia vokatry ny olana amin'ny fampiharana. Amin'ity tranga ity, mba hahitana ny fahadisoana, dia mila mandinika ny fizarana Events amin'ny famoahana baiko kubectl describe.

2. Service diagnostics

Если pod’ы значатся как Running и Ready, fa mbola tsy misy valiny avy amin'ny fampiharana, tokony hojerenao ny firafitry ny serivisy.

Ny serivisy dia tompon'andraikitra amin'ny fampandehanana ny fifamoivoizana mankany amin'ny pods arakaraka ny etik'izy ireo. Noho izany, ny zavatra voalohany tokony hataonao dia ny manamarina hoe firy ny pods miasa amin'ny serivisy. Mba hanaovana izany, azonao atao ny manamarina ireo teboka farany amin'ny serivisy:

kubectl describe service <service-name> | grep Endpoints

Endpoint dia sanda roa amin'ny endrika <IP-адрес:порт>, ary fara-faharatsiny dia tsy maintsy misy mpivady toy izany ao amin'ny vokatra (izany hoe, farafaharatsiny iray pod no miasa amin'ny serivisy).

Raha fizarana Endpoins banga, safidy roa no azo atao:

  1. tsy misy pods miaraka amin'ny etikety marina (soso-kevitra: jereo raha voafantina tsara ny namespace);
  2. Misy lesoka ao amin'ny etikety serivisy ao amin'ny mpifidy.

Raha mahita lisitr'ireo teboka ianao nefa mbola tsy afaka miditra amin'ny fampiharana, dia ny bibikely ao amin'ny targetPort ao amin'ny famaritana serivisy.

Ahoana ny fijerena ny fiasan'ny serivisy?

Na inona na inona karazana serivisy dia azonao ampiasaina ny baiko kubectl port-forward hifandray aminy:

kubectl port-forward service/<service-name> 3000:80

eto:

  • <service-name> - anaran'ny serivisy;
  • 3000 no seranana sokafanao amin'ny solosaina;
  • 80 - seranan-tsambo eo amin'ny lafiny serivisy.

3. Diagnostika ingress

Raha efa namaky hatramin'izao ianao dia:

  • pods dia voatanisa ho Running и Ready;
  • ny serivisy dia mizara tsara ny fifamoivoizana amin'ny pods.

Na izany aza, mbola tsy afaka mankany amin'ny fampiharana ianao.

Midika izany fa ny mpanara-maso Ingress dia mety tsy voarindra tsara. Satria ny Ingress controller dia singa fahatelo ao amin'ny cluster, dia misy fomba debugging samihafa arakaraka ny karazana azy.

Saingy alohan'ny hampiasanao fitaovana manokana hanamboarana ny Ingress dia afaka manao zavatra tena tsotra ianao. Mampiasa ny ingress serviceName и servicePort hifandray amin'ny serivisy. Mila manamarina ianao raha toa ka voarindra tsara izy ireo. Azonao atao izany amin'ny alàlan'ny baiko:

kubectl describe ingress <ingress-name>

Raha tsanganana Backend banga, be dia be ny mety hisian'ny fahadisoana config. Raha toa ka eo amin'ny toerany ny backends, saingy mbola tsy azo idirana ny fampiharana, dia mety ho mifandray amin'ny:

  • Ampidiro ny firafitry ny fidirana amin'ny Internet ho an'ny daholobe;
  • firafitry ny fidirana amin'ny cluster avy amin'ny Internet ho an'ny daholobe.

Azonao atao ny mamantatra ny olana amin'ny fotodrafitrasa amin'ny fifandraisana mivantana amin'ny pod Ingress. Mba hanaovana izany, tadiavo aloha ny pod Ingress Controller (mety ho any amin'ny sehatra hafa izy io):

kubectl get pods --all-namespaces
NAMESPACE   NAME                              READY STATUS
kube-system coredns-5644d7b6d9-jn7cq          1/1   Running
kube-system etcd-minikube                     1/1   Running
kube-system kube-apiserver-minikube           1/1   Running
kube-system kube-controller-manager-minikube  1/1   Running
kube-system kube-proxy-zvf2h                  1/1   Running
kube-system kube-scheduler-minikube           1/1   Running
kube-system nginx-ingress-controller-6fc5bcc  1/1   Running

Ampiasao ny baiko describehametraka ny seranan-tsambo:

kubectl describe pod nginx-ingress-controller-6fc5bcc
--namespace kube-system 
 | grep Ports

Farany, mifandray amin'ny pod:

kubectl port-forward nginx-ingress-controller-6fc5bcc 3000:80 --namespace kube-system

Ankehitriny ny fangatahana rehetra amin'ny seranan-tsambo 3000 amin'ny solosaina dia halefa any amin'ny seranan-tsambo 80 amin'ny pod.

Mandeha ve izao?

  • Raha eny, ny fotodrafitrasa no olana. Ilaina ny mahafantatra tsara ny fomba fandehanan'ny fifamoivoizana mankany amin'ny cluster.
  • Raha tsy izany, ny olana dia ny Ingress controller.

Raha tsy azonao atao ny miasa amin'ny fanaraha-maso Ingress dia tsy maintsy amboarinao izany.

Misy karazany maro ny Ingress controllers. Ny malaza indrindra dia Nginx, HAProxy, Traefik, sns. (raha mila fanazavana fanampiny momba ny vahaolana efa misy, jereo ny fanadihadihana - eo ho eo. transl.) Tokony hijery ny torolalana famahana olana ianao ao amin'ny antontan-taratasy fanaraha-maso mifandraika amin'izany. Satria ny Ingress Nginx no mpandrindra Ingress malaza indrindra, nampidirinay tao amin'ny lahatsoratra ny toro-hevitra sasany hamahana ny olana mifandraika amin'izany.

Debugging ny Ingress Nginx controller

Ny tetikasa Ingress-nginx dia manana ofisialy plugin ho an'ny kubectl. Ekipa kubectl ingress-nginx dia azo ampiasaina amin'ny:

  • famakafakana ny logs, backends, certificates, sns.;
  • fifandraisana amin'ny Ingress;
  • mianatra ny configuration ankehitriny.

Ireto baiko telo manaraka ireto dia hanampy anao amin'izany:

  • kubectl ingress-nginx lint - seky nginx.conf;
  • kubectl ingress-nginx backend - mandinika ny backend (mitovy amin'ny kubectl describe ingress <ingress-name>);
  • kubectl ingress-nginx logs - manamarina ny logs.

Mariho fa amin'ny toe-javatra sasany dia mety ilainao ny mamaritra ny anaran'ny anaran'ny mpandrindra Ingress amin'ny fampiasana ny saina --namespace <name>.

famintinana

Ny famahana olana dia mety ho sarotra ny Kubernetes raha tsy fantatrao hoe aiza no hanombohana. Tokony hanatona ny olana amin'ny fomba ambany ianao: manomboka amin'ny pods, ary avy eo miroso amin'ny serivisy sy Ingress. Ny teknikan'ny debugging voalaza ato amin'ity lahatsoratra ity dia azo ampiharina amin'ny zavatra hafa, toy ny:

  • Asa tsy miasa sy CronJobs;
  • StatefulSets sy DaemonSets.

Maneho fankasitrahana aho Gergely Risko, Daniel Weibel и Charles Christyraj ho an'ny fanehoan-kevitra sarobidy sy fanampiny.

PS avy amin'ny mpandika teny

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment