He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

Nānā. unuhi.: ʻO kēia ʻatikala kahi ʻāpana o nā mea papahana i paʻi ʻia ma ka waihona lehulehu learnk8s, nā hui hoʻomaʻamaʻa a me nā luna hoʻomalu e hana pū me Kubernetes. I loko o ia mea, hōʻike ʻo Daniele Polencic, ka luna o ka papahana, i nā ʻōlelo aʻoaʻo e pili ana i nā ala e hana ai i nā pilikia maʻamau me nā noi e holo ana ma ka hui K8s.

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

TL; DR: eia kahi kiʻi e kōkua iā ʻoe i ka debug deployment ma Kubernetes:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

Kaʻahele no ka ʻimi ʻana a me ka hoʻoponopono ʻana i nā hewa i loko o kahi pūʻulu. Loaʻa ka palapala kumu (ma ka ʻōlelo Pelekania) ma PDF и e like me ke kiʻi.

Ke kau ʻana i kahi noi iā Kubernetes, ʻekolu mau ʻāpana āu e pono ai e wehewehe:

  • kuhikuhi i ka hana - he ʻano mea ʻai kēia no ka hana ʻana i nā kope o ka noi, i kapa ʻia ʻo pods;
  • Service - ka mea kaulike o loko e puʻunaue ana i nā kaʻa ma waena o nā pods;
  • Pau - ka wehewehe ʻana i ka loaʻa ʻana o ke kaʻa mai ka honua waho i ka Service.

Eia kahi hōʻuluʻulu kiʻi wikiwiki:

1) Ma Kubernetes, loaʻa i nā noi ke kaʻa mai ka honua i waho ma o ʻelua papa o nā mea kaulike ukana: loko a me waho.

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

2) Ua kapa ʻia ka mea kaulike kūloko ʻo Service, ʻo ka mea waho i kapa ʻia ʻo Ingress.

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

3) Hoʻokumu ka Deployment i nā pods a nānā iā lākou (ʻaʻole hana lima ʻia lākou).

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

E ʻōlelo mākou makemake ʻoe e kau i kahi noi maʻalahi a la Aloha kākou honua. ʻO ka hoʻonohonoho YAML no ia e like me kēia:

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

He lōʻihi loa ka wehewehe a he maʻalahi ka huikau e pili ana i ka pili ʻana o nā ʻāpana i kekahi i kekahi.

Eia kekahi laʻana:

  • I ka manawa hea ʻoe e hoʻohana ai i ka port 80 a i ka manawa hea ʻoe e hoʻohana ai i ka 8080?
  • Pono wau e hana i kahi awa hou no kēlā me kēia lawelawe i ʻole lākou e hakakā?
  • He mea nui anei ka lepili inoa? Pono anei lākou e like ma nā wahi a pau?

Ma mua o ka nānā ʻana i ka debugging, e hoʻomanaʻo kākou i ka pili ʻana o nā ʻāpana ʻekolu i kekahi i kekahi. E hoʻomaka kākou me ka Hoʻohana a me ka lawelawe.

Ka pilina ma waena o ka hoʻolālā a me ka lawelawe

E kāhāhā ʻoe, akā ʻaʻole pili ʻo Deployment a me Service. Akā, kuhikuhi pololei ʻo Service i nā Pods, e kāpae ana i ka Deployment.

No laila, makemake mākou i ka pili ʻana o Pods a me nā lawelawe i kekahi i kekahi. ʻEkolu mau mea e hoʻomanaʻo ai:

  1. Mea koho (selector) no ka lawelawe pono e like me hoʻokahi lepili Pod.
  2. targetPort pono e kūlike containerPort pahu i loko o ka Pod.
  3. port Hiki ke lawelawe i kekahi mea. Hiki i nā lawelawe like ʻole ke hoʻohana i ka awa hoʻokahi no ka mea he ʻokoʻa ko lākou mau IP address.

Hōʻike ka paʻi kiʻi i nā mea a pau i luna ma ke ʻano kiʻi.

1) E noʻonoʻo e alakaʻi ana ka lawelawe i ke kaʻa i kekahi pod:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

2) I ka hana ʻana i kahi pod, pono ʻoe e kuhikuhi containerPort no kēlā me kēia pahu i nā pods:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

3) I ka hana ʻana i kahi lawelawe, pono ʻoe e kuhikuhi port и targetPort. Akā ʻo wai ka mea i hoʻohana ʻia e hoʻopili ai i ka ipu?

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

4) Via targetPort. Pono e kūlike containerPort.

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

5) E ʻōlelo kākou ua wehe ʻia ke awa 3000 i loko o ka pahu targetPort pono e like.

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

Ma ka faila YAML, nā lepili a me ports / targetPort pono e like me:

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

Pehea e pili ana i ka lepili track: canary ma luna o ka ʻāpana Hoʻolaha? Pono anei e kūlike?

ʻO kēia lepili he hoʻolaha kikoʻī a ʻaʻole hoʻohana ʻia e ka lawelawe e ala i nā kaʻa. I nā huaʻōlelo ʻē aʻe, hiki ke wehe ʻia a hāʻawi ʻia i kahi waiwai ʻē aʻe.

Pehea ka mea koho matchLabels?

Pono e kūlike me nā lepili o Pod, no ka mea, hoʻohana ʻia ia e Deployment e nānā i nā pods.

E manaʻo mākou ua hana ʻoe i nā hoʻoponopono pololei. Pehea e nānā ai iā lākou?

Hiki iā ʻoe ke nānā i ka lepili pod me kēia kauoha:

kubectl get pods --show-labels

A i ʻole, inā pili nā pods i kekahi mau noi:

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

'Ahea any-name=my-app he lepili any-name: my-app.

Aia kekahi mau pilikia i koe?

Hiki iā ʻoe ke hoʻohui i ka pod! No ka hana ʻana i kēia pono ʻoe e hoʻohana i ke kauoha port-forward i kubectl. Hiki iāʻoe ke hoʻohui i ka lawelawe a nānā i ka pilina.

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

Maʻaneʻi:

  • service/<service name> - inoa lawelawe; i ko makou hihia my-service;
  • ʻO 3000 ke awa e pono e wehe ʻia ma ke kamepiula;
  • 80 - awa i kuhikuhi ʻia ma ke kahua port lawelawe.

Inā hoʻokumu ʻia ka pilina, a laila pololei nā hoʻonohonoho.

Inā hāʻule ka pilina, aia ka pilikia me nā lepili a ʻaʻole like nā awa.

Ka pilina ma waena o Service a me Ingress

ʻO ka hana aʻe i ka hāʻawi ʻana i ke komo i ka noi e pili ana i ka hoʻonohonoho ʻana iā Ingress. Pono ʻo Ingress e ʻike pehea e ʻike ai i kahi lawelawe, a laila e ʻimi i nā pods a kuhikuhi pololei i ke kaʻa iā lākou. ʻIke ʻo Ingress i ka lawelawe i koi ʻia ma ka inoa a me ka puka wehe.

I ka wehewehe ʻana o Ingress a me Service pono ʻelua mau ʻāpana:

  1. servicePort ma Ingress pono e hoʻohālikelike i ka ʻāpana port i ka lawelawe;
  2. serviceName ma Ingress pono e like me ke kahua name ma ka lawelawe.

Hōʻuluʻulu ke kiʻikuhi i nā pili awa:

1) E like me kāu i ʻike ai, hoʻolohe ʻo Service i kekahi port:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

2) Loaʻa iā Ingress kahi ʻāpana i kapa ʻia servicePort:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

3) ʻO kēia ʻāpana (servicePort) pono e kūlike mau port ma ka wehewehe Service:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

4) Inā hōʻike ʻia ka port 80 i ka Service, a laila pono ia servicePort ua like pū me 80:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

I ka hoʻomaʻamaʻa, pono ʻoe e hoʻolohe i nā laina aʻe:

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

Pehea e nānā ai inā e holo ana ʻo Ingress?

Hiki iā ʻoe ke hoʻohana i ke ʻano me kubectl port-forward, akā ma kahi o ka lawelawe pono ʻoe e hoʻopili i ka mea hoʻokele Ingress.

Pono mua ʻoe e ʻike i ka inoa o ka pod me ka mea hoʻokele 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

E ʻimi i ka pod Ingress (ma kahi inoa inoa ʻē aʻe) a holo i ke kauoha describee ʻike i nā helu awa:

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

ʻO ka hope, hoʻohui i ka pod:

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

I kēia manawa i kēlā me kēia manawa āu e hoʻouna ai i kahi noi i ke awa 3000 ma kāu kamepiula, e hoʻouna ʻia ia i ka port 80 o ka pod me ka mea hoʻokele Ingress. Ma ka hele ana i http://localhost:3000, pono ʻoe e ʻike i ka ʻaoʻao i hana ʻia e ka noi.

Hōʻuluʻulu o nā awa

E hoʻomanaʻo hou kākou i nā awa a me nā lepili e pono ai ke kūlike:

  1. Pono ka mea koho i ka wehewehe Service me ka lepili o ka pod;
  2. targetPort ma ka wehewehe ʻana Pono e kūlike ka lawelawe containerPort pahu i loko o kahi pahu;
  3. port i ka wehewehe Service hiki i kekahi mea. Hiki i nā lawelawe like ʻole ke hoʻohana i ka awa hoʻokahi no ka mea he ʻokoʻa ko lākou mau IP address;
  4. servicePort Pono e kūlike ka Ingress port ma ka wehewehe o ka Service;
  5. Pono ka inoa lawelawe me ke kahua serviceName ma Ingress.

ʻO ka mea pōʻino, ʻaʻole lawa ka ʻike pehea e hoʻonohonoho pono ai i kahi hoʻonohonoho YAML.

He aha ka hopena ke hele hewa nā mea?

ʻAʻole hoʻomaka ka pod a hāʻule paha.

3 Nā ʻanuʻu e ʻike i nā pilikia noi ma Kubernetes

Ma mua o kou hoʻomaka ʻana e hoʻopau i kāu hoʻolālā, pono ʻoe e hoʻomaopopo maikaʻi i ka hana ʻana o Kubernetes.

No ka mea he ʻekolu mau ʻāpana kēlā me kēia noi i hoʻoiho ʻia ma K8s, pono lākou e hoʻopau ʻia i kahi kauoha, e hoʻomaka ana mai lalo.

  1. Pono mua ʻoe e hōʻoia i ka hana ʻana o nā pods, a laila ...
  2. E nānā inā hāʻawi ka lawelawe i nā kaʻa i nā pods, a laila...
  3. E nānā inā ua hoʻonohonoho pono ʻia ʻo Ingress.

Hōʻike ʻike maka:

1) Pono ʻoe e hoʻomaka e ʻimi i nā pilikia mai lalo. E nānā mua inā loaʻa i nā pods nā kūlana Ready и Running:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

2) Inā mākaukau nā ʻōpala (Ready), pono ʻoe e ʻike inā hāʻawi ka lawelawe i nā kaʻa ma waena o nā pods:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

3) ʻO ka hope, pono ʻoe e nānā i ka pilina ma waena o ka lawelawe a me ka Ingress:

He alakaʻi ʻike no ka hoʻoponopono ʻana i nā Kubernetes

1. Nā diagnostics o nā pods

I ka nui o nā hihia pili i ka pod. E hōʻoia i ka papa inoa o nā pods Ready и Running. Hiki iā ʻoe ke nānā i kēia me ke kauoha:

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

Ma ka puka kauoha ma luna, ua helu ʻia ka pod hope loa Running и Ready, akā naʻe,ʻaʻole kēia ka hihia no nā mea'ē aʻeʻelua.

Pehea e maopopo ai ka hewa?

ʻEhā mau kauoha kūpono no ka ʻike ʻana i nā pods:

  1. kubectl logs <имя pod'а> hiki iā ʻoe ke unuhi i nā lāʻau mai nā pahu i loko o kahi pod;
  2. kubectl describe pod <имя pod'а> hiki iā ʻoe ke nānā i kahi papa inoa o nā hanana e pili ana i ka pod;
  3. kubectl get pod <имя pod'а> hiki iā ʻoe ke kiʻi i ka hoʻonohonoho YAML o kahi pod i mālama ʻia ma Kubernetes;
  4. kubectl exec -ti <имя pod'а> bash hiki iā ʻoe ke hoʻomaka i kahi pūpū kauoha interactive i loko o kekahi o nā pahu pod

ʻO wai kāu e koho ai?

ʻO ka ʻoiaʻiʻo ʻaʻohe kauoha āpau. Pono e hoʻohana i kahi hui o kēia mau mea.

Nā pilikia pod maʻamau

ʻElua ʻano nui o nā hewa pod: nā hewa hoʻomaka a me nā hewa runtime.

Nā hewa hoʻomaka:

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

Nā hewa manawa holo:

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

ʻOi aku ka maʻamau o kekahi mau hewa ma mua o nā mea ʻē aʻe. Eia kekahi o nā hewa maʻamau a pehea e hoʻoponopono ai.

ImagePullBackOff

Loaʻa kēia hewa ke loaʻa ʻole iā Kubernetes kahi kiʻi no kekahi o nā pahu pod. Eia nā kumu maʻamau ʻekolu o kēia:

  1. ʻAʻole pololei ka inoa o ke kiʻi - no ka laʻana, ua hana hewa ʻoe i loko, a i ʻole ke kiʻi ʻole;
  2. Ua kuhikuhi ʻia kahi hōʻailona ʻole no ke kiʻi;
  3. Mālama ʻia ke kiʻi ma kahi papa inoa pilikino a ʻaʻohe ʻae iā Kubernetes.

ʻO nā kumu mua ʻelua he maʻalahi ke hoʻopau - hoʻoponopono wale i ka inoa kiʻi a me ka inoa. I ka hihia o ka hope, pono ʻoe e hoʻokomo i nā hōʻoia no ka hoʻopaʻa inoa paʻa ma Secret a hoʻohui i nā loulou iā ia i loko o nā pods. Ma ka palapala Kubernetes he laʻana pehea e hana ai.

Hoʻopaʻa i hope

Kiola ʻo Kubenetes i kahi hewa CrashLoopBackOff, inā ʻaʻole hiki ke hoʻomaka ka pahu. Hana pinepine kēia i ka wā:

  1. Aia ka hewa i loko o ka palapala noi e pale ai i ka hoʻokuʻu ʻana;
  2. Container i hoʻonohonoho hewa ʻia;
  3. Ua hāʻule ka hoʻāʻo Liveness i nā manawa he nui.

Pono ʻoe e hoʻāʻo e kiʻi i nā lāʻau mai ka pahu e ʻike i ke kumu o kona hemahema. Inā paʻakikī ke komo i nā lāʻau no ka mea e hoʻomaka koke ka pahu, hiki iā ʻoe ke hoʻohana i kēia kauoha:

kubectl logs <pod-name> --previous

Hōʻike ia i nā memo hewa mai ka incarnation mua o ka ipu.

RunContainerError

Loaʻa kēia hewa ke hoʻomaka ka pahu. Ua like ia me ka manawa ma mua o ka hoʻomaka ʻana o ka noi. Ma muli o nā hoʻonohonoho hewa ʻole, no ka laʻana:

  • ke hoʻāʻo nei e kau i kahi leo i loaʻa ʻole e like me ConfigMap a i ʻole Secrets;
  • he ho'āʻo e kau i ka leo heluhelu-wale e like me ka heluhelu-kākau.

Ua kūpono ka hui no ka nānā ʻana i ia mau hewa kubectl describe pod <pod-name>.

Aia nā Pods i ka moku'āina e kali ana

Ke hana ʻia, noho ka pod i ka mokuʻāina Pending.

No ke aha la keia?

Eia nā kumu kūpono (Ke manaʻo nei au e hana maikaʻi ana ka mea hoʻonohonoho):

  1. ʻAʻole lawa nā kumu waiwai o ka hui, e like me ka mana hana a me ka hoʻomanaʻo, e holo i ka pod.
  2. Hoʻokomo ʻia ka mea i ka inoa inoa kūpono ResourceQuota a ʻo ka hana ʻana i kahi pod e hele ai ka namespace ma mua o ka quota.
  3. Hoʻopili ʻia ʻo Pod i ke kali ʻana PersistentVolumeClaim.

I kēia hihia, pono e hoʻohana i ke kauoha kubectl describe a nānā i ka ʻāpana Events:

kubectl describe pod <pod name>

Ina he hewa e pili ana i ResourceQuotas, makemake ʻia e nānā i nā lāʻau cluster me ka hoʻohana ʻana i ke kauoha

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

ʻAʻole Mākaukau nā Pods

Inā helu ʻia ka pod e like me Running, ʻaʻole naʻe ma kahi mokuʻāina Ready, 'o ia ho'i ka nānā 'ana i kona mākaukau (mākaukau hoʻonaʻauao) hāʻule.

Ke hana ʻia kēia, ʻaʻole pili ka pod i ka lawelawe a ʻaʻohe holo kaʻa i laila. ʻO ka hemahema o ka hoʻāʻo mākaukau ma muli o nā pilikia i ka noi. I kēia hihia, e ʻike i ka hewa, pono ʻoe e nānā i ka ʻāpana Events ma ka puka kauoha kubectl describe.

2. Nā diagnostics lawelawe

Inā helu ʻia nā pods e like me Running и Ready, akā ʻaʻohe pane mai ka noi, pono ʻoe e nānā i nā hoʻonohonoho lawelawe.

ʻO nā lawelawe ke kuleana no ka hoʻokele ʻana i nā kaʻa i nā pods ma muli o kā lākou lepili. No laila, ʻo ka mea mua āu e hana ai e nānā i ka nui o nā pods e hana me ka lawelawe. No ka hana ʻana i kēia, hiki iā ʻoe ke nānā i nā helu hope o ka lawelawe:

kubectl describe service <service-name> | grep Endpoints

ʻO Endpoint kahi mau waiwai o ke ʻano <IP-адрес:порт>, a ma ka li'ili'i loa o ho'okahi o ia mau pai e pono ke komo i loko o ka pukana ('o ia ho'i, ma ka li'ili'i loa e hana pū me ka lawelawe).

Ina pauku Endpoins nele, ʻelua mau koho:

  1. ʻaʻohe pods me ka lepili pololei (hint: nānā inā koho pololei ʻia ka inoa);
  2. Aia kekahi hewa i nā lepili lawelawe ma ka mea koho.

Inā ʻike ʻoe i kahi papa inoa o nā helu hope akā ʻaʻole hiki ke komo i ka noi, a laila ʻo ka mea hewa paha he bug i loko targetPort ma ka wehewehe lawelawe.

Pehea e nānā ai i ka hana o ka lawelawe?

Ma waho o ke ʻano o ka lawelawe, hiki iā ʻoe ke hoʻohana i ke kauoha kubectl port-forward e hoʻohui iā ia:

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

Maʻaneʻi:

  • <service-name> - inoa lawelawe;
  • ʻO 3000 ke awa āu e wehe ai ma ke kamepiula;
  • 80 - awa ma ka ʻaoʻao lawelawe.

3. Nā diagnostics Ingress

Inā ua heluhelu ʻoe i kēia mamao, a laila:

  • helu ʻia nā pods e like me Running и Ready;
  • ke hāʻawi maikaʻi nei ka lawelawe i nā kaʻa ma waena o nā pods.

Akā naʻe, ʻaʻole hiki iā ʻoe ke hiki i ka app.

ʻO ia hoʻi, ʻaʻole i hoʻonohonoho pono ʻia ka mea hoʻokele Ingress. No ka mea ʻo ka mea hoʻoponopono Ingress he ʻāpana ʻaoʻao ʻekolu i loko o ka pūʻulu, aia nā ʻano debugging ʻokoʻa e pili ana i kona ʻano.

Akā ma mua o kou hoʻohana ʻana i nā mea hana kūikawā e hoʻonohonoho iā Ingress, hiki iā ʻoe ke hana i kahi mea maʻalahi loa. Hoʻohana ʻo Ingress serviceName и servicePort e hoʻohui i ka lawelawe. Pono ʻoe e nānā inā ua hoʻonohonoho pono ʻia lākou. Hiki iā ʻoe ke hana i kēia me ke kauoha:

kubectl describe ingress <ingress-name>

Ina kolamu Backend nele, aia ka nui o ka hewa hoʻonohonoho. Inā paʻa nā ʻaoʻao hope, akā ʻaʻole hiki ke loaʻa ka noi, a laila pili paha ka pilikia i:

  • Nā hoʻonohonoho hiki ke komo mai ka pūnaewele lehulehu;
  • nā hoʻonohonoho hoʻonohonoho hoʻokomo pūʻulu mai ka pūnaewele lehulehu.

Hiki iā ʻoe ke ʻike i nā pilikia me ka ʻōnaehana ma ka hoʻopili pololei ʻana i ka pod Ingress. No ka hana ʻana i kēia, e ʻimi mua i ka pod Ingress Controller (ma kahi inoa inoa ʻē aʻe):

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

E hoʻohana i ke kauoha describee hoʻonoho i ke awa:

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

ʻO ka hope, hoʻohui i ka pod:

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

I kēia manawa, e hoʻihoʻi ʻia nā noi āpau i ka port 3000 ma ke kamepiula i ke awa 80 o ka pod.

Ke hana nei ia i kēia manawa?

  • Inā ʻae, aia ka pilikia i ka ʻōnaehana. Pono pono e ʻike i ke ʻano o ka holo ʻana o ke kaʻa i ka hui.
  • Inā ʻaʻole, a laila aia ka pilikia me ka mea hoʻokele Ingress.

Inā ʻaʻole hiki iā ʻoe ke hoʻohana i ka mea hoʻokele Ingress, pono ʻoe e hoʻopau iā ia.

Nui nā ʻano o nā mea hoʻokele Ingress. ʻO ka mea kaulana loa ʻo Nginx, HAProxy, Traefik, etc. (no ka ʻike hou aku e pili ana i nā hoʻonā e kū nei, ʻike kā mākou loiloi - kokoke. unuhi.) Pono ʻoe e nānā i ke alakaʻi hoʻoponopono pilikia ma ka palapala hoʻoponopono pili. No ka mea ʻO Ingress Nginx ʻO ia ka mea hoʻoponopono Ingress kaulana loa, ua hoʻokomo mākou i kekahi mau ʻōlelo aʻoaʻo i ka ʻatikala e hoʻoponopono i nā pilikia e pili ana iā ia.

Hoʻopau i ka mea hoʻokele Ingress Nginx

Loaʻa i ka papahana Ingress-nginx kahi luna plugin no kubectl. Hui kubectl ingress-nginx hiki ke hoʻohana no:

  • ka nānā ʻana i nā lāʻau, nā hope, nā palapala hōʻoia, a pēlā aku;
  • nā pilina me Ingress;
  • e aʻo ana i ka hoʻonohonoho o kēia manawa.

Na nā kauoha ʻekolu e kōkua iā ʻoe me kēia:

  • kubectl ingress-nginx lint - nānā nginx.conf;
  • kubectl ingress-nginx backend - ʻimi i ka hope (e like me kubectl describe ingress <ingress-name>);
  • kubectl ingress-nginx logs - nānā i nā lāʻau.

E hoʻomaopopo i kekahi mau manawa pono ʻoe e kuhikuhi i ka inoa inoa kūpono no ka mea hoʻokele Ingress e hoʻohana ana i ka hae --namespace <name>.

Hōʻuluʻulu

Hiki ke paʻakikī ka hoʻoponopono ʻana i nā Kubernetes inā ʻaʻole ʻoe ʻike i kahi e hoʻomaka ai. Pono ʻoe e hoʻokokoke mau i ka pilikia mai lalo i luna: hoʻomaka me nā pods, a laila neʻe i ka lawelawe a me Ingress. Hiki ke hoʻohana ʻia nā ʻenehana debugging i wehewehe ʻia ma kēia ʻatikala i nā mea ʻē aʻe, e like me:

  • Nā Hana hana ʻole a me nā CronJobs;
  • StatefulSets a me DaemonSets.

Ke hoike aku nei au i ko'u mahalo Gergely Risko, Daniel Weibel и ʻO Charles Christyraj no nā manaʻo waiwai a me nā mea hoʻohui.

PS mai ka unuhi

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka