Tuhipoka. whakamaori.: Ko tenei tuhinga tetahi waahanga o nga rauemi kaupapa kua whakaputaina ki te rohe whanui ako8s, whakangungu kamupene me nga kaiwhakahaere takitahi ki te mahi tahi me Kubernetes. Kei roto, ko Daniele Polencic, te kaiwhakahaere kaupapa, e whakaatu ana i nga tohutohu tirohanga mo nga huarahi hei mahi mena ka puta nga raru whanui me nga tono e rere ana i runga i te roopu K8s.
TL; DR: Anei he hoahoa hei awhina i a koe ki te tuku i a koe ki roto i nga Kubernetes:
Tūtohiripo mō te kimi me te whakatika hapa i te kāhui. Ko te taketake (i te reo Ingarihi) e waatea ana i PDF и hei pikitia.
Ina tukuna he tono ki a Kubernetes, e toru nga waahanga me tautuhi koe:
whakamahinga - he momo tohutaka tenei mo te hanga kape o te tono, e kiia nei ko nga pods;
ratonga — te taurite kawenga o roto e tohatoha ana i nga waka i waenga i nga poti;
Ingoa — he whakamaarama me pehea te haere mai o nga waka mai i te ao o waho ki te Ratonga.
Anei he whakarāpopototanga kauwhata tere:
1) I roto i nga Kubernetes, ka whakawhiwhia nga tono mai i te ao o waho ma nga papa e rua o nga taurite kawenga: roto me waho.
2) Ko te taurite o roto ka kiia ko te Ratonga, ko te waho ko Ingress.
3) Ka hangaia e te Hoahoanga nga pona me te aro turuki (kaore i te hanga-a-ringa).
Me kii e hiahia ana koe ki te tuku tono ngawari a la Kia Ora. Ko te whirihoranga YAML mo taua mea ka penei te ahua:
He aha te tapanga track: canary kei te tihi o te waahanga Whakamahinga? Me taurite?
Ko tenei tapanga he tukunga-motuhake, kaore i te whakamahia e te ratonga ki te arataki waka. I etahi atu kupu, ka taea te tango, ka tautapahia ranei he uara rereke.
Me pehea te kaiwhiriwhiri matchLabels?
Me rite tonu ki nga tapanga o te Pod, i te mea e whakamahia ana e te Whakamahinga ki te whai i nga putunga.
Me whakaaro koe i tika nga whakarereketanga. Me pehea te tirotiro i a raatau?
Ka taea e koe te tirotiro i te tapanga pod me te whakahau e whai ake nei:
kubectl get pods --show-labels
Ranei, mena he maha nga tono a nga poti:
kubectl get pods --selector any-name=my-app --show-labels
Kei hea any-name=my-app he tapanga any-name: my-app.
He raruraru kei te toe?
Ka taea e koe te hono atu ki te papa! Ki te mahi i tenei me whakamahi koe i te whakahau port-forward i te kubectl. Ka taea e koe te hono atu ki te ratonga me te tirotiro i te hononga.
service/<service name> — ingoa ratonga; i roto i to tatou take ko te reira my-service;
Ko te 3000 te tauranga e tika ana kia whakatuwheratia i runga i te rorohiko;
80 - tauranga kua tohua ki te mara port ratonga.
Mena kua whakapumautia te hononga, ka tika nga tautuhinga.
Mena ka rahua te hononga, he raru ki nga tapanga, kaore ranei nga tauranga e taurite.
Te hononga i waenga i te Ratonga me Ingress
Ko te mahi e whai ake nei ki te tuku uru ki te tono ko te whakatu i te Ingress. Me mohio a Ingress me pehea te rapu ratonga, katahi ka kimi i nga poti me te tuku waka ki a raatau. Ka kitea e Ingress te ratonga e hiahiatia ana ma te ingoa me te tauranga tuwhera.
I roto i te whakaahuatanga o Ingress me te Ratonga me rite nga tawhā e rua:
servicePort i roto i te Ingress me taurite ki te tawhā port i roto i te Ratonga;
serviceName i roto i te Ingress me rite ki te mara name i roto i te Ratonga.
Ko te hoahoa e whai ake nei ka whakarapopoto i nga hononga tauranga:
1) Kei te mohio koe, ka whakarongo te Ratonga ki tetahi port:
2) He tawhā te Ingress e kiia ana servicePort:
3) Tenei tawhā (servicePort) me rite tonu port i roto i te whakamāramatanga Ratonga:
4) Mena kua tohua te tauranga 80 ki te Ratonga, katahi ka tika servicePort i rite hoki ki te 80:
I roto i te mahi, me whakarongo koe ki nga rarangi e whai ake nei:
Inaianei ka tukuna he tono ki te tauranga 3000 i runga i to rorohiko, ka tukuna atu ki te tauranga 80 o te putunga me te kaiwhakahaere Ingress. Ma te haere ki http://localhost:3000, me kite koe i te wharangi i hangaia e te tono.
Whakarāpopototanga o ngā tauranga
Kia mahara ano tatou ko nga tauranga me nga tapanga e tika ana kia rite:
Ko te kaiwhiriwhiri i roto i te whakamaramatanga Ratonga me taurite ki te tapanga o te pene;
targetPort i roto i te whakamaramatanga me taurite te Ratonga containerPort ipu i roto i te putea;
port i roto i te whakamāramatanga Ka taea e te Ratonga tetahi mea. Ka taea e nga ratonga rereke te whakamahi i te tauranga kotahi na te mea he rereke nga wahitau IP;
servicePort Me taurite te whakaurunga port i roto i te whakamaramatanga o te Ratonga;
Me ōrite te ingoa ratonga ki te āpure serviceName i roto i te Ingress.
Heoi, kaore i te nui te mohio me pehea te hanga tika i te whirihoranga YAML.
He aha te mea ka hee nga mahi?
Kare pea te peera e timata, ka pakaru ranei.
3 Nga Waahi ki te Taatari Raruraru Taupānga i Kubernetes
I mua i to tiimata ki te patuiro i to tukunga, me tino mohio koe ki te mahi a Kubernetes.
I te mea e toru nga waahanga o ia tono ka tangohia i roto i nga K8s, me whakakorehia i roto i tetahi ota, timata mai i raro rawa.
Tuatahi me mohio koe kei te mahi nga pene, ka...
Tirohia mena ka tukuna e te ratonga nga waka ki nga poti, ka...
Tirohia mehemea kei te tika te whirihora a Ingress.
Whakaaturanga tirohanga:
1) Me timata koe ki te rapu raruraru mai i raro rawa. Tuatahi tirohia he mana kei nga pods Ready и Running:
2) Mēnā kua reri ngā pākākano (Ready), me mohio koe mehemea ka tohatoha te ratonga i waenga i nga poti:
3) Ka mutu, me tātari koe i te hononga i waenga i te ratonga me te Ingress:
1. Nga tātaritanga o nga pene
I te nuinga o nga wa ka pa te raruraru ki te pona. Me mohio kua whakarārangihia nga poti hei Ready и Running. Ka taea e koe te tirotiro i tenei ma te whakamahi i te whakahau:
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
I roto i te putanga whakahau i runga ake nei, kua whakarārangitia te pākākano whakamutunga hei Running и Ready, heoi, ehara tenei i te ahua mo era atu e rua.
Me pehea te mohio he aha te mea i he?
E wha nga whakahau whai hua mo te tirotiro i nga pene:
kubectl logs <имя pod'а> ka taea e koe te tango i nga rakau mai i nga ipu i roto i te putea;
kubectl describe pod <имя pod'а> ka taea e koe te tiro i te rarangi o nga huihuinga e pa ana ki te pod;
kubectl get pod <имя pod'а> ka taea e koe te tiki i te whirihoranga YAML o te peera kua rongoa ki Kubernetes;
kubectl exec -ti <имя pod'а> bash ka taea e koe te whakarewa i tetahi anga whakahau tauwhitiwhiti i roto i tetahi o nga ipu para
Ko tehea me whiriwhiri koe?
Ko te meka kaore he whakahau mo te ao katoa. Me whakamahi he huinga o enei.
Ko nga raru o te peera
E rua nga momo hapa nui o te pod: nga hapa whakaoho me nga hapa wa whakahaere.
Hapa whakaoho:
ImagePullBackoff
ImageInspectError
ErrImagePull
ErrImageNeverPull
RegistryUnavailable
InvalidImageName
Hapa wa whakahaere:
CrashLoopBackOff
RunContainerError
KillContainerError
VerifyNonRootError
RunInitContainerError
CreatePodSandboxError
ConfigPodSandboxError
KillPodSandboxError
SetupNetworkError
TeardownNetworkError
Ko etahi hapa he nui ake i era atu. Anei etahi o nga hapa tino noa me pehea te whakatika.
ImagePullBackOff
Ka puta tenei hapa i te kore e taea e Kubernetes te tiki atahanga mo tetahi o nga ipu poro. Anei nga tino take e toru mo tenei:
He he te ingoa o te ahua - hei tauira, kua he koe ki roto, karekau ranei te ahua;
He tohu kore-kore i tohua mo te ahua;
Kei te rongoa te ahua ki roto i te rehita motuhake, kaore he whakaaetanga a Kubernetes ki te uru atu.
Ko nga take tuatahi e rua he ngawari ki te whakakore - whakatika noa te ingoa whakaahua me te tohu. I roto i te take o muri, me whakauru koe i nga tohu mo te rehita kati i roto i te Secret me te taapiri i nga hononga ki roto i nga putea. I roto i nga tuhinga Kubernetes he tauira me pehea e taea ai tenei.
Whakamuri Whakamuri Tutuki
Ka whiua e Kubenetes he hapa CrashLoopBackOff, ki te kore e taea e te ipu te timata. Ka tupu tenei ina:
He bug kei roto i te tono e aukati ana i te whakarewatanga;
Me ngana koe ki te toro atu ki nga rakau mai i te ipu ki te rapu i te take i kore ai. Mena he uaua ki te uru atu ki nga raarangi na te mea he tere rawa te tiimata o te ipu, ka taea e koe te whakamahi i te whakahau e whai ake nei:
kubectl logs <pod-name> --previous
Ka whakaatu i nga karere hapa mai i te whakaurunga o mua o te ipu.
RunContainerError
Ka puta tenei hapa i te kore e tiimata te ipu. He rite ki te wa i mua i te whakarewatanga o te tono. I te nuinga o nga wa ka puta mai i nga tautuhinga hē, hei tauira:
e ngana ana ki te whakairi i tetahi rōrahi kore-kore penei i te ConfigMap me nga mea ngaro;
he ngana ki te whakairi i te pukapuka panui-anake hei panui-tuhi.
He pai te kapa mo te wetewete i aua hapa kubectl describe pod <pod-name>.
Ko nga Pods kei te ahua Tarewa
I te wa i hangaia ai, ka noho tonu te putea ki te ahua Pending.
He aha i tupu ai tenei?
Anei nga take ka taea (Kei te whakaaro ahau kei te pai te mahi a te kaihōtaka):
Kaore i te nui nga rauemi a te roopu, penei i te mana tukatuka me te mahara, ki te whakahaere i te pod.
Kua whakauruhia te ahanoa ki te mokowāingoa e tika ana ResourceQuota me te hanga i te pākākano ka puta te mokowāingoa ki tua atu i te roherohenga.
Kua herea te Pod ki te Tarewa PersistentVolumeClaim.
I roto i tenei take, e tūtohu ana ki te whakamahi i te whakahau kubectl describe ka tirohia te waahanga Events:
kubectl describe pod <pod name>
Mena he hapa e pa ana ki ResourceQuotas, e taunaki ana kia tirohia nga rarangi tautau ma te whakamahi i te whakahau
kubectl get events --sort-by=.metadata.creationTimestamp
Kaore nga Pods kia Riri
Mena kua whakarārangihia te pod hei Running, engari kaore i te ahua Ready, ko te tikanga he tirotiro i tona reri (te tirotiro reri) rahua.
Ka pa ana tenei, karekau te pod e hono atu ki te ratonga karekau he waka e rere ki reira. Ko te korenga o te whakamatautau rite na nga raru o te tono. I tenei keehi, ki te rapu i te hapa, me tātari koe i te waahanga Events i roto i te putanga whakahau kubectl describe.
2. Ratonga tātaritanga
Mena kua whakarārangihia nga pods hei Running и Ready, engari kaore ano he whakautu mai i te tono, me tirotiro koe i nga tautuhinga ratonga.
Ko nga ratonga te kawenga mo te arahi i nga waka ki nga poti i runga i o raatau tapanga. Na reira, ko te mea tuatahi me mahi koe ko te tirotiro e hia nga pona e mahi ana me te ratonga. Ki te mahi i tenei, ka taea e koe te tirotiro i nga pito mutunga o te ratonga:
kubectl describe service <service-name> | grep Endpoints
Ko te Waahi Whakamutunga he uara takirua o te puka <IP-адрес:порт>, me te iti rawa kia kotahi te takirua pera kei roto i te whakaputanga (ara, kia kotahi te pene e mahi tahi ana me te ratonga).
Mena te waahanga Endpoins kau, e rua nga whiringa ka taea:
karekau he putunga me te tapanga tika (tohutohu: tirohia mena kua tika te kowhiringa o te mokowā ingoa);
He hapa kei roto i nga tapanga ratonga kei te kaiwhiriwhiri.
Mena ka kite koe i te rarangi o nga tohu mutunga engari kaore e taea te uru atu ki te tono, katahi ka raru te tangata hara targetPort i roto i te whakaahuatanga ratonga.
Me pehea te tirotiro i te mahi o te ratonga?
Ahakoa te momo ratonga, ka taea e koe te whakamahi i te whakahau kubectl port-forward ki te hono atu ki a ia:
Ko 3000 te tauranga ka whakatuwherahia e koe i runga i te rorohiko;
80 - tauranga i te taha ratonga.
3. Whakaurunga tātaritanga
Mena kua panui koe i tenei tawhiti, na:
kua whakarārangihia nga pods hei Running и Ready;
he pai te tohatoha o te ratonga ki waenga i nga poti.
Heoi, kaore e taea e koe te toro atu ki te taupānga.
Ko te tikanga ko te kaiwhakahaere Ingress kaore i te tika te whirihora. I te mea ko te kaiwhakahaere Ingress he waahanga tuatoru i roto i te kohinga, he rereke nga tikanga patuiro i runga i tona momo.
Engari i mua i to whakamahi i nga taputapu motuhake hei whirihora i te Ingress, ka taea e koe te mahi i tetahi mea tino ngawari. Ka whakamahia e te whakauru serviceName и servicePort ki te hono atu ki te ratonga. Me tirotiro koe mena kua tika te whirihora. Ka taea e koe tenei ma te whakamahi i te whakahau:
kubectl describe ingress <ingress-name>
Ki te poupou Backend kau, he nui te tūponotanga o te hapa whirihoranga. Mena kei te waahi nga pito o muri, engari kaore i te waatea te tono, ka pa atu pea te raru ki:
Whakauruhia nga tautuhinga urunga mai i te Ipurangi whanui;
Tautuhinga whakaurunga huinga mai i te Ipurangi whanui.
Ka taea e koe te tautuhi i nga raruraru o te hanganga ma te hono tika ki te putea Ingress. Ki te mahi i tenei, rapua tuatahi te Ingress Controller pod (kei roto pea i te mokowāingoa rerekē):
Inaianei ko nga tono katoa ki te tauranga 3000 i runga i te rorohiko ka tukuna ki te tauranga 80 o te putunga.
Kei te mahi inaianei?
Mena ae, ko te raruraru ko te hanganga. He mea tika kia mohiohia me pehea te kawe waka ki te tautau.
Mena kaore, ko te raruraru kei te kaiwhakahaere Ingress.
Ki te kore e taea e koe te whakauru i te kaiwhakahaere Ingress ki te mahi, me patuiro e koe.
He maha nga momo o nga kaiwhakahaere Ingress. Ko nga mea rongonui ko Nginx, HAProxy, Traefik, etc. (mo etahi atu korero mo nga otinga o naianei, tirohia to tatou arotake — āhua. whakawhiti.) Me titiro koe ki te aratohu rapurongoā i roto i nga tuhinga kaiwhakahaere e tika ana. No te mea ko te Ingress Nginx Ko te kaiwhakahaere Ingress tino rongonui, kua whakauruhia e matou etahi tohutohu i roto i te tuhinga hei whakaoti rapanga e pa ana ki a ia.
Te patuiro i te kaiwhakahaere Ingress Nginx
He mana te kaupapa Ingress-nginx mono mo kubectl. Kapa kubectl ingress-nginx ka taea te whakamahi mo:
te tātari i nga raarangi, nga pito o muri, nga tiwhikete, me etahi atu;
hononga ki Ingress;
te ako i te whirihoranga o naianei.
Ko nga whakahau e toru e whai ake nei ka awhina koe ki tenei:
kubectl ingress-nginx lint - arowhai nginx.conf;
kubectl ingress-nginx backend — ka torotoro i te tuara (he rite ki te kubectl describe ingress <ingress-name>);
kubectl ingress-nginx logs — ka taki i nga rakau.
Kia mahara, i etahi wa ka hiahia koe ki te tautuhi i te waahi ingoa tika mo te kaiwhakahaere Ingress ma te whakamahi i te haki --namespace <name>.
Whakarāpopoto
Raparongoā Ka taea e Kubernetes te wero ki te kore koe e mohio ki hea ka timata. Me whakatata tonu koe ki te raru mai i raro ki runga: timata me nga poro, ka haere ki te ratonga me te Ingress. Ko nga tikanga patuiro e whakaahuatia ana i tenei tuhinga ka taea te whakamahi ki etahi atu mea, penei: