Faida:
- Uwezo wa kuelewa vitu vya msingi (Pod, Usambazaji, Huduma, ConfigMap, Siri, Nafasi ya Majina) na falsafa ya kutangaza ya Kubernetes na kutoa maonyesho thabiti kwa akili ya bandia.
- Uwezo wa kufanya maonyesho tayari kwa uzalishaji na salama na mipaka ya rasilimali, ukaguzi wa afya (probes), lebo za picha zisizobadilika na RBAC finyu.
- Uwezo wa kuthibitisha muktadha sahihi kabla ya utekelezaji na kutumia nidhamu ya uendeshaji kavu na dry-run/diff
Ni rahisi kuendesha chombo kimoja. Lakini kuanzisha mfumo unaoeneza mamia ya kontena kwenye seva nyingi, huwashwa upya kiotomatiki moja wapo inapoacha kufanya kazi, kuuiga wakati mzigo unapoongezeka, na kuisasisha bila kupunguka kwa sifuri? Huo ni upangaji, na zana ya kawaida ya tasnia ni Kubernetes (K8s kwa ufupi) - jukwaa ambalo huweka, kupima na kudhibiti vyombo kiotomatiki katika kundi zima. Kubernetes ina nguvu lakini changamano: kila kitu kinafafanuliwa kwa faili ndefu, nyeti za YAML - zinazoitwa maonyesho. Hapa ndipo AI inatoa pumzi ya hewa safi; Kwa muktadha unaofaa, hutoa udhihirisho huu haraka na kuamua makosa yao ya kushangaza.
Lakini katika Kubernetes, faili ya maelezo isiyo sahihi inamaanisha kushindwa kusimamisha huduma nzima, kuongeza vibaya, au kuacha athari. Ni wajibu wako kuelewa na kuthibitisha kila faili ya maelezo ambayo AI inazalisha - hasa kabla ya kubectl kutumika.
Vitu vya msingi vya Kubernetes
Ili kukagua Kubernetes, unapaswa kujua dhana kuu:
- Pod: Kitengo kidogo zaidi cha kufanya kazi; Ina chombo kimoja au kadhaa. Kwa ujumla, Pod haitumiki moja kwa moja, lakini vitu vya wazazi vinavyoisimamia hutumiwa.
- Usambazaji: Inafafanua ni nakala ngapi za programu zitatumika, picha gani itatumia, na jinsi itakavyosasishwa. Ikiwa Pod itaanguka itaunda upya kiotomatiki.
- Huduma: Hutoa anwani ya mtandao isiyobadilika na kusawazisha mzigo kwenye maganda; Ingawa maganda huja na kuondoka, anwani ya ufikiaji haibadilika.
- ConfigMap na Siri: Huweka maadili ya usanidi na habari ya siri tofauti na Pods. ConfigMap ni ya mipangilio iliyo wazi, Siri ni ya thamani nyeti.
- Nafasi ya majina: Eneo ambalo kimantiki hugawanya na kutenga rasilimali (k.m. dev, prod).
- Ingress: Sheria iliyowekwa ambayo inaelekeza trafiki ya HTTP kutoka ulimwengu wa nje hadi kwa huduma kwenye nguzo.
Helm ni "msimamizi wa kifurushi" wa Kubernetes: hukuruhusu kuorodhesha maonyesho ya mara kwa mara (chati) na usakinishe kwa maadili tofauti katika mazingira tofauti na amri moja. AI hutoa orodha mbichi na chati ya Helm.
Kwa nini kuna vitu vingi? Kwa sababu falsafa ya msingi ya Kubernetes ni ya kubainisha: unafafanua "jinsi unavyotaka mfumo uonekane" (k.m. "kila mara uwe na nakala 3 za programu hii inayoendeshwa"), huku Kubernetes husogeza hali ya sasa karibu na hali hiyo inayotarajiwa. Ikiwa Pod inakufa, inaunda mpya; ikiwa nodi itashuka, huhamisha mzigo wa kazi kwenye nodi nyingine. Ndio maana maonyesho sio maagizo ya "fanya", lakini "wacha iwe hivi" mapishi. Kufahamu tofauti hii ni muhimu wakati wa kusoma maonyesho ambayo AI hutoa: kila kikoa kinaelezea sehemu ya hali inayotakiwa ya mfumo. Kikoa kisicho sahihi kinamaanisha Kubernetes anafanya kazi kuelekea lengo lisilo sahihi - na lengo hilo linatekelezwa kimya kimya, kila wakati.
Kidokezo: Katika Kubernetes, zana muhimu zaidi ya majaribio salama ni kubectl apply --dry-run=server -f file.yaml: inaonyesha kama seva itakubali na nini cha kufanya bila kutumia faili ya maelezo. Hakikisha kuwa umeendesha dry-run na kubectl diff kabla ya kutumia faili ya maelezo kwa utayarishaji.
Hatua kwa hatua: Kuunda maonyesho na AI
- Eleza maombi na hitaji. Jina la picha, bandari, nakala ngapi, mipaka ya rasilimali (CPU/kumbukumbu).
- Omba Usambazaji + Huduma. Kawaida zote mbili zinahitajika pamoja.
- Tenganisha usanidi na siri. Mipangilio ya ConfigMap, thamani nyeti kwa Siri.
- Ongeza ukaguzi wa afya. livenessProbe (inapatikana moja kwa moja) na ReadinessProbe (iko tayari kwa trafiki) ni muhimu.
- Weka kikomo cha rasilimali. Bila maombi/kikomo Pod inaweza kutumia nodi nzima.
- Thibitisha kwa `--dry-run` na `diff`, kisha utumie. Kwanza katika nafasi ya jina la jaribio.
Usalama: Hatari mahususi za Kubernetes
- Siri sio siri kabisa - ni msingi64 tu. Msingi wa kitu cha Siri ya Kubernetes64 husimba maadili; Huu sio usimbaji fiche, unasimbwa kwa urahisi. Kwa faragha ya kweli, usimbaji fiche wa etcd na vault ya nje (Vault, meneja wa siri ya wingu) inahitajika. Kamwe usifanye udhihirisho wa siri moja kwa moja kwa Git (kuna suluhisho za hii kama Siri Zilizofungwa / Siri za Nje).
- Weka kikomo cha rasilimali. Pod bila kikomo inaweza kuharibu nodi nzima na uvujaji wa kumbukumbu.
- Mamlaka ya chini (RBAC). Kwa Udhibiti wa Ufikiaji wa Wajibu, kila huduma/mtumiaji ana ruhusa anazohitaji pekee. AI wakati mwingine hutoa nguzo-admin kubwa; punguza hii chini.
- Usitumie tagi `ya hivi karibuni`. Hujui ni toleo gani linaloendeshwa na huwezi kuirejesha.
Tahadhari: kufuta kwa kubectl au kuomba vibaya kunaweza kuharibu Usambazaji wa moja kwa moja. Hakikisha umethibitisha ni nafasi gani ya majina uliyomo (kubectl config current-context) kabla ya kutekeleza amri; Kazi ya ajali ni janga la kawaida katika muktadha wa uzalishaji.
Dhihirisho ghafi dhidi ya jedwali la Helm
kigezo
Faili ghafi ya YAML
Chati ya usukani
Ufungaji
kubectl kuomba -f
ufungaji wa usukani
Multimedia (dev/prod)
Nakili-bandika, kuna makosa
Chati moja, thamani tofauti.yaml
Toleo/rejesho
kwa mkono
rahisi na urejeshaji usukani
Curve ya kujifunza
chini
kati
lini
Mazingira madogo, moja
Vyombo vya habari vingi, huduma ya kurudia
kesi tatu ndogo
Kesi ya 1 - siri ya huduma iliyoanguka. Pod ilikuwa inawashwa upya kila mara (CrashLoopBackOff). Timu ilitoa kumbukumbu na maelezo kwa AI; AI ilionyesha kuwa Pod haijawahi kuchukuliwa kuwa "tayari" kwa sababu ReadinessProbe ilikuwa inaangalia bandari isiyo sahihi. Walirekebisha bandari, huduma ikawa thabiti kwa dakika 10. Kuanzisha uhusiano huu mwenyewe kunaweza kuchukua saa.
Kesi ya 2 - kutokuweka kikomo kulivunja fundo. Hakukuwa na mipaka katika Usambazaji; Uvujaji wa kumbukumbu ulivimba Pod na kugonga nodi nzima, na kuleta huduma za jirani pia. Baada ya tukio hilo, walifanya AI kusema "ongeza maombi ya busara ya CPU/kumbukumbu na mipaka kwa Usambazaji wote" na kuifanya kuwa ya kawaida. Laini moja iliyokosekana inagharimu saa za muda wa kupumzika.
Kesi ya 3 - RBAC kubwa imenaswa. Wakati wa uchunguzi, faili ya maelezo ya Akaunti ya Huduma iliyotengenezwa na AI ilipatikana kuwa inahusishwa na jukumu la msimamizi wa nguzo - kumaanisha kuwa huduma inaweza kudhibiti nguzo nzima. Timu ilipunguza ruhusa ya kusoma Pods pekee kwenye nafasi yao ya majina. Kanuni ya upendeleo mdogo ilifunga uwezekano wa kuathiriwa kiusalama.
Violezo vinne vinavyoweza kunakiliwa
1) Usambazaji + Uzalishaji wa huduma:
Andika onyesho la Usambazaji na Huduma kwa Kubernetes. Utumizi: [AD], picha: [image: fixed-version], bandari: [X], replica: [N]. Kanuni:- Ongeza maombi ya CPU/kumbukumbu na mipaka.- Bainisha livenessProbe na ReadinessProbe.- Soma usanidi kutoka kwa ConfigMap, siri kutoka kwa kitu cha Siri; Usipachike thamani katika faili ya maelezo, tumia vishika nafasi. - USItumie lebo ya picha ": karibuni zaidi". Toa kwa maelezo.
2) Dhihirisha utatuzi wa makosa:
Pod ya sasa iko katika hali ya [CrashLoopBackOff / Pending / ImagePullBackOff]. Kulingana na faili ya maelezo ifuatayo na pato la 'kubectl elezea', orodhesha sababu kuu zinazowezekana kwa mpangilio wa uwezekano na toa amri ya uthibitishaji kwa kila moja. Dhihirisha: [YAML] Eleza: [OUTPUT]
3) Angalia usalama / uadilifu:
Angalia faili hii ya maelezo ya Kubernetes: je, kikomo cha rasilimali hakipo, je, kinakosa swali, je, kuna :tagi ya hivi punde zaidi, je kuna RBAC/ruhusa pana zaidi, je, siri hiyo imepachikwa kwenye faili ya maelezo? Andika matokeo kwa kufuata umuhimu na urekebishaji. Onyesha: [YAML]
4) Ubadilishaji kuwa chati ya Helm:
Geuza onyesho mbichi zifuatazo kuwa chati ya Helm inayoweza kutumika tena: ni maadili gani yanapaswa kwenda kwa values.yaml (picha, nakala, chanzo, mazingira)? Onyesha muundo wa chati na thamani za sampuli.yaml.Madhihirisho: [YAML]
Mwongozo dhaifu / Mwongozo thabiti
Dhaifu: "Andika Kubernetes YAML kwa maombi yangu."
Matokeo: hakuna uchunguzi, Usambazaji usio na kikomo na :lebo ya hivi karibuni, kupachika uwanda wa siri; Ukosefu wa usalama na dhaifu katika uzalishaji.
Imara: "Andika Usambazaji wa Kubernetes + Huduma. Picha myapp:1.4.2, replicas 3, bandari 8080. CPU 100m-500m, kumbukumbu 128Mi-512Mi ongeza maombi/kikomo. Weka uchunguzi wa uhai wa /healthz, uchunguzi wa utayari wa /tayari. Ipe Siri kutoka kwa maelezo ya e.mbe
Tofauti: toleo la pili la haraka linatoa kiwango, mipaka ya rasilimali, ukaguzi wa afya na sheria ya siri; Pato ni karibu na uzalishaji na salama.
Makosa ya kawaida
- Sio kuweka mipaka ya rasilimali. Pod moja inaweza kutumia nodi nzima.
- Sio kuongeza ukaguzi wa afya (probe). Kubernetes haiwezi kugundua Pod iliyoanguka/isiyo tayari.
- `: karibuni` tag. Haijulikani ni toleo gani linaloendeshwa, haliwezi kurejeshwa.
- Kutoa siri moja kwa moja kwa Git. Base64 sio usimbaji fiche; kila mtu anatatua.
- Kuendesha amri katika muktadha mbaya/nafasi ya jina. Njia ya kawaida ya kuacha kufanya kazi kwenye prod.
- kuruka `--kavu-kimbia`/`diff`. Bila kuona kitakachotokea kabla ya utekelezaji.
Kwa muhtasari
Kubernetes ni okestra yenye nguvu lakini changamano ambayo huweka, mizani, na kuboresha vyombo kiotomatiki kwenye kundi zima; Kila kitu kinafafanuliwa na YAML za wazi, ambazo Helm huweka kiolezo. AI hutoa kwa haraka maonyesho ya Usambazaji/Huduma na chati za Helm, hutatua hitilafu zisizoeleweka - lakini inabidi uulize kwa uwazi kikomo cha rasilimali, ukaguzi wa afya, lebo ya picha isiyobadilika, RBAC finyu na sheria za siri za usalama. --dry-run, diff na ukaguzi sahihi wa muktadha ni tabia zinazozuia ajali za prod.
Jukumu la maombi
Acha AI itengeneze faili ya maelezo ya sampuli ya programu iliyo na kiolezo cha "Usambazaji + Uzalishaji wa Huduma". Kisha: (1) Iangalie kwa kikomo cha rasilimali, uchunguzi, :karibuni, na siri kwa kiolezo cha "Usalama/usafi wa mwili"; (2) endesha kubectl apply --dry-run=server kwenye kundi la majaribio/minikube ikiwezekana na usome matokeo; (3) kumbuka vitu viwili muhimu zaidi vya usalama/uimara unavyopata havipo.
orodha ya ukaguzi
- [ ] Niliongeza toleo la picha, idadi ya nakala, bandari na mipaka ya rasilimali kwa ombi langu.
- [ ] Niliongeza uchanganuzi hai na utayari kwenye faili ya maelezo.
- [ ] Lebo ya picha imewekwa; Sikutumia : karibuni.
- [ ] Siri haijapachikwa katika faili ya maelezo; Nilitumia kitu cha Siri / kuba ya nje.
- [ ] Nilipunguza RBAC/ruhusa hadi ruhusa ndogo.
- [ ] Kabla ya kutuma ombi, nilithibitisha kuwa nilikuwa katika muktadha sahihi na kwamba --dry-run/diff outputs.