Itọsọna wiwo si Laasigbotitusita Kubernetes

Akiyesi. itumọ.: Nkan yii jẹ apakan ti awọn ohun elo akanṣe ti a tẹjade ni agbegbe gbogbo eniyan learnk8s, awọn ile-iṣẹ ikẹkọ ati awọn alakoso kọọkan lati ṣiṣẹ pẹlu Kubernetes. Ninu rẹ, Daniele Polencic, oluṣakoso iṣẹ akanṣe, pin awọn itọnisọna wiwo lori kini awọn igbesẹ lati ṣe ni ọran ti awọn iṣoro gbogbogbo pẹlu awọn ohun elo ti n ṣiṣẹ lori iṣupọ K8s.

Itọsọna wiwo si Laasigbotitusita Kubernetes

TL; DR: eyi ni aworan atọka ti yoo ran ọ lọwọ lati ṣatunṣe imuṣiṣẹ ni Kubernetes:

Itọsọna wiwo si Laasigbotitusita Kubernetes

Aworan sisan fun wiwa ati atunse awọn aṣiṣe ninu iṣupọ kan. Atilẹba (ni ede Gẹẹsi) wa ni PDF и bi aworan.

Nigbati o ba nlo ohun elo kan si Kubernetes, awọn paati mẹta lo wa ti o nilo lati ṣalaye:

  • imuṣiṣẹ - Eyi jẹ iru ohunelo fun ṣiṣẹda awọn ẹda ti ohun elo kan, ti a pe ni awọn adarọ-ese;
  • Service - iwọntunwọnsi fifuye inu ti o pin ijabọ laarin awọn podu;
  • Ingress - apejuwe ti bii ijabọ yoo gba lati ita ita si Iṣẹ naa.

Eyi ni akopọ ayaworan iyara kan:

1) Ni Kubernetes, awọn ohun elo gba ijabọ lati ita ita nipasẹ awọn ipele meji ti awọn iṣiro fifuye: inu ati ita.

Itọsọna wiwo si Laasigbotitusita Kubernetes

2) Oniwọntunwọnsi inu ni a pe ni Iṣẹ, ti ita ni a pe ni Ingress.

Itọsọna wiwo si Laasigbotitusita Kubernetes

3) Imuṣiṣẹ n ṣẹda awọn adarọ-ese ati ṣe abojuto wọn (wọn ko ṣẹda pẹlu ọwọ).

Itọsọna wiwo si Laasigbotitusita Kubernetes

Jẹ ká sọ pé o fẹ lati ran awọn kan awọn ohun elo a la Kaabo World. Iṣeto YAML fun rẹ yoo dabi eyi:

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

Itumọ jẹ pipẹ pupọ ati pe o rọrun lati ni idamu nipa bii awọn paati ṣe ni ibatan si ara wọn.

Fun apere:

  • Nigbawo ni o yẹ ki o lo ibudo 80 ati nigbawo o yẹ ki o lo 8080?
  • Ṣe Mo yẹ ki n ṣẹda ibudo tuntun fun iṣẹ kọọkan ki wọn ko ni ija bi?
  • Ṣe awọn orukọ aami ṣe pataki? Ṣe o yẹ ki wọn jẹ kanna nibi gbogbo?

Ṣaaju ki o to fojusi lori n ṣatunṣe aṣiṣe, jẹ ki a ranti bi awọn paati mẹta ṣe ni ibatan si ara wọn. Jẹ ká bẹrẹ pẹlu imuṣiṣẹ ati Service.

Ibasepo laarin imuṣiṣẹ ati Service

Iwọ yoo jẹ ohun iyanu, ṣugbọn Awọn imuṣiṣẹ ati Awọn iṣẹ ko ni asopọ ni eyikeyi ọna. Dipo, Iṣẹ tọka taara si awọn Pods, nipa gbigbe Iṣiṣẹ.

Nitorinaa, a nifẹ si bii awọn Pods ati Awọn iṣẹ ṣe ni ibatan si ara wọn. Awọn nkan mẹta lati ranti:

  1. Oluyan (selector) fun Iṣẹ gbọdọ baramu o kere ju aami Pod kan.
  2. targetPort gbọdọ baramu containerPort eiyan inu awọn Pod.
  3. port Iṣẹ le jẹ ohunkohun. Awọn iṣẹ oriṣiriṣi le lo ibudo kanna nitori pe wọn ni awọn adiresi IP oriṣiriṣi.

Àwòrán ìsàlẹ̀ yìí dúró fún gbogbo èyí tí ó wà lókè ní fọ́ọ̀mù ayaworan:

1) Fojuinu pe iṣẹ naa ṣe itọsọna ijabọ si adarọ-ese kan:

Itọsọna wiwo si Laasigbotitusita Kubernetes

2) Nigbati o ba ṣẹda podu, o gbọdọ pato containerPort fun apoti kọọkan ninu awọn podu:

Itọsọna wiwo si Laasigbotitusita Kubernetes

3) Nigbati o ba ṣẹda iṣẹ kan, o gbọdọ pato port и targetPort. Ṣugbọn ewo ni a lo lati sopọ si apoti naa?

Itọsọna wiwo si Laasigbotitusita Kubernetes

4) Nipasẹ targetPort. O gbọdọ baramu containerPort.

Itọsọna wiwo si Laasigbotitusita Kubernetes

5) Jẹ ki a sọ pe ibudo 3000 ṣii ni apo eiyan. Lẹhinna iye naa targetPort yẹ ki o jẹ kanna.

Itọsọna wiwo si Laasigbotitusita Kubernetes

Ninu faili YAML, awọn akole ati ports / targetPort gbọdọ baramu:

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

Kini nipa aami naa track: canary ni oke ti apakan Imuṣiṣẹ? Ṣe o yẹ ki o baamu?

Aami yii jẹ imuṣiṣẹ ni pato ati pe iṣẹ ko lo lati ṣe ipa ọna gbigbe. Ni awọn ọrọ miiran, o le yọkuro tabi sọtọ iye ti o yatọ.

Kini nipa yiyan matchLabels?

O gbọdọ nigbagbogbo baramu awọn aami Pod, niwon o ti wa ni lilo nipasẹ Imuṣiṣẹ lati orin pods.

Jẹ ki a ro pe o ṣe awọn atunṣe to tọ. Bawo ni lati ṣayẹwo wọn?

O le ṣayẹwo aami podu pẹlu aṣẹ atẹle:

kubectl get pods --show-labels

Tabi, ti awọn podu ba jẹ ti awọn ohun elo pupọ:

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

Nibo any-name=my-app jẹ aami kan any-name: my-app.

Njẹ awọn iṣoro eyikeyi wa bi?

O le sopọ si podu! Lati ṣe eyi o nilo lati lo aṣẹ naa port-forward ninu kubectl. O faye gba o lati sopọ si iṣẹ naa ki o ṣayẹwo asopọ naa.

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

Nibi:

  • service/<service name> - orukọ iṣẹ; ninu ọran tiwa o jẹ my-service;
  • 3000 ni ibudo ti o nilo lati ṣii lori kọnputa;
  • 80 - ibudo pato ninu awọn aaye port iṣẹ.

Ti asopọ ba ti fi idi rẹ mulẹ, lẹhinna awọn eto jẹ deede.

Ti asopọ ba kuna, iṣoro wa pẹlu awọn aami tabi awọn ibudo ko baramu.

Ibasepo laarin Service ati Ingress

Igbesẹ t’okan ni ipese iraye si ohun elo jẹ ibatan si iṣeto Ingress. Ingress nilo lati mọ bi o ṣe le wa iṣẹ kan, lẹhinna wa awọn adarọ-ese ati taara ijabọ si wọn. Ingress wa iṣẹ ti o nilo nipasẹ orukọ ati ibudo ṣiṣi.

Ninu apejuwe ti Ingress ati Iṣẹ awọn paramita meji gbọdọ baramu:

  1. servicePort ni Ingress gbọdọ baramu paramita port ni Iṣẹ;
  2. serviceName ni Ingress gbọdọ baramu awọn aaye name ni Service.

Aworan atẹle yii ṣe akopọ awọn asopọ ibudo:

1) Bi o ti mọ tẹlẹ, Iṣẹ tẹtisi kan pato port:

Itọsọna wiwo si Laasigbotitusita Kubernetes

2) Ingress ni o ni a paramita ti a npe ni servicePort:

Itọsọna wiwo si Laasigbotitusita Kubernetes

3) paramita yii (servicePort) gbọdọ nigbagbogbo baramu port ninu itumọ Iṣẹ:

Itọsọna wiwo si Laasigbotitusita Kubernetes

4) Ti ibudo 80 ba jẹ pato ninu Iṣẹ, lẹhinna o jẹ dandan pe servicePort tun dọgba si 80:

Itọsọna wiwo si Laasigbotitusita Kubernetes

Ni iṣe, o nilo lati san ifojusi si awọn ila wọnyi:

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

Bawo ni lati ṣayẹwo ti Ingress nṣiṣẹ?

O le lo ọna naa pẹlu kubectl port-forward, ṣugbọn dipo iṣẹ naa o nilo lati sopọ si oluṣakoso Ingress.

Ni akọkọ o nilo lati wa orukọ ti podu pẹlu oludari 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

Wa Ingress pod (o le wa ni aaye orukọ ti o yatọ) ati ṣiṣe aṣẹ naa describelati wa awọn nọmba ibudo:

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

Ni ipari, sopọ si podu naa:

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

Bayi ni gbogbo igba ti o ba fi ibeere ranṣẹ si ibudo 3000 lori kọnputa rẹ, yoo firanṣẹ si ibudo 80 ti podu pẹlu oludari Ingress. Nipa lilọ si http://localhost:3000, o yẹ ki o wo oju-iwe ti ipilẹṣẹ nipasẹ ohun elo naa.

Akopọ ti awọn ibudo

Jẹ ki a ranti lekan si awọn ebute oko oju omi ati awọn aami gbọdọ baramu:

  1. Oluyan ninu asọye Iṣẹ gbọdọ baramu aami podu;
  2. targetPort ni itumo Service gbọdọ baramu containerPort apoti ti o wa ninu apo;
  3. port ni itumo Service le jẹ ohunkohun. Awọn iṣẹ oriṣiriṣi le lo ibudo kanna nitori pe wọn ni awọn adiresi IP oriṣiriṣi;
  4. servicePort Ingress gbọdọ baramu port ni itumọ ti Iṣẹ;
  5. Orukọ iṣẹ gbọdọ baramu aaye naa serviceName ni Ingress.

Laanu, ko to lati mọ bi o ṣe le ṣe eto iṣeto YAML daradara.

Kini yoo ṣẹlẹ nigbati awọn nkan ba lọ aṣiṣe?

Podu le ma bẹrẹ tabi o le jamba.

Awọn igbesẹ 3 lati ṣe iwadii Awọn iṣoro Ohun elo ni Kubernetes

Ṣaaju ki o to bẹrẹ ṣiṣatunṣe imuṣiṣẹ rẹ, o nilo lati ni oye ti o dara bi Kubernetes ṣe n ṣiṣẹ.

Niwọn igba ti ohun elo kọọkan ti o gbasilẹ ni K8s ni awọn paati mẹta, wọn yẹ ki o yokokoro ni aṣẹ kan, bẹrẹ lati isalẹ pupọ.

  1. Ni akọkọ o nilo lati rii daju pe awọn podu n ṣiṣẹ, lẹhinna ...
  2. Ṣayẹwo boya iṣẹ naa n pese ijabọ si awọn adarọ-ese, ati lẹhinna…
  3. Ṣayẹwo boya Ingress ti wa ni tunto ti tọ.

Aṣoju wiwo:

1) O yẹ ki o bẹrẹ wiwa awọn iṣoro lati isalẹ pupọ. Akọkọ ṣayẹwo pe awọn podu ni awọn ipo Ready и Running:

Itọsọna wiwo si Laasigbotitusita Kubernetes

2) Ti awọn podu ba ṣetan (Ready), o yẹ ki o wa boya iṣẹ naa n pin kaakiri laarin awọn adarọ-ese:

Itọsọna wiwo si Laasigbotitusita Kubernetes

3) Nikẹhin, o nilo lati ṣe itupalẹ asopọ laarin iṣẹ ati Ingress:

Itọsọna wiwo si Laasigbotitusita Kubernetes

1. Aisan ti pods

Ni ọpọlọpọ igba, iṣoro naa ni ibatan si podu. Rii daju pe awọn podu ti wa ni akojọ bi Ready и Running. O le ṣayẹwo eyi nipa lilo aṣẹ:

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

Ninu iṣẹjade aṣẹ loke, adarọ-ese ti o kẹhin jẹ atokọ bi Running и Ready, sibẹsibẹ, eyi kii ṣe ọran fun awọn meji miiran.

Bawo ni lati loye ohun ti ko tọ?

Awọn ofin iwulo mẹrin wa fun ṣiṣe iwadii awọn adarọ-ese:

  1. kubectl logs <имя pod'а> gba ọ laaye lati yọ awọn akọọlẹ jade lati awọn apoti ninu podu;
  2. kubectl describe pod <имя pod'а> gba ọ laaye lati wo atokọ ti awọn iṣẹlẹ ti o ni nkan ṣe pẹlu podu;
  3. kubectl get pod <имя pod'а> gba ọ laaye lati gba iṣeto YAML ti adarọ-ese ti o fipamọ sinu Kubernetes;
  4. kubectl exec -ti <имя pod'а> bash gba ọ laaye lati ṣe ifilọlẹ ikarahun aṣẹ ibaraenisepo ninu ọkan ninu awọn apoti podu

Eyi wo ni o yẹ ki o yan?

Otitọ ni pe ko si aṣẹ agbaye. Apapo awọn wọnyi yẹ ki o lo.

Awọn iṣoro podu aṣoju

Awọn oriṣi akọkọ meji ti awọn aṣiṣe podu: awọn aṣiṣe ibẹrẹ ati awọn aṣiṣe asiko-akoko.

Awọn aṣiṣe ibẹrẹ:

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

Awọn aṣiṣe akoko ṣiṣe:

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

Diẹ ninu awọn aṣiṣe jẹ wọpọ ju awọn miiran lọ. Eyi ni diẹ ninu awọn aṣiṣe ti o wọpọ julọ ati bii o ṣe le ṣatunṣe wọn.

ImagePullBackOff

Aṣiṣe yii han nigbati Kubernetes ko le gba aworan kan fun ọkan ninu awọn apoti podu. Eyi ni awọn idi mẹta ti o wọpọ julọ fun eyi:

  1. Orukọ aworan naa ko tọ - fun apẹẹrẹ, o ṣe aṣiṣe ninu rẹ, tabi aworan ko si;
  2. Aami ti ko si tẹlẹ ni pato fun aworan naa;
  3. Aworan naa wa ni ipamọ sinu iforukọsilẹ ikọkọ ati pe Kubernetes ko ni igbanilaaye lati wọle si.

Awọn idi meji akọkọ jẹ rọrun lati yọkuro - o kan ṣe atunṣe orukọ aworan ati tag. Ninu ọran ti igbehin, o nilo lati tẹ awọn iwe-ẹri fun iforukọsilẹ pipade ni Aṣiri ati ṣafikun awọn ọna asopọ si rẹ ni awọn adarọ-ese. Ninu iwe Kubernetes apẹẹrẹ kan wa bawo ni eyi ṣe le ṣe.

Yipo jamba Pada

Kubenetes jabọ aṣiṣe CrashLoopBackOff, ti apoti ko ba le bẹrẹ. Eyi maa n ṣẹlẹ nigbati:

  1. Kokoro kan wa ninu ohun elo ti o ṣe idiwọ fun ifilọlẹ;
  2. Apoti tunto ti ko tọ;
  3. Idanwo Liveness ti kuna ni ọpọlọpọ igba.

O gbọdọ gbiyanju lati lọ si awọn akọọlẹ lati inu apoti lati wa idi ti ikuna rẹ. Ti o ba ṣoro lati wọle si awọn akọọlẹ nitori apoti naa tun bẹrẹ ni yarayara, o le lo aṣẹ atẹle:

kubectl logs <pod-name> --previous

O ṣe afihan awọn ifiranṣẹ aṣiṣe lati inu isọdi iṣaaju ti eiyan naa.

RunContainer Error

Yi aṣiṣe waye nigbati awọn eiyan kuna lati bẹrẹ. O ni ibamu si akoko ṣaaju ifilọlẹ ohun elo naa. O maa n ṣẹlẹ nipasẹ awọn eto ti ko tọ, fun apẹẹrẹ:

  • igbiyanju lati gbe iwọn didun ti ko si tẹlẹ gẹgẹbi ConfigMap tabi Awọn Aṣiri;
  • igbiyanju lati gbe iwọn didun kika-nikan bi kika-kikọ.

Ẹgbẹ naa dara daradara fun itupalẹ iru awọn aṣiṣe kubectl describe pod <pod-name>.

Pods wa ni isunmọtosi ni ipinle

Ni kete ti a ṣẹda, podu naa wa ni ipinlẹ naa Pending.

Kini idi ti eyi fi ṣẹlẹ?

Eyi ni awọn idi ti o ṣeeṣe (Mo ro pe oluṣeto n ṣiṣẹ daradara):

  1. Iṣupọ naa ko ni awọn orisun ti o to, gẹgẹbi agbara sisẹ ati iranti, lati ṣiṣẹ podu naa.
  2. Ohun naa ti fi sii ni aaye orukọ ti o yẹ ResourceQuota ati ṣiṣẹda adarọ-ese yoo jẹ ki aaye orukọ lọ kọja ipin.
  3. Pod ti wa ni owun si isunmọtosi PersistentVolumeClaim.

Ni idi eyi, o niyanju lati lo aṣẹ naa kubectl describe ati ki o ṣayẹwo awọn apakan Events:

kubectl describe pod <pod name>

Ni irú ti awọn aṣiṣe jẹmọ si ResourceQuotas, a ṣe iṣeduro lati wo awọn akọọlẹ iṣupọ nipa lilo aṣẹ naa

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

Pods ko Ṣetan

Ti o ba ti podu ti wa ni akojọ si bi Running, ṣugbọn kii ṣe ni ipo kan Ready, tumo si ṣiṣe ayẹwo imurasilẹ rẹ (iwadii imurasilẹ) kuna.

Nigbati eyi ba ṣẹlẹ, adarọ-ese ko ni sopọ si iṣẹ naa ko si si ṣiṣanwọle si rẹ. Ikuna idanwo imurasilẹ jẹ idi nipasẹ awọn iṣoro ninu ohun elo naa. Ni idi eyi, lati wa aṣiṣe, o nilo lati ṣe itupalẹ apakan naa Events ninu awọn pipaṣẹ o wu kubectl describe.

2. Awọn ayẹwo iṣẹ

Ti o ba ti podu ti wa ni akojọ si bi Running и Ready, ṣugbọn ko si esi lati inu ohun elo naa, o yẹ ki o ṣayẹwo awọn eto iṣẹ naa.

Awọn iṣẹ jẹ iduro fun ipa-ọna ipa-ọna si awọn adarọ-ese da lori awọn aami wọn. Nitorinaa, ohun akọkọ ti o nilo lati ṣe ni ṣayẹwo iye awọn adarọ-ese ti n ṣiṣẹ pẹlu iṣẹ naa. Lati ṣe eyi, o le ṣayẹwo awọn aaye ipari ninu iṣẹ naa:

kubectl describe service <service-name> | grep Endpoints

Endpoint jẹ bata ti awọn iye ti fọọmu naa <IP-адрес:порт>, ati pe o kere ju iru bata kan gbọdọ wa ninu iṣelọpọ (iyẹn, o kere ju podu kan ṣiṣẹ pẹlu iṣẹ naa).

Ti apakan Endpoins ofo, awọn aṣayan meji ṣee ṣe:

  1. ko si awọn adarọ-ese pẹlu aami to pe (itọkasi: ṣayẹwo ti o ba yan aaye orukọ daradara);
  2. Aṣiṣe wa ninu awọn aami iṣẹ ni oluyan.

Ti o ba rii atokọ ti awọn aaye ipari ṣugbọn ko le wọle si ohun elo naa, lẹhinna o ṣeeṣe pe o jẹbi jẹ aṣiṣe ninu targetPort ni apejuwe iṣẹ.

Bii o ṣe le ṣayẹwo iṣẹ ṣiṣe ti iṣẹ naa?

Laibikita iru iṣẹ naa, o le lo aṣẹ naa kubectl port-forward lati sopọ si rẹ:

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

Nibi:

  • <service-name> - orukọ iṣẹ;
  • 3000 ni ibudo ti o ṣii lori kọnputa;
  • 80 - ibudo lori iṣẹ ẹgbẹ.

3. Ingress aisan

Ti o ba ti ka eyi jina, lẹhinna:

  • pods ti wa ni akojọ si bi Running и Ready;
  • iṣẹ naa ṣaṣeyọri pinpin ijabọ kọja awọn podu.

Sibẹsibẹ, o tun ko le de ọdọ app naa.

Eyi tumọ si pe oludari Ingress jẹ eyiti o ṣeese ko ni tunto ni deede. Niwọn igba ti oludari Ingress jẹ paati ẹnikẹta ninu iṣupọ, awọn ọna n ṣatunṣe aṣiṣe oriṣiriṣi wa ti o da lori iru rẹ.

Ṣugbọn ṣaaju ki o to lo awọn irinṣẹ pataki lati tunto Ingress, o le ṣe nkan ti o rọrun pupọ. Ingress nlo serviceName и servicePort lati sopọ si iṣẹ naa. O nilo lati ṣayẹwo ti wọn ba tunto ni deede. O le ṣe eyi nipa lilo aṣẹ:

kubectl describe ingress <ingress-name>

Ti o ba ti ọwọn Backend sofo, iṣeeṣe giga kan ti aṣiṣe iṣeto ni. Ti awọn ẹhin ẹhin ba wa ni aye, ṣugbọn ohun elo ko tun wa, lẹhinna iṣoro naa le ni ibatan si:

  • Awọn eto iraye si ingress lati Intanẹẹti gbogbo eniyan;
  • awọn eto iraye si iṣupọ lati Intanẹẹti gbogbo eniyan.

O le ṣe idanimọ awọn iṣoro pẹlu awọn amayederun nipa sisopọ taara si adarọ ese Ingress. Lati ṣe eyi, kọkọ wa Podu Adarí Ingress (o le wa ni aaye orukọ ti o yatọ):

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

Lo aṣẹ naa describelati ṣeto ibudo:

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

Ni ipari, sopọ si podu naa:

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

Bayi gbogbo awọn ibeere si ibudo 3000 lori kọnputa yoo darí si ibudo 80 ti podu naa.

Ṣe o ṣiṣẹ ni bayi?

  • Ti o ba jẹ bẹẹni, lẹhinna iṣoro naa wa pẹlu awọn amayederun. O jẹ dandan lati wa ni pato bi a ṣe n gbe ijabọ si iṣupọ naa.
  • Ti kii ba ṣe bẹ, lẹhinna iṣoro naa wa pẹlu oludari Ingress.

Ti o ko ba le gba oludari Ingress lati ṣiṣẹ, iwọ yoo ni lati ṣatunṣe rẹ.

Nibẹ ni o wa ọpọlọpọ awọn orisirisi ti Ingress olutona. Awọn olokiki julọ ni Nginx, HAProxy, Traefik, ati bẹbẹ lọ. (fun alaye diẹ sii nipa awọn solusan ti o wa tẹlẹ, wo wa awotẹlẹ - isunmọ. itumọ.) O yẹ ki o tọka si itọsọna laasigbotitusita ninu iwe iṣakoso ti o yẹ. Nitori awọn Ibẹrẹ Nginx jẹ oludari Ingress olokiki julọ, a ti ṣafikun diẹ ninu awọn imọran ninu nkan lati yanju awọn iṣoro ti o jọmọ rẹ.

N ṣatunṣe aṣiṣe Ingress Nginx oludari

Ise agbese Ingress-nginx ni oṣiṣẹ kan itanna fun kubectl. Egbe kubectl ingress-nginx le ṣee lo fun:

  • igbekale ti àkọọlẹ, backends, awọn iwe-ẹri, ati be be lo .;
  • awọn asopọ si Ingress;
  • keko awọn ti isiyi iṣeto ni.

Awọn ofin mẹta wọnyi yoo ran ọ lọwọ pẹlu eyi:

  • kubectl ingress-nginx lint - sọwedowo nginx.conf;
  • kubectl ingress-nginx backend - ṣawari awọn backend (iru si kubectl describe ingress <ingress-name>);
  • kubectl ingress-nginx logs - ṣayẹwo awọn akọọlẹ.

Ṣe akiyesi pe ni awọn igba miiran o le nilo lati pato aaye orukọ ti o pe fun oluṣakoso Ingress nipa lilo asia --namespace <name>.

Akopọ

Laasigbotitusita Kubernetes le jẹ nija ti o ko ba mọ ibiti o bẹrẹ. O yẹ ki o sunmọ iṣoro naa nigbagbogbo ni ọna isalẹ: bẹrẹ pẹlu awọn adarọ-ese, ati lẹhinna lọ si iṣẹ ati Ingress. Awọn imọ-ẹrọ ti n ṣatunṣe aṣiṣe ti a ṣalaye ninu nkan yii le ṣee lo si awọn nkan miiran, gẹgẹbi:

  • Awọn iṣẹ ti ko ṣiṣẹ ati Awọn iṣẹ Cron;
  • StatefulSets ati DaemonSets.

Mo fi imoore mi han Gergely Risko, Daniel Weibel и Charles Christyraj fun niyelori comments ati awọn afikun.

PS lati onitumọ

Ka tun lori bulọọgi wa:

orisun: www.habr.com

Fi ọrọìwòye kun