Uru:
- Ikike ịghọta ihe ndị bụ isi (Pod, Deployment, Service, ConfigMap, Secret, Namespace) na nkà ihe ọmụma nkwupụta nke Kubernetes ma mepụta ihe ngosi siri ike maka ọgụgụ isi.
- Ikike ime ihe ngosi dị njikere maka mmepụta ma chekwaa ya na oke akụrụngwa, nyocha ahụike (nyocha), mkpado onyonyo na RBAC dị warara.
- Ike iji nyochaa ọnọdụ ziri ezi tupu e gbuo ya ma tinye ịdọ aka ná ntị na-agba ọsọ na nkụ-agba ọsọ / diff
Ọ dị mfe iji otu akpa. Mana ịmepụta usoro na-agbasa ọtụtụ narị akpa n'ofe ọtụtụ sava, na-amalite na-akpaghị aka mgbe otu n'ime ha daa, megharịa ya mgbe ibu na-abawanye, ma na-emelite ya na efu efu? Nke ahụ bụ orchestration, na ngwá ọrụ ọkọlọtọ ụlọ ọrụ bụ Kubernetes (K8s maka mkpụmkpụ) - ikpo okwu na-ebuga, akpịrịkpa, ma na-ejikwa akpa n'ofe ụyọkọ. Kubernetes dị ike mana mgbagwoju anya: a na-akọwa ihe niile site na ogologo faịlụ YAML nwere mmetụta na-emetụ n'ahụ - nke a na-akpọ ngosipụta. Nke a bụ ebe AI na-enye ume ikuku; Site n'ọnọdụ ziri ezi, ọ na-ewepụta ngwa ngwa ngosipụta ndị a wee depụta njehie ha dị omimi.
Mana na Kubernetes, ngosipụta na-ezighi ezi pụtara ịghara ibili ọrụ niile, ịgbatị ezighi ezi, ma ọ bụ hapụ enweghị ike. Ọ bụ ọrụ gị ịghọta na nyochaa nke ọ bụla gosipụtara AI na-emepụta - ọkachasị tupu kubectl tinye.
Kubernetes isi ihe
Iji nyochaa Kubernetes, ị kwesịrị ịma echiche ndị bụ isi:
- Pod: Nke kacha nta na-arụ ọrụ; O nwere otu akpa ma ọ bụ ọtụtụ. N'ozuzu, anaghị eji Pod ozugbo, mana ihe nne na nna na-ejikwa ya na-eji ya.
- Nkwanye: Na-akọwa ọnụọgụ ngwa nke ga-agba ọsọ, onyonyo ọ ga-eji, yana otu a ga-esi emelite ya. Ọ bụrụ na Pod daa, ọ ga-emegharị ya ozugbo.
- Ọrụ: Na-enye adreesị netwọk nke edoziri na nhazi ibu na pods; N'agbanyeghị na pọd na-abịa ma na-aga, adreesị nnweta anaghị agbanwe.
- ConfigMap na Nzuzo: Na-edobe ụkpụrụ nhazi na ozi nzuzo dị iche na Pods. ConfigMap bụ maka ntọala doro anya, Nzuzo bụ maka ụkpụrụ nwere mmetụta.
- Oghere aha: Mpaghara na-ekewa ma kewapụ akụrụngwa (dịka dev, prod).
- Ingress: Usoro edobere na-eduzi okporo ụzọ HTTP site na mpụga ụwa gaa na ọrụ dị na ụyọkọ.
Helm bụ "onye njikwa ngwugwu" nke Kubernetes: ọ na-enye gị ohere ịmepụta ihe ngosi ugboro ugboro (Chart) wee wụnye ha na ụkpụrụ dị iche iche na gburugburu dị iche iche na otu iwu. AI na-emepụta ma raw manifest na Helm chaatị.
Kedu ihe kpatara enwere ọtụtụ ihe? N'ihi na isi nkà ihe ọmụma nke Kubernetes bụ nkwupụta: ị na-akọwa "otu ị chọrọ ka usoro ahụ na-emecha na-ele anya" (dịka "na-enwe 3 ngwa ngwa a na-agba ọsọ mgbe niile"), ebe Kubernetes na-aga n'ihu na-akpali ọnọdụ dị ugbu a nso na ọnọdụ ahụ achọrọ. Ọ bụrụ na Pọd anwụọ, ọ na-emepụta nke ọhụrụ; ọ bụrụ na ọnụ na-agbada, ọ na-ebugharị ibu ọrụ ahụ na ọnụ ọzọ. Ọ bụ ya mere na-egosipụta na-adịghị "ime" iwu, ma "ka ọ dị ka nke a" Ezi ntụziaka. Ịghọta ọdịiche a dị oke egwu mgbe ị na-agụ ihe ngosi nke AI na-emepụta: ngalaba ọ bụla na-akọwa akụkụ nke ọnọdụ achọrọ nke usoro ahụ. Ngalaba na-ezighi ezi pụtara Kubernetes na-arụ ọrụ maka ebumnuche na-ezighi ezi - yana ebumnuche ahụ na-agba nkịtị, na-anọgidesi ike na-amanye.
NDỤMỌDỤ: Na Kubernetes, ngwá ọrụ nyocha kachasị mkpa bụ kubectl apply --dry-run=server -f file.yaml: ọ na-egosi ma ihe nkesa ahụ ọ ga-anabata yana ihe ị ga-eme na-etinyeghị ihe ngosi ahụ n'ezie. Jide n'aka na ị ga-agba ọsọ-akọrọ na kubectl diff tupu itinye ihe ngosi na prod.
Nzọụkwụ site nzọụkwụ: Ịmepụta ngosipụta na AI
- Kọwaa ngwa na mkpa. Aha onyonyo, ọdụ ụgbọ mmiri, ndegharị ole, oke akụrụngwa (CPU/nchekwa).
- Rịọ ibunye + Ọrụ. A na-achọkarị ha abụọ ọnụ.
- Nhazi dị iche iche na nzuzo. Ntọala na ConfigMap, ụkpụrụ nwere mmetụta maka Nzuzo.
- Tinye nyocha ahụike. livenessProbe (ọ dị ndụ) na readinessProbe (ọ dị njikere maka okporo ụzọ) dị oke egwu.
- Tọọ oke akụrụngwa. Enweghị arịrịọ/oke Pod nwere ike iri ọnụ ọnụ dum.
- Nyochaa na '--akọrọ-run' na 'diff', wee tinye. Mbụ n'ime oghere aha ule.
Nchekwa: Kubernetes kpọmkwem ihe egwu
- Ihe nzuzo abụghị ihe nzuzo - ọ bụ naanị base64. Ihe nzuzo Kubernetes base64 na-etinye ụkpụrụ; Nke a abụghị izo ya ezo, ọ na-adị mfe decryption. Maka ezi nzuzo, ihe nzuzo wdgd na oghere mpụga (Vault, njikwa nzuzo igwe ojii) achọrọ. Emela ihe nzuzo na-egosi Git ozugbo (enwere ihe ngwọta maka nke a dị ka ihe nzuzo echekwara / nzuzo).
- Tọọ oke akụrụngwa. Pọd na-enweghị oke nwere ike daa ọnụ ọnụ ya niile site na mgbapu ebe nchekwa.
- Ikike kacha nta (RBAC). Site na njikwa nnweta dabere na ọrụ, ọrụ/onye ọrụ ọ bụla nwere naanị ikike ọ chọrọ. AI mgbe ụfọdụ na-enye nnukwu ụyọkọ-admin; mechie nke a.
- Ejila akara ngosi 'kacha ọhụrụ'. Ị maghị ụdị nke na-agba ọsọ ma ị nweghị ike ịtụgharị ya azụ.
Akpachara anya: kubectl ihichapụ ma ọ bụ ntinye na-ezighi ezi nwere ike ibibi ntinye ọrụ dị ndụ. Jide n'aka na ị ga-enyocha aha ebe ị nọ na (kubectl config current-context) tupu ịme iwu; Ọrụ mberede bụ ọdachi na-emekarị na mmepụta ihe.
Raw ngosi vs. Helm okpokoro
akara
Ihe ngosi YAML raw
chaatị Helm
Nwụnye
kubectl tinye -f
hel wụnye
Multimedia (mmepụta/prod)
Detuo-mado, ọ na-enwekarị mperi
Otu eserese, ụkpụrụ dị iche iche.yaml
Ụdị/nlaghachi azụ
site n'aka
dị mfe na helm rollback
Usoro mmụta
ala
ọkara
mgbe
Obere, otu gburugburu
Mgbasa ozi ọtụtụ, ọrụ ugboro ugboro
Obere ikpe atọ
Ikpe 1 - nzuzo nke ọrụ mebiri emebi. Otu pọd na-amalitegharị mgbe niile (CrashLoopBackOff). Ndị otu ahụ nyere ndekọ ma gosipụta AI; AI gosipụtara na ọ dịghị mgbe a na-ewere Pod ahụ dị ka "njikere" n'ihi na njikereProbe na-ele ọdụ ụgbọ mmiri na-ezighị ezi. Ha doziri ọdụ ụgbọ mmiri ahụ, ọrụ ahụ kwụsịrị na nkeji 10. Iji aka guzobe mmekọrịta a nwere ike were awa.
Ikpe 2 - enweghị oke oke mebiri eriri ahụ. Enweghị oke na ntinye ọrụ; Mwepu ebe nchekwa kpuchiri Pod ahụ wee daa ọnụ ọnụ ahụ dum, wedatakwa ọrụ ndị agbata obi. Mgbe ihe ahụ mechara, ha mere AI na-ekwu "gbakwunye arịrịọ CPU / ebe nchekwa ezi uche na oke na ntinye niile" wee mee ka ọ bụrụ ọkọlọtọ. Otu ahịrị na-efu na-efu ọtụtụ awa nke nkwụsịtụ.
Ikpe 3 - nnukwu RBAC weghaara. N'oge nyocha, a chọpụtara na ngosipụta ServiceAccount AI mepụtara ka ejikọtara ya na ọrụ ụyọkọ - nke pụtara na ọrụ nwere ike ijikwa ụyọkọ ahụ dum. Ndị otu ahụ wepụrụ ikike ịgụ naanị Pods na oghere aha ha. Ụkpụrụ nke obere ihe ùgwù mechiri adịghị ike nchekwa.
Ndebiri anọ enwere ike iṅomi
1) Nbunye + mmepụta ọrụ:
Dee akwụkwọ ozi nnyekwasa na ọrụ maka Kubernetes. Ngwa: [AD], onyonyo: [onyinyo: ụdị-ụdị], ọdụ ụgbọ mmiri: [X], oyiri: [N]. Iwu: - Tinye CPU / ebe nchekwa arịrịọ na oke.- Kọwaa livenessProbe na njikereProbe.- Gụọ nhazi site na ConfigMap, ihe nzuzo sitere na ihe nzuzo; Etinyekwala ụkpụrụ na ngosipụta, jiri ndị na-edebe ebe. - ejikwala ihe oyiyi mkpado ": ọhụrụ". Nye ya na nkọwa.
2) Gosipụta ihie ụzọ:
Pod dị ugbu a dị na steeti [CrashLoopBackOff / Pending/ImagePullBackOff]. Dị ka ihe ngosi na-esonụ si dị na 'kubectl kọwara' mmepụta, depụta ihe nwere ike ịkpata mgbọrọgwụ n'usoro nke puru omume wee nye iwu nkwenye maka nke ọ bụla. Ngosipụta: [YAML] Kọwaa: [OUTPUT]
3) Nleba nchekwa / iguzosi ike n'ezi ihe:
Lelee ihe ngosi Kubernetes a: oke akụ na-efu efu, ọ na-efu prob, enwere mkpado: kacha ọhụrụ, enwere RBAC/ikike sara mbara nke ukwuu, ihe nzuzo etinyere na ngosipụta? Dee nchoputa ahụ n'usoro dị mkpa yana mgbazi. Ihe ngosi: [YAML]
4) Ntughari gaa na chaatị Helm:
Tụgharịa ndị a raw na-egosipụta ka ọ bụrụ chaatị Helm reusable: kedu ụkpụrụ kwesịrị ịpụ na values.yaml (onyinyo, oyiri, isi iyi, gburugburu)? Gosi nhazi eserese yana ụkpụrụ nlele.yaml.Ngosipụta: [YAML]
Ngwa ngwa adịghị ike / Ike siri ike
Adịghị ike: "Dee Kubernetes YAML maka ngwa m."
Nsonaazụ: a dịghị-nyocha, enweghị-oke Njikwa n'ọrụ na : latest mkpado, agbakwunyere nzuzo larịị; Enweghị nchebe na adịghị ike na prod.
Ike: "Dee Kubernetes Deployment + Service. Image myapp: 1.4.2, 3 oyiri, 8080 ọdụ ụgbọ mmiri. CPU 100m-500m, ebe nchekwa 128Mi-512Mi tinye arịrịọ / oke. Tinye liveness nyocha maka / healthz, njikere nyocha maka / njikere. Gụọ ya Nzuzo dont na-egosi na ihe nzuzo. "
Ọdịiche: ụdị ngwa ngwa nke abụọ na-enye ọnụ ọgụgụ, oke akụrụngwa, nyocha ahụike na iwu nzuzo; Ihe mmepụta dị nso na mmepụta na nchekwa.
Mmejọ ndị nkịtị
- Anaghị edobe oke akụrụngwa. Otu pọd nwere ike iri ọnụ ọnụ dum.
- Anaghị agbakwunye nyocha ahụike (nyocha). Kubernetes enweghị ike ịchọpụta Pọd dara ada/adịghị adịla njikere.
- mkpado `: kacha ọhụrụ`. Amabeghị ụdị ụdị nke na-agba ọsọ, enweghị ike ịtụgharị ya azụ.
- Na-enyefe ihe nzuzo ahụ ozugbo na Git. Base64 abụghị izo ya ezo; onye ọ bụla na-edozi ya.
- Na-agba ọsọ iwu na ọnọdụ na-ezighi ezi/oghere aha. Ụzọ kachasị ewu ewu iji daa na prod.
- na-awụ '--akọrọ-agba ọsọ'/`iche'. Ahụghị ihe ga-eme tupu mmejuputa iwu.
Na nchịkọta
Kubernetes bụ onye na-agụ egwú siri ike mana ọ gbagwojuru anya nke na-ebuga, tụọ, ma na-ebuli arịa n'ofe ụyọkọ; A kọwapụtara ihe niile site na YAML pụtara ìhè, nke Helm nwalere. AI ngwa ngwa na-emepụta ihe ngosi / ọrụ na eserese Helm, na-edozi ahụhụ dị omimi - mana ị ga-arịọrịrị maka oke akụrụngwa, nlele ahụike, mkpado onyonyo na-enweghị ike ịgbanwe, RBAC dị warara na iwu nchekwa nzuzo. --akọrọ-agba ọsọ, iche iche na nlele ọnọdụ ziri ezi bụ omume na-egbochi mkpọka prod.
Ọrụ ngwa
Mee ka AI wepụta ngosipụta maka ngwa nlele nwere ndebiri “Deployment + Ọgbọ ọrụ”. Mgbe ahụ: (1) Were template "Security/sanity check" nyochaa maka oke akụrụngwa, nyocha, : kacha ọhụrụ na nzuzo; (2) gbaa kubectl apply --dry-run=ihe nkesa na ụyọkọ ule/minikube ma ọ bụrụ na ọ ga-ekwe omume wee gụọ mmepụta; (3) rịba ama ihe abụọ kachasị mkpa nchekwa/ike siri ike ịchọta na-efu.
ndetu
- [] M gbakwunyere ụdị onyonyo, ọnụọgụ nke oyiri, ọdụ ụgbọ mmiri na oke akụrụngwa na arịrịọ m.
- [ ] Agbakwunyere m ịdị ndụ na nyocha ịdị njikere na ngosipụta.
- [] Edoziri mkpado onyonyo; Ejighị m : latest.
- [ ] Nzuzo adịghị agbakwunyere na ngosipụta; Eji m ihe nzuzo mee ihe/oghere mpụga.
- [ ] Ewebiri m RBAC/ikike ka ọ bụrụ ikike kacha nta.
- [] Tupu itinye akwụkwọ, achọpụtara m na m nọ n'ọnọdụ ziri ezi yana ihe --dry-run/diff pụta.