Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

Nco tseg. txhais.: Kab lus no yog ib feem ntawm qhov project cov ntaub ntawv luam tawm nyob rau hauv pej xeem sau kawm 8s, kev cob qhia cov tuam txhab thiab cov thawj coj ua haujlwm ua haujlwm nrog Kubernetes. Hauv nws, Daniele Polencic, tus thawj tswj hwm qhov project, qhia cov lus qhia pom ntawm cov kauj ruam twg yuav tsum ua thaum muaj teeb meem dav dav nrog cov ntawv thov khiav ntawm K8s pawg.

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

TL; DR: ntawm no yog daim duab uas yuav pab tau koj debug kev xa tawm hauv Kubernetes:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

Flowchart nrhiav thiab kho qhov yuam kev hauv pawg. Tus thawj (ua lus Askiv) muaj nyob rau ntawm PDF ΠΈ raws li daim duab.

Thaum xa daim ntawv thov mus rau Kubernetes, feem ntau muaj peb yam uas koj yuav tsum tau txhais:

  • txiag - qhov no yog ib hom ntawv qhia rau kev tsim cov ntawv luam ntawm daim ntawv thov, hu ua pods;
  • Service - internal load balancer uas faib cov tsheb khiav ntawm cov pods;
  • Ingress - Cov lus piav qhia txog yuav ua li cas tsheb khiav los ntawm lub ntiaj teb sab nraud mus rau Kev Pabcuam.

Nov yog cov ntsiab lus nrawm nrawm:

1) Hauv Kubernetes, cov ntawv thov tau txais kev khiav tsheb los ntawm lub ntiaj teb sab nraud los ntawm ob txheej ntawm cov khoom sib npaug: sab hauv thiab sab nraud.

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

2) Cov khoom sib npaug sab hauv hu ua Kev Pabcuam, sab nraud yog hu ua Ingress.

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

3) Kev xa tawm tsim cov pods thiab saib xyuas lawv (lawv tsis tsim manually).

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

Wb hais tias koj xav xa ib daim ntawv thov yooj yim a la Nyob zoo lub ntiaj teb. YAML configuration rau nws yuav zoo li no:

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

Cov lus txhais tau ntev heev thiab nws yooj yim kom tsis meej pem txog yuav ua li cas cov khoom sib cuam tshuam rau ib leeg.

Piv txwv li:

  • Thaum twg koj yuav tsum siv qhov chaw nres nkoj 80 thiab thaum twg koj yuav tsum siv 8080?
  • Kuv puas yuav tsum tsim qhov chaw nres nkoj tshiab rau txhua qhov kev pabcuam kom lawv tsis sib haum?
  • Cov npe ntawv puas tseem ceeb? Lawv puas yuav tsum zoo ib yam nyob txhua qhov chaw?

Ua ntej tsom mus rau kev debugging, cia peb nco ntsoov tias peb lub ntsiab lus cuam tshuam li cas rau ib leeg. Cia peb pib nrog Deployment and Service.

Kev sib raug zoo ntawm Kev Tshaj Tawm thiab Kev Pabcuam

Koj yuav xav tsis thoob, tab sis Kev Tshaj Tawm thiab Kev Pabcuam tsis muaj kev cuam tshuam. Hloov chaw, Kev pabcuam ncaj qha rau Pods, hla kev xa mus.

Yog li, peb xav paub yuav ua li cas Pods thiab Kev Pabcuam cuam tshuam rau ib leeg. Peb yam yuav tsum nco ntsoov:

  1. Xaiv (selector) rau Kev Pabcuam yuav tsum phim yam tsawg kawg ib daim ntawv Pod.
  2. targetPort yuav tsum sib phim containerPort ntim hauv Pod.
  3. port Kev pabcuam tuaj yeem yog txhua yam. Cov kev pabcuam sib txawv tuaj yeem siv tib qhov chaw nres nkoj vim lawv muaj qhov sib txawv IP chaw.

Daim duab hauv qab no sawv cev rau tag nrho cov saum toj no hauv daim duab graphical:

1) Xav txog tias qhov kev pab cuam coj cov tsheb khiav mus rau qee qhov pod:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

2) Thaum tsim lub pod, koj yuav tsum qhia meej containerPort rau txhua lub thawv hauv cov pods:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

3) Thaum tsim ib qho kev pabcuam, koj yuav tsum qhia meej port ΠΈ targetPort. Tab sis qhov twg yog siv los txuas rau lub thawv?

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

4) Via targetPort. Nws yuav tsum sib phim containerPort.

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

5) Wb hais tias qhov chaw nres nkoj 3000 yog qhib rau hauv lub thawv, ces tus nqi targetPort yuav tsum zoo ib yam.

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

Hauv cov ntaub ntawv YAML, cov ntawv lo thiab ports / targetPort yuav tsum sib phim:

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

Yuav ua li cas txog daim ntawv lo track: canary nyob rau sab saum toj ntawm Kev Xa Khoom? Yuav tsum sib phim?

Daim ntawv lo no yog kev xa tawm tshwj xeeb thiab tsis yog siv los ntawm kev pabcuam rau kev khiav tsheb. Hauv lwm lo lus, nws tuaj yeem raug tshem tawm lossis muab tus nqi sib txawv.

Yuav ua li cas yog lub selector matchLabels?

Nws yuav tsum yeej ib txwm phim cov Pod cov ntawv, vim nws yog siv los ntawm Deployment mus taug qab pods.

Cia peb xav tias koj tau hloov kho kom raug. Yuav kuaj lawv li cas?

Koj tuaj yeem tshawb xyuas lub plhaub taum nrog cov lus txib hauv qab no:

kubectl get pods --show-labels

Los yog, yog tias cov pods zwm rau ntau daim ntawv thov:

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

Qhov twg any-name=my-app yog daim ntawv lo any-name: my-app.

Puas muaj kev nyuaj siab?

Koj tuaj yeem txuas rau lub plhaub taum! Txhawm rau ua qhov no koj yuav tsum siv cov lus txib port-forward u kub. Nws tso cai rau koj mus txuas rau qhov kev pabcuam thiab xyuas qhov kev sib txuas.

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

Ntawm no:

  • service/<service name> - lub npe kev pabcuam; nyob rau hauv peb cov ntaub ntawv nws yog my-service;
  • 3000 yog qhov chaw nres nkoj uas yuav tsum tau qhib ntawm lub computer;
  • 80 - chaw nres nkoj teev hauv daim teb port kev pabcuam.

Yog tias qhov kev sib txuas tau tsim, ces cov kev teeb tsa raug.

Yog tias kev sib txuas tsis ua haujlwm, muaj teeb meem nrog cov ntawv lo lossis cov chaw nres nkoj tsis sib xws.

Kev sib raug zoo ntawm Kev Pabcuam thiab Ingress

Cov kauj ruam tom ntej hauv kev muab kev nkag mus rau daim ntawv thov suav nrog kev teeb tsa Ingress. Ingress yuav tsum paub yuav ua li cas thiaj nrhiav tau ib qho kev pabcuam, tom qab ntawd nrhiav cov pods thiab ncaj qha tsheb mus rau lawv. Ingress nrhiav cov kev pabcuam uas xav tau los ntawm lub npe thiab qhib chaw nres nkoj.

Hauv kev piav qhia ntawm Ingress thiab Service ob qhov kev ntsuas yuav tsum sib phim:

  1. servicePort nyob rau hauv Ingress yuav tsum phim tus parameter port hauv Kev Pabcuam;
  2. serviceName nyob rau hauv Ingress yuav tsum phim lub teb name hauv Kev Pabcuam.

Daim duab hauv qab no qhia txog cov kev sib txuas ntawm cov chaw nres nkoj:

1) Raws li koj twb paub lawm, Kev Pabcuam mloog ib yam port:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

2) Ingress muaj qhov parameter hu ua servicePort:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

3) Qhov no parameter (servicePort) yuav tsum sib phim port nyob rau hauv Service txhais:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

4) Yog tias qhov chaw nres nkoj 80 tau teev tseg hauv Kev Pabcuam, ces nws yog qhov tsim nyog servicePort kuj tseem sib npaug li 80:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

Hauv kev xyaum, koj yuav tsum tau them sai sai rau cov kab hauv qab no:

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

Yuav ua li cas txheeb xyuas yog tias Ingress khiav?

Koj tuaj yeem siv txoj kev nrog kubectl port-forward, tab sis tsis yog kev pabcuam koj yuav tsum tau txuas mus rau Ingress maub los.

Ua ntej koj yuav tsum paub lub npe ntawm lub plhaub taum nrog Ingress controller:

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

Nrhiav Ingress pod (nws yuav nyob hauv ib lub npe txawv) thiab khiav cov lus txib describekom paub cov lej chaw nres nkoj:

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

Thaum kawg, txuas mus rau lub pod:

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

Tam sim no txhua zaus koj xa daim ntawv thov mus rau chaw nres nkoj 3000 ntawm koj lub computer, nws yuav raug xa mus rau qhov chaw nres nkoj 80 ntawm lub pod nrog Ingress controller. Los ntawm kev mus http://localhost:3000, koj yuav tsum pom nplooj ntawv tsim los ntawm daim ntawv thov.

Cov ntsiab lus ntawm cov chaw nres nkoj

Cia peb nco ntsoov ib zaug ntxiv uas cov chaw nres nkoj thiab cov ntawv yuav tsum sib phim:

  1. Tus neeg xaiv nyob rau hauv Kev Pabcuam txhais yuav tsum ua raws li lub plhaub taum daim ntawv lo;
  2. targetPort nyob rau hauv lub txhais Service yuav tsum phim containerPort ntim hauv ib lub lauj kaub;
  3. port nyob rau hauv lub txhais Service yuav ua tau dab tsi. Cov kev pabcuam sib txawv tuaj yeem siv tib qhov chaw nres nkoj vim lawv muaj qhov sib txawv IP chaw nyob;
  4. servicePort Ingress yuav tsum sib phim port hauv kev txhais ntawm Kev Pabcuam;
  5. Lub npe kev pabcuam yuav tsum sib haum rau thaj chaw serviceName hauv Ingress.

Hmoov tsis zoo, nws tsis txaus kom paub yuav ua li cas tsim YAML teeb tsa kom raug.

Yuav ua li cas thaum tej yam mus tsis ncaj ncees lawm?

Lub pod yuav tsis pib lossis nws yuav poob.

3 Cov kauj ruam los kuaj xyuas cov teeb meem thov hauv Kubernetes

Ua ntej koj pib debugging koj xa mus, koj yuav tsum muaj kev nkag siab zoo txog Kubernetes ua haujlwm li cas.

Txij li txhua daim ntawv thov rub tawm hauv K8s muaj peb yam, lawv yuav tsum tau debugged nyob rau hauv ib qho kev txiav txim, pib los ntawm hauv qab heev.

  1. Ua ntej koj yuav tsum xyuas kom meej tias cov pods ua haujlwm, ces ...
  2. Xyuas seb qhov kev pabcuam muab kev thauj mus los rau cov pods, thiab tom qab ntawd ...
  3. Xyuas seb Ingress puas raug teeb tsa raug.

Visual sawv cev:

1) Koj yuav tsum pib nrhiav teeb meem los ntawm lub hauv qab heev. Ua ntej xyuas tias cov pods muaj xwm txheej Ready ΠΈ Running:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

2) Yog hais tias cov pods npaj txhij (Ready), koj yuav tsum paub seb qhov kev pab cuam faib cov tsheb khiav ntawm cov pods:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

3) Thaum kawg, koj yuav tsum txheeb xyuas qhov kev sib txuas ntawm kev pabcuam thiab Ingress:

Daim Ntawv Qhia Pom Pom Kev daws teeb meem Kubernetes

1. Kev kuaj mob ntawm cov pods

Feem ntau qhov teeb meem yog cuam tshuam nrog lub pod. Xyuas kom cov pods muaj npe raws li Ready ΠΈ Running. Koj tuaj yeem tshawb xyuas qhov no siv cov lus txib:

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

Nyob rau hauv cov lus txib tso zis saum toj no, lub xeem pod yog teev raws li Running ΠΈ ReadyTxawm li cas los xij, qhov no tsis yog qhov xwm txheej rau lwm tus.

Yuav ua li cas to taub dab tsi mus tsis ncaj ncees lawm?

Muaj plaub cov lus txib tseem ceeb rau kev kuaj mob pods:

  1. kubectl logs <имя pod'а> tso cai rau koj rho tawm cov cav los ntawm cov ntim hauv ib lub plhaub;
  2. kubectl describe pod <имя pod'а> tso cai rau koj los saib cov npe ntawm cov xwm txheej cuam tshuam nrog lub pod;
  3. kubectl get pod <имя pod'а> tso cai rau koj kom tau txais YAML teeb tsa ntawm lub plhaub taum khaws cia hauv Kubernetes;
  4. kubectl exec -ti <имя pod'а> bash tso cai rau koj tso lub plhaub sib tham sib tham hauv ib qho ntawm cov thawv ntim khoom

Koj yuav tsum xaiv qhov twg?

Qhov tseeb yog tsis muaj universal commands. Kev sib xyaw ntawm cov no yuav tsum tau siv.

Cov teeb meem ntawm cov pods

Muaj ob hom kev ua yuam kev hauv pods: startup yuam kev thiab runtime yuam kev.

Startup yuam kev:

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

Runtime yuam kev:

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

Qee qhov yuam kev muaj ntau dua li lwm tus. Nov yog qee qhov yuam kev feem ntau thiab yuav kho lawv li cas.

ImagePullBackOff

Qhov kev ua yuam kev no tshwm sim thaum Kubernetes tsis tuaj yeem tau txais cov duab rau ib qho ntawm cov thawv ntim. Nov yog peb qhov laj thawj tshaj plaws rau qhov no:

  1. Lub npe ntawm daim duab tsis raug - piv txwv li, koj ua yuam kev hauv nws, lossis cov duab tsis muaj nyob;
  2. Ib daim ntawv tsis muaj nyob tau teev tseg rau daim duab;
  3. Cov duab khaws cia rau hauv daim ntawv teev npe ntiag tug thiab Kubernetes tsis muaj kev tso cai nkag mus rau nws.

Thawj ob qho laj thawj yog yooj yim tshem tawm - tsuas yog kho cov duab lub npe thiab tag. Nyob rau hauv rooj plaub tom kawg, koj yuav tsum nkag mus rau cov ntaub ntawv pov thawj rau kev kaw npe kaw hauv zais cia thiab ntxiv cov txuas rau nws hauv pods. Hauv cov ntaub ntawv Kubernetes muaj ib qho piv txwv yuav ua li cas qhov no yuav ua tau.

Crash Loop Back Off

Kubenetes cuam tshuam qhov yuam kev CrashLoopBackOff, yog tias lub thawv tsis tuaj yeem pib. Qhov no feem ntau tshwm sim thaum:

  1. Muaj kab laum hauv daim ntawv thov uas tiv thaiv nws los ntawm kev pib;
  2. Thawv configured tsis raug;
  3. Qhov kev sim Liveness tau ua tsis tiav ntau zaus.

Koj yuav tsum sim mus rau lub cav los ntawm lub thawv kom paub tias yog vim li cas rau nws tsis ua hauj lwm. Yog tias nws nyuaj rau kev nkag mus rau cov cav vim tias lub thawv rov pib dua sai heev, koj tuaj yeem siv cov lus txib hauv qab no:

kubectl logs <pod-name> --previous

Nws qhia cov lus yuam kev los ntawm lub neej yav dhau los ntawm lub thawv.

RunContainerError

Qhov yuam kev no tshwm sim thaum lub thawv tsis pib. Nws sib raug rau lub sijhawm ua ntej daim ntawv thov raug tso tawm. Nws feem ntau tshwm sim los ntawm kev teeb tsa tsis raug, piv txwv li:

  • sim mount lub ntim tsis muaj xws li ConfigMap lossis Secrets;
  • ib qho kev sim rau mount ib lub ntim nyeem nkaus xwb raws li nyeem-sau.

Pab neeg no yog qhov zoo rau kev txheeb xyuas qhov yuam kev kubectl describe pod <pod-name>.

Pods nyob rau hauv Pending state

Ib zaug tsim, cov pods tseem nyob hauv lub xeev Pending.

Vim li cas qhov no tshwm sim?

Nov yog cov laj thawj tshwm sim (Kuv xav tias tus teem sijhawm ua haujlwm zoo):

  1. Cov pawg tsis muaj peev txheej txaus, xws li kev ua lub zog thiab kev nco, los khiav lub pod.
  2. Cov khoom raug ntsia rau hauv qhov chaw tsim nyog ResourceQuota thiab tsim ib lub pod yuav ua rau lub namespace mus dhau lub quota.
  3. Pod yog khi rau Pending PersistentVolumeClaim.

Hauv qhov no, nws raug nquahu kom siv cov lus txib kubectl describe thiab xyuas qhov seem Events:

kubectl describe pod <pod name>

Nyob rau hauv cov ntaub ntawv ntawm kev ua yuam kev hais txog ResourceQuotas, nws raug nquahu kom saib cov ntawv teev cov pawg siv cov lus txib

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

Pods tsis npaj

Yog pod yog teev li Running, tab sis tsis nyob rau hauv ib lub xeev Ready, txhais tau tias xyuas nws qhov kev npaj (readiness soj ntsuam) ua tsis tiav.

Thaum qhov no tshwm sim, lub plhaub taum tsis txuas rau qhov kev pabcuam thiab tsis muaj tsheb khiav mus rau nws. Qhov kev ntsuam xyuas kev npaj ua tsis tiav yog tshwm sim los ntawm cov teeb meem hauv daim ntawv thov. Hauv qhov no, txhawm rau nrhiav qhov yuam kev, koj yuav tsum txheeb xyuas cov ntu Events nyob rau hauv cov lus txib tso zis kubectl describe.

2. Kev kuaj mob

Yog tias cov pods tau teev npe Running ΠΈ Ready, tab sis tseem tsis muaj lus teb los ntawm daim ntawv thov, koj yuav tsum xyuas cov kev pabcuam.

Cov kev pabcuam yog lub luag haujlwm rau kev khiav tsheb mus rau cov pods nyob ntawm lawv cov ntawv. Yog li ntawd, thawj qhov koj yuav tsum tau ua yog xyuas seb muaj pes tsawg lub pods ua haujlwm nrog cov kev pabcuam. Txhawm rau ua qhov no, koj tuaj yeem tshawb xyuas qhov kawg ntawm qhov kev pabcuam:

kubectl describe service <service-name> | grep Endpoints

Endpoint yog ib khub ntawm qhov tseem ceeb ntawm daim ntawv <IP-адрСс:ΠΏΠΎΡ€Ρ‚>, thiab tsawg kawg ib khub yuav tsum muaj nyob rau hauv cov zis (uas yog, tsawg kawg yog ib lub pod ua haujlwm nrog cov kev pabcuam).

Yog seem Endpoins khoob, muaj ob txoj kev xaiv tau:

  1. tsis muaj pods nrog daim ntawv lo kom raug (hint: xyuas seb lub namespace raug xaiv kom raug);
  2. Muaj ib qho yuam kev hauv cov ntawv qhia kev pabcuam hauv tus xaiv.

Yog tias koj pom cov npe ntawm cov ntsiab lus kawg tab sis tseem tsis tuaj yeem nkag mus rau hauv daim ntawv thov, ces qhov yuav ua txhaum yog kab laum hauv targetPort hauv kev piav qhia txog kev pabcuam.

Yuav ua li cas txheeb xyuas qhov ua haujlwm ntawm kev pabcuam?

Txawm hais tias hom kev pabcuam, koj tuaj yeem siv cov lus txib kubectl port-forward txuas rau nws:

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

Ntawm no:

  • <service-name> - lub npe kev pabcuam;
  • 3000 yog qhov chaw nres nkoj uas koj qhib hauv lub computer;
  • 80 - chaw nres nkoj ntawm kev pabcuam sab.

3. Ingress kuaj mob

Yog tias koj tau nyeem qhov deb, ces:

  • pods yog teev raws li Running ΠΈ Ready;
  • qhov kev pabcuam ntse faib cov tsheb khiav ntawm cov pods.

Txawm li cas los xij, koj tseem tsis tuaj yeem ncav cuag lub app.

Qhov no txhais tau tias Ingress controller feem ntau yuav tsis teeb tsa kom raug. Txij li thaum Ingress maub los yog tus thib peb cov khoom hauv pawg, muaj ntau txoj hauv kev debugging nyob ntawm nws hom.

Tab sis ua ntej koj siv cov cuab yeej tshwj xeeb los teeb tsa Ingress, koj tuaj yeem ua qee yam yooj yim heev. Ingress siv serviceName ΠΈ servicePort txuas rau kev pabcuam. Koj yuav tsum xyuas seb lawv puas raug teeb tsa raug. Koj tuaj yeem ua qhov no los ntawm kev hais kom ua:

kubectl describe ingress <ingress-name>

Yog kem Backend khoob, muaj qhov tshwm sim siab ntawm kev teeb tsa yuam kev. Yog tias cov backends nyob hauv qhov chaw, tab sis daim ntawv thov tseem tsis tuaj yeem siv tau, ces qhov teeb meem yuav cuam tshuam nrog:

  • Ingress accessibility chaw los ntawm pej xeem Internet;
  • pawg kev nkag mus tau yooj yim los ntawm pej xeem Internet.

Koj tuaj yeem txheeb xyuas cov teeb meem nrog cov txheej txheem los ntawm kev txuas ncaj qha mus rau Ingress pod. Txhawm rau ua qhov no, ua ntej nrhiav Ingress Controller pod (nws yuav nyob hauv ib lub npe txawv):

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

Siv cov lus txib describelos teeb qhov chaw nres nkoj:

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

Thaum kawg, txuas mus rau lub pod:

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

Tam sim no txhua qhov kev thov rau chaw nres nkoj 3000 ntawm lub computer yuav raug xa mus rau qhov chaw nres nkoj 80 ntawm lub pod.

Nws puas ua haujlwm tam sim no?

  • Yog tias muaj, ces qhov teeb meem yog nrog cov infrastructure. Nws yog ib qho tsim nyog kom paub meej tias kev khiav tsheb mus rau pawg li cas.
  • Yog tias tsis yog, qhov teeb meem yog nrog Ingress controller.

Yog tias koj tsis tuaj yeem tau txais Ingress controller ua haujlwm, koj yuav tsum tau debug nws.

Muaj ntau ntau yam ntawm Ingress controllers. Qhov nrov tshaj plaws yog Nginx, HAProxy, Traefik, thiab lwm yam. (yog xav paub ntxiv txog cov kev daws teeb meem uas twb muaj lawm, saib peb tshuaj xyuas - kwv yees. txhais.) Koj yuav tsum xa mus rau cov lus qhia txog kev daws teeb meem hauv cov ntaub ntawv tswj xyuas cov ntaub ntawv cuam tshuam. Vim lub Ingress Nginx yog qhov nrov tshaj plaws Ingress maub los, peb tau suav qee cov lus qhia hauv kab lus los daws cov teeb meem ntsig txog nws.

Debugging lub Ingress Nginx maub los

Qhov project Ingress-nginx muaj cov neeg ua haujlwm plugin rau kubectl. Pab neeg kubectl ingress-nginx tuaj yeem siv rau:

  • tsom xam ntawm cov cav, backends, daim ntawv pov thawj, thiab lwm yam .;
  • kev sib txuas rau Ingress;
  • kawm txog kev teeb tsa tam sim no.

Peb cov lus txib hauv qab no yuav pab koj nrog qhov no:

  • kubectl ingress-nginx lint - kuaj xyuas nginx.conf;
  • kubectl ingress-nginx backend - tshawb nrhiav qhov backend (zoo ib yam li kubectl describe ingress <ingress-name>);
  • kubectl ingress-nginx logs - xyuas cov cav.

Nco ntsoov tias qee zaum koj yuav tsum tau qhia meej lub npe qhov tseeb rau Ingress controller siv tus chij --namespace <name>.

Txoj kev xaus

Kev daws teeb meem Kubernetes tuaj yeem nyuaj yog tias koj tsis paub yuav pib qhov twg. Koj yuav tsum ib txwm mus kom ze rau qhov teeb meem los ntawm hauv qab mus rau: pib nrog cov pods, thiab ces txav mus rau qhov kev pab cuam thiab Ingress. Cov txheej txheem debugging tau piav qhia hauv kab lus no tuaj yeem siv rau lwm yam khoom, xws li:

  • Idle Jobs thiab CronJobs;
  • StatefulSets thiab DaemonSets.

Kuv qhia kuv txoj kev ris txiaj Gergely Risko, Daniel Weibel ΠΈ Charles Christyraj rau cov lus muaj txiaj ntsig thiab ntxiv.

PS los ntawm tus txhais lus

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib