Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

Thoir an aire. eadar-theangachadh.: Tha an artaigil seo mar phàirt de stuthan pròiseict a chaidh fhoillseachadh san raon phoblach ionnsachadh 8s, companaidhean trèanaidh agus luchd-rianachd fa leth gus obrachadh le Kubernetes. Ann, tha Daniele Polencic, manaidsear pròiseict, a’ roinn stiùireadh lèirsinneach air dè na ceumannan a bu chòir a ghabhail gun fhios nach bi duilgheadasan coitcheann ann le tagraidhean a tha a’ ruith air cruinneachadh K8s.

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

TL; DR: seo diagram a chuidicheas tu ann an cleachdadh deasbaid ann an Kubernetes:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

Clàr sruthadh airson mearachdan a lorg agus a cheartachadh ann am brabhsair. Tha an dreach tùsail (sa Bheurla) ri fhaighinn aig PDF и mar dealbh.

Nuair a bhios tu a’ cleachdadh tagradh gu Kubernetes, mar as trice tha trì pàirtean ann a dh’ fheumas tu a mhìneachadh:

  • Cleachdadh - is e seo seòrsa de reasabaidh airson lethbhric den tagradh a chruthachadh, ris an canar pods;
  • seirbheis - cothromachadh luchdan a-staigh a bhios a’ cuairteachadh trafaic am measg pods;
  • Ingress - tuairisgeul air mar a gheibh trafaic bhon t-saoghal a-muigh chun t-Seirbheis.

Seo geàrr-chunntas grafaigeach sgiobalta:

1) Ann an Kubernetes, bidh tagraidhean a’ faighinn trafaic bhon t-saoghal a-muigh tro dhà shreath de chothromachadh luchdan: a-staigh agus a-muigh.

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

2) Canar Seirbheis ris an neach-cothromachaidh a-staigh, is e Ingress a chanar ris an fhear a-muigh.

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

3) Bidh cleachdadh a 'cruthachadh pods agus a' cumail sùil orra (chan eil iad air an cruthachadh le làimh).

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

Canaidh sinn gu bheil thu airson tagradh sìmplidh a chleachdadh a la Hàlo a Shaoghail. Bidh an rèiteachadh YAML air a shon a’ coimhead mar seo:

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: /

Tha am mìneachadh gu math fada agus tha e furasta a bhith troimh-chèile mu mar a tha na pàirtean co-cheangailte ri chèile.

Mar eisimpleir:

  • Cuin a bu chòir dhut port 80 a chleachdadh agus cuin a bu chòir dhut 8080 a chleachdadh?
  • Am bu chòir dhomh port ùr a chruthachadh airson gach seirbheis gus nach bi iad a’ strì?
  • A bheil ainmean leubail cudromach? Am bu chòir dhaibh a bhith mar an ceudna anns gach àite?

Mus cuir sinn fòcas air debugging, cuimhnicheamaid mar a tha na trì pàirtean co-cheangailte ri chèile. Feuch an tòisich sinn le Cleachdadh agus Seirbheis.

An dàimh eadar cleachdadh agus seirbheis

Bidh iongnadh ort, ach chan eil ceangal eadar Cleachdadh is Seirbheis ann an dòigh sam bith. An àite sin, bidh Seirbheis a’ comharrachadh gu dìreach gu Pods, a’ dol seachad air cleachdadh.

Mar sin, tha ùidh againn ann an mar a tha Pods agus Seirbheisean ceangailte ri chèile. Trì rudan ri chuimhneachadh:

  1. tagraiche (selector) airson seirbheis feumaidh co-dhiù aon leubail Pod a bhith ann.
  2. targetPort feumaidh a bhith co-ionnan containerPort soitheach taobh a-staigh a 'phod.
  3. port Faodaidh seirbheis a bhith mar rud sam bith. Faodaidh diofar sheirbheisean an aon phort a chleachdadh leis gu bheil seòlaidhean IP eadar-dhealaichte aca.

Tha an diagram a leanas a’ riochdachadh a h-uile rud gu h-àrd ann an cruth grafaigeach:

1) Smaoinich gu bheil an t-seirbheis a’ stiùireadh trafaic gu pod sònraichte:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

2) Nuair a bhios tu a 'cruthachadh pod, feumaidh tu sònrachadh containerPort airson gach soitheach ann am pods:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

3) Nuair a bhios tu a 'cruthachadh seirbheis, feumaidh tu a shònrachadh port и targetPort. Ach dè am fear a thathas a’ cleachdadh airson ceangal ris a’ ghobhar?

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

4) Tro targetPort. Feumaidh e a bhith co-ionnan containerPort.

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

5) Canaidh sinn gu bheil port 3000 fosgailte anns a’ ghobhar.An uairsin an luach targetPort bu chòir a bhith mar an ceudna.

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

Anns an fhaidhle YAML, tha bileagan agus ports / targetPort feumaidh iad a bhith co-ionnan:

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  # <<<

Dè mu dheidhinn an leubail track: canary aig mullach na roinne Cleachdadh? Am bu chòir dha a bhith co-ionnan?

Tha an leubail seo sònraichte airson cleachdadh agus chan eil e air a chleachdadh leis an t-seirbheis gus trafaic a stiùireadh. Ann am faclan eile, faodar a thoirt air falbh no luach eadar-dhealaichte a thoirt seachad.

Dè mu dheidhinn an tagraiche matchLabels?

Feumaidh e an-còmhnaidh a bhith co-ionnan ri bileagan Pod, leis gu bheil e air a chleachdadh le Deployment gus lorg a chumail air pods.

Gabhaidh sinn ris gun do rinn thu na deasachaidhean ceart. Ciamar a nì thu sgrùdadh orra?

Faodaidh tu sgrùdadh a dhèanamh air an leubail pod leis an àithne a leanas:

kubectl get pods --show-labels

No, ma bhuineas pods do ghrunn thagraidhean:

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

Càite any-name=my-app tha leubail any-name: my-app.

A bheil duilgheadasan sam bith air fhàgail?

Faodaidh tu ceangal a dhèanamh ris a’ phoit! Gus seo a dhèanamh feumaidh tu an àithne a chleachdadh port-forward anns a' chubaid. Leigidh e leat ceangal ris an t-seirbheis agus sùil a thoirt air a’ cheangal.

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

An seo:

  • service/<service name> - ainm seirbheis; nar cùis tha e my-service;
  • Is e 3000 am port a dh'fheumas a bhith air fhosgladh air a 'choimpiutair;
  • 80 - port air a shònrachadh san raon port seirbhis.

Ma chaidh an ceangal a stèidheachadh, tha na roghainnean ceart.

Ma dh'fhailicheas an ceangal, tha duilgheadas ann leis na leubailean no chan eil na puirt a' freagairt.

Dàimh eadar Seirbheis agus Ingress

Tha an ath cheum ann a bhith a’ toirt cothrom air an tagradh a’ toirt a-steach stèidheachadh Ingress. Feumaidh fios a bhith aig Ingress mar a lorgas iad seirbheis, an uairsin lorg pods agus trafaic a stiùireadh thuca. Lorgaidh Ingress an t-seirbheis a tha a dhìth a rèir ainm agus port fosgailte.

Anns an tuairisgeul air Ingress agus Seirbheis feumaidh dà pharamadair a bhith co-ionnan:

  1. servicePort ann an Ingress feumaidh am paramadair a bhith co-ionnan port ann an Seirbhis;
  2. serviceName ann an Ingress feumaidh a bhith co-ionnan ris an raon name ann an Seirbhis.

Tha an diagram a leanas a’ toirt geàrr-chunntas air na ceanglaichean port:

1) Mar a tha fios agad mu thràth, bidh an t-seirbheis ag èisteachd ri cuid port:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

2) Tha paramadair ris an canar Ingress servicePort:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

3) Tha am paramadair seo (servicePort) feumaidh an-còmhnaidh a bhith co-ionnan port ann am mìneachadh seirbheis:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

4) Ma tha port 80 air a shònrachadh ann an Seirbheis, tha e riatanach sin servicePort Bha e cuideachd co-ionann ri 80:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

Ann an cleachdadh, feumaidh tu aire a thoirt do na loidhnichean a leanas:

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: /

Ciamar a nì thu cinnteach a bheil Ingress a’ ruith?

Faodaidh tu an dòigh-obrach a chleachdadh le kubectl port-forward, ach an àite na seirbheis feumaidh tu ceangal ri rianadair Ingress.

An toiseach feumaidh tu faighinn a-mach ainm a’ phoit leis an rianadair Ingress:

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

Lorg am pod Ingress (is dòcha gu bheil e ann an àite ainm eile) agus ruith an àithne describegus àireamhan puirt a lorg:

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

Mu dheireadh, ceangail ris a 'phoit:

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

A-nis a h-uile uair a chuireas tu iarrtas gu port 3000 air a’ choimpiutair agad, thèid a chuir air adhart gu port 80 den pod leis an rianadair Ingress. Le bhith a’ dol gu http://localhost:3000, bu chòir dhut an duilleag a ghineadh leis an tagradh fhaicinn.

Geàrr-chunntas air puirt

Cuimhnichidh sinn a-rithist dè na puirt agus na bileagan a dh'fheumas a bhith co-ionnan:

  1. Feumaidh an roghnaichear sa mhìneachadh Seirbheis a bhith co-ionnan ri leubail a' pod;
  2. targetPort anns a’ mhìneachadh Feumaidh seirbheis a bhith co-ionnan containerPort soitheach taobh a-staigh pod;
  3. port anns a’ mhìneachadh Faodaidh seirbheis a bhith mar rud sam bith. Faodaidh diofar sheirbheisean an aon phort a chleachdadh leis gu bheil seòlaidhean IP eadar-dhealaichte aca;
  4. servicePort Feumaidh ingress a bhith co-ionnan port anns a 'mhìneachadh air Seirbheis;
  5. Feumaidh ainm na seirbheis a bhith co-ionnan ris an raon serviceName ann an Ingress.

Gu mì-fhortanach, chan eil e gu leòr fios a bhith agad ciamar a nì thu structar ceart air rèiteachadh YAML.

Dè thachras nuair a thèid cùisean ceàrr?

Is dòcha nach tòisich am pod no gun tuislich e.

3 Ceumannan gus Duilgheadasan Iarrtais ann an Kubernetes a dhearbhadh

Mus tòisich thu a’ dì-bhugachadh do chleachdadh, feumaidh tuigse mhath a bhith agad air mar a tha Kubernetes ag obair.

Leis gu bheil trì pàirtean aig gach tagradh a chaidh a luchdachadh sìos ann an K8n, bu chòir dhaibh a bhith air an dì-bhugachadh ann an òrdugh sònraichte, a’ tòiseachadh bhon fhìor bhonn.

  1. An toiseach feumaidh tu dèanamh cinnteach gu bheil na pods ag obair, an uairsin ...
  2. Dèan cinnteach a bheil an t-seirbheis a’ toirt seachad trafaic gu na pods, agus an uairsin...
  3. Dèan cinnteach a bheil Ingress air a rèiteachadh gu ceart.

Riochdachadh lèirsinneach:

1) Bu chòir dhut tòiseachadh a’ coimhead airson duilgheadasan bhon fhìor bhonn. An-toiseach dèan cinnteach gu bheil inbhe aig na pods Ready и Running:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

2) Ma tha na pods deiseil (Ready), bu chòir dhut faighinn a-mach a bheil an t-seirbheis a’ cuairteachadh trafaic eadar pods:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

3) Mu dheireadh, feumaidh tu sgrùdadh a dhèanamh air a’ cheangal eadar an t-seirbheis agus an Ingress:

Stiùireadh Lèirsinneach air Fuasgladh Trioblaidean Kubernetes

1. Diagnostics de pods

Anns a 'mhòr-chuid de chùisean tha an duilgheadas co-cheangailte ris a' bhodhaig. Dèan cinnteach gu bheil na pods air an liostadh mar Ready и Running. Faodaidh tu seo a sgrùdadh leis an àithne:

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

Anns an toradh àithne gu h-àrd, tha am pod mu dheireadh air a liostadh mar Running и Ready, ge-tà, chan eil seo fìor airson an dithis eile.

Ciamar a thuigeas tu dè chaidh ceàrr?

Tha ceithir òrdughan feumail ann airson pods a dhearbhadh:

  1. kubectl logs <имя pod'а> leigeil leat logaichean a thoirt a-mach à soithichean ann am pod;
  2. kubectl describe pod <имя pod'а> a’ leigeil leat liosta de thachartasan co-cheangailte ris a’ pod fhaicinn;
  3. kubectl get pod <имя pod'а> a’ leigeil leat rèiteachadh YAML fhaighinn de phod a tha air a stòradh ann an Kubernetes;
  4. kubectl exec -ti <имя pod'а> bash a’ leigeil leat slige-àithne eadar-ghnìomhach a chuir air bhog ann an aon de na soithichean pod

Dè am fear a bu chòir dhut a thaghadh?

Is e an fhìrinn nach eil àithne uile-choitcheann ann. Bu chòir measgachadh dhiubh sin a chleachdadh.

Duilgheadasan àbhaisteach pod

Tha dà phrìomh sheòrsa de mhearachdan pod ann: mearachdan tòiseachaidh agus mearachdan ùine ruith.

Mearachdan tòiseachaidh:

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

Mearachdan ùine ruith:

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

Tha cuid de mhearachdan nas cumanta na cuid eile. Seo cuid de na mearachdan as cumanta agus mar a chuireas iad ceart iad.

Ìomhaigh tarraing air ais

Bidh a’ mhearachd seo a’ tachairt nuair nach urrainn dha Kubernetes dealbh fhaighinn airson aon de na soithichean pod. Seo na trì adhbharan as cumanta airson seo:

  1. Tha ainm na h-ìomhaigh ceàrr - mar eisimpleir, rinn thu mearachd ann, no chan eil an ìomhaigh ann;
  2. Chaidh taga nach robh ann a shònrachadh airson an deilbh;
  3. Tha an ìomhaigh air a stòradh ann an clàr prìobhaideach agus chan eil cead aig Kubernetes faighinn thuige.

Tha a 'chiad dà adhbhar furasta a chuir às - dìreach ceartaich ainm ìomhaigh agus tag. Ann an cùis an fheadhainn mu dheireadh, feumaidh tu teisteanasan a chuir a-steach airson a ’chlàr dùinte ann an Dìomhaireachd agus cuir ceanglaichean ris ann am pods. Ann an sgrìobhainnean Kubernetes tha eisimpleir ann ciamar a ghabhas seo a dhèanamh.

Crash Loop air ais dheth

Bidh Kubenetes a ’tilgeil mearachd CrashLoopBackOff, mura h-urrainn don t-soitheach tòiseachadh. Mar as trice bidh seo a’ tachairt nuair:

  1. Tha bug san tagradh a chuireas casg air bho bhith ga chuir air bhog;
  2. Container air a rèiteachadh gu ceàrr;
  3. Tha an deuchainn Liveness air fàiligeadh cus thursan.

Feumaidh tu feuchainn ri faighinn gu na logaichean bhon ghobhar gus faighinn a-mach carson a dh’ fhàillig e. Ma tha e duilich faighinn gu na logaichean leis gu bheil an soitheach ag ath-thòiseachadh ro luath, faodaidh tu an òrdugh a leanas a chleachdadh:

kubectl logs <pod-name> --previous

Bidh e a’ taisbeanadh teachdaireachdan mearachd bhon incarnation roimhe den t-soitheach.

Mearachd RunContainer

Bidh a’ mhearachd seo a’ tachairt nuair nach tòisich an soitheach. Tha e a ’freagairt ris a’ mhionaid mus tèid an tagradh a chuir air bhog. Mar as trice tha e air adhbhrachadh le suidheachaidhean ceàrr, mar eisimpleir:

  • a’ feuchainn ri leabhar nach eil idir ann leithid ConfigMap no Secrets a chuir suas;
  • oidhirp air leabhar a leughadh a-mhàin a chuir suas mar leughadh-sgrìobhadh.

Tha an sgioba gu math freagarrach airson mion-sgrùdadh a dhèanamh air mearachdan mar sin kubectl describe pod <pod-name>.

Tha pods ann an staid ri thighinn

Aon uair ‘s gu bheil e air a chruthachadh, bidh am pod fhathast anns an stàit Pending.

Carson a tha seo a 'tachairt?

Seo na h-adhbharan a dh’ fhaodadh a bhith ann (tha mi a’ gabhail ris gu bheil an neach-clàraidh ag obair gu math):

  1. Chan eil goireasan gu leòr aig a’ bhuidheann, leithid cumhachd giollachd agus cuimhne, gus am pod a ruith.
  2. Tha an nì air a stàladh anns an ainm-àite iomchaidh ResourceQuota agus ma chruthaicheas tu pod bheir sin air an ainm-àite a dhol nas fhaide na a’ chuota.
  3. Tha am pod ceangailte ri feitheamh PersistentVolumeClaim.

Anns a 'chùis seo, thathar a' moladh an àithne a chleachdadh kubectl describe agus thoir sùil air an roinn Events:

kubectl describe pod <pod name>

Ann an cùis mhearachdan co-cheangailte ri ResourceQuotas, thathas a’ moladh na logaichean brabhsair fhaicinn a’ cleachdadh an àithne

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

Chan eil pods deiseil

Ma tha am pod air a liostadh mar Running, ach chan eil e ann an staid Ready, a’ ciallachadh a bhith a’ dèanamh cinnteach gu bheil e deiseil (sgrùdadh ullachaidh) fàilligeadh.

Nuair a thachras seo, chan eil am pod a’ ceangal ris an t-seirbheis agus chan eil trafaic a’ sruthadh thuige. Tha fàilligeadh deuchainn ullachaidh air adhbhrachadh le duilgheadasan san tagradh. Anns a 'chùis seo, gus a' mhearachd a lorg, feumaidh tu an earrann a sgrùdadh Events ann an toradh an àithne kubectl describe.

2. Diagnosachd seirbheis

Ma tha pods air an liostadh mar Running и Ready, ach chan eil freagairt sam bith bhon tagradh fhathast, bu chòir dhut sùil a thoirt air na roghainnean seirbheis.

Tha e an urra ri seirbheisean trafaic a stiùireadh gu pods a rèir am bileagan. Mar sin, is e a’ chiad rud a dh’ fheumas tu a dhèanamh dèanamh cinnteach cia mheud pod a tha ag obair leis an t-seirbheis. Gus seo a dhèanamh, faodaidh tu sgrùdadh a dhèanamh air na puingean crìochnachaidh san t-seirbheis:

kubectl describe service <service-name> | grep Endpoints

Tha Endpoint na paidhir luachan den fhoirm <IP-адрес:порт>, agus feumaidh co-dhiù aon phaidhir den leithid a bhith an làthair anns an toradh (is e sin, co-dhiù aon pod ag obair leis an t-seirbheis).

Ma tha earrann Endpoins falamh, tha dà roghainn comasach:

  1. chan eil pods ann leis an leubail cheart (sanas: dèan cinnteach a bheil an t-ainm-àite air a thaghadh ceart);
  2. Tha mearachd anns na bileagan seirbheis anns an roghnaichear.

Ma chì thu liosta de phuingean crìochnachaidh ach nach urrainn dhut faighinn chun tagradh fhathast, is e bug a-steach an neach a tha ciontach targetPort ann an tuairisgeul na seirbheis.

Ciamar a nì thu sgrùdadh air gnìomhachd na seirbheis?

Ge bith dè an seòrsa seirbheis, faodaidh tu an àithne a chleachdadh kubectl port-forward gus ceangal a dhèanamh ris:

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

An seo:

  • <service-name> - ainm seirbheis;
  • 'S e 3000 am port a dh'fhosglas tu air a' choimpiutair;
  • 80 - port air taobh na seirbheis.

3. Ingress diagnosachd

Ma tha thu air leughadh gu ruige seo, an uairsin:

  • tha pods air an liostadh mar Running и Ready;
  • bidh an t-seirbheis gu soirbheachail a’ cuairteachadh trafaic am measg pods.

Ach, chan urrainn dhut fhathast an aplacaid a ruighinn.

Tha seo a’ ciallachadh gu bheil e nas coltaiche nach eil rianadair Ingress air a rèiteachadh gu ceart. Leis gu bheil rianadair Ingress na phàirt treas-phàrtaidh anns a’ bhuidheann, tha diofar dhòighean deasbaid ann a rèir an seòrsa a th’ ann.

Ach mus cleachd thu innealan sònraichte gus Ingress a rèiteachadh, faodaidh tu rudeigin gu math sìmplidh a dhèanamh. Bidh Ingress a’ cleachdadh serviceName и servicePort gus ceangal ris an t-seirbheis. Feumaidh tu dèanamh cinnteach a bheil iad air an rèiteachadh gu ceart. Faodaidh tu seo a dhèanamh leis an àithne:

kubectl describe ingress <ingress-name>

Ma tha colbh Backend falamh, tha coltachd àrd ann gum bi mearachd rèiteachaidh ann. Ma tha na backends nan àite, ach nach eil an tagradh fhathast ruigsinneach, faodaidh an duilgheadas a bhith co-cheangailte ri:

  • Ingress roghainnean ruigsinneachd bhon eadar-lìon poblach;
  • cnuasaich roghainnean ruigsinneachd bhon eadar-lìon poblach.

Faodaidh tu duilgheadasan leis a’ bhun-structair aithneachadh le bhith a’ ceangal gu dìreach ri pod Ingress. Gus seo a dhèanamh, lorg an pod Rianadair Ingress an toiseach (is dòcha gu bheil e ann an àite ainm eile):

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

Cleachd an àithne describegus am port a shuidheachadh:

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

Mu dheireadh, ceangail ris a 'phoit:

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

A-nis thèid a h-uile iarrtas airson port 3000 air a’ choimpiutair ath-stiùireadh gu port 80 den pod.

A bheil e ag obair a-nis?

  • Ma tha, tha an duilgheadas ann leis a’ bhun-structar. Feumar faighinn a-mach dìreach mar a tha trafaic air a stiùireadh chun bhuidheann.
  • Mura h-eil, tha an duilgheadas ann le rianadair Ingress.

Mura h-urrainn dhut rianadair Ingress a thoirt gu obair, feumaidh tu a dhì-bhugachadh.

Tha iomadh seòrsa de riaghladairean Ingress ann. Is e an fheadhainn as mòr-chòrdte Nginx, HAProxy, Traefik, msaa. (airson tuilleadh fiosrachaidh mu na fuasglaidhean a th’ ann mar-thà, faic ar lèirmheas - mu thuairmeas. eadar-theangachadh.) Bu chòir dhut sùil a thoirt air an stiùireadh fuasgladh cheistean anns na sgrìobhainnean rianadair iomchaidh. Air sgàth gu bheil an a-steach Nginx mar an rianadair Ingress as mòr-chòrdte, tha sinn air cuid de mholaidhean a thoirt a-steach san artaigil gus fuasgladh fhaighinn air duilgheadasan co-cheangailte ris.

Dèan dì-bhugachadh air rianadair Ingress Nginx

Tha oifigear aig pròiseact Ingress-nginx Plugin airson kubectl. Sgioba kubectl ingress-nginx faodar a chleachdadh airson:

  • mion-sgrùdadh air logaichean, backends, teisteanasan, msaa;
  • ceanglaichean ri Ingress;
  • a’ sgrùdadh an t-suidheachaidh làithreach.

Cuidichidh na trì òrduighean a leanas thu le seo:

  • kubectl ingress-nginx lint - seicichean nginx.conf;
  • kubectl ingress-nginx backend - a’ sgrùdadh an cùl-fhiosrachaidh (coltach ri kubectl describe ingress <ingress-name>);
  • kubectl ingress-nginx logs - thoir sùil air na clàran.

Thoir an aire gur dòcha gum feum thu ann an cuid de chùisean an t-àite-ainm ceart a shònrachadh airson rianadair Ingress a’ cleachdadh a’ bhratach --namespace <name>.

Geàrr-chunntas

Faodaidh fuasgladh dhuilgheadasan Kubernetes a bhith dùbhlanach mura h-eil fios agad càite an tòisich thu. Bu chòir dhut an-còmhnaidh dèiligeadh ris an duilgheadas bhon bhonn gu h-àrd: tòisich le pods, agus an uairsin gluais air adhart chun t-seirbheis agus Ingress. Faodar na dòighean deasbaid a tha air am mìneachadh san artaigil seo a chuir an sàs ann an nithean eile, leithid:

  • Obraichean leisg agus CronJobs;
  • StatefulSets agus DaemonSets.

Tha mi a’ cur an cèill mo thaing Gergely Risko, Daniel Weibel и Teàrlach Cairistiona airson beachdan luachmhor agus cur-ris.

PS bhon eadar-theangair

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann