Kata Containers 20. jūlijā izlaida versiju 4.0.0, kurā konteineru izpildlaiks pārrakstīts no Go valodas uz Rust. Jaunais izpildlaiks ar nosaukumu runtime-rs kļūst par noklusēto, bet vecais Go izpildlaiks pāriet atbalsta režīmā bez jaunām funkcijām.
Kata Containers palaiž katru konteineri savā vieglajā virtuālajā mašīnā. Tas dod stingrāku izolāciju nekā parastie Linux konteineri, kuri dala vienu kodolu. Vienlaikus saglabājas konteineru palaišanas ātrums. Projektu uztur OpenInfra Foundation. Versijas izlaides piezīmes Rust pāreju sauc par šī laidiena galveno jaunumu.
Kāpēc komanda pārrakstīja izpildlaiku
Go izpildlaiks Kata Containers dzinē kalpoja gadiem. Rust versija dod trīs praktiskus ieguvumus: mazāku atmiņas patēriņu, mazāku palaišanas aizkavi un atmiņas drošību, ko valoda pārbauda kompilēšanas laikā. Izlaides piezīmes runtime-rs raksturo kā gatavu ražošanas videi, taču brīdina, ka esošie lietotāji pamanīs dažas atšķirības konfigurācijā un uzvedībā, pārejot no vecā izpildlaika.
Būves attēli rāda, ka projekts izmanto Rust 1.95 un Go 1.25.12. Go kods paliek shim slānī, bet pats izpildlaiks tagad ir Rust.
Atmiņas drošība šeit nav abstrakts solījums. Izpildlaiks pārvalda virtuālās mašīnas dzīves ciklu, apstrādā ārējas komandas un darbojas ar priviliģētām tiesībām. Tieši šādā kodā C un Go valodas pieļauj kļūdas ar rādītājiem vai sacīkstes stāvokļus, kuri kļūst par drošības caurumiem. Rust šo kļūdu klasi bloķē jau kompilēšanas laikā, tāpēc uzbrukuma virsma daudznomnieku vidē samazinās.
4.0.0 laidiens sniedz nozīmīgus drošības un veiktspējas uzlabojumus, lai vēl vairāk nostiprinātu Kata Containers kā daudznomnieku konteineru izpildlaiku. Šī laidiena centrā ir izpildlaika pārrakstīšana no Go uz Rust.
Go izpildlaiks paliek, bet iesaldēts
Vecais Go izpildlaiks netiek izmests uzreiz. Sākot ar 4.0.0, tas ieiet norieta fāzē: jaunas funkcijas tajā vairs nepieņem, bet kļūdu un drošības labojumus komanda joprojām pieņem un pat mudina iesniegt. Pilnīga izņemšana nenotiks pirms versijas 5.0.0, ko projekts prognozē aptuveni 18 mēnešus pēc 4.0.0. Tas dod komandām gandrīz pusotru gadu, lai pārbaudītu savu konfigurāciju uz jaunā izpildlaika.
Komanda cenšas panākt funkciju paritāti starp abām versijām, kur tas iespējams. Dažas iespējas, kuras jau agrāk bija atzīmētas kā novecojušas vai neuzturētas, jaunajā izpildlaikā vairs neparādās. Vienlaikus runtime-rs jau tagad piedāvā dažas iespējas, kuru Go versijā nebija.
Praktiski tas nozīmē, ka pēc jaunināšanas uz 4.0.0 klasteris pēc noklusējuma sāk lietot Rust izpildlaiku. Komandām, kuras balstās uz specifisku konfigurāciju, vispirms jāpārbauda sava iestatījumu datne pret jauno izpildlaiku testa vidē. Ja kāda funkcija runtime-rs vēl nav pieejama, Go izpildlaiku joprojām var iestatīt manuāli, jo tas paliek komplektā līdz 5.0.0. Šī pārklāšanās ir galvenais iemesls, kāpēc projekts veco izpildlaiku iesaldē, nevis izmet uzreiz.
Saikne ar AI aģentu izolāciju
Kata Containers pēdējos gados iznira kā pamats AI aģentu smilškastēm. Aģents, kurš pats raksta un palaiž kodu, ir grūti prognozējams, tāpēc to labāk turēt atsevišķā virtuālajā mašīnā, nevis kopīgā kodolā. Šeit svarīga ir palaišanas aizkave: smilškastes rodas un pazūd ļoti bieži, dažkārt sekundēs. Izdevums AIwire tieši šo veiktspējas rezervi saista ar aģentu darba tempu, kur izolētās vides jāceļ un jānojauc aģenta ātrumā.
Zemāka atmiņas pēda ļauj vienā resursdatorā uzturēt vairāk vienlaicīgu smilškastu. Tas ir tiešs ietaupījums, kad vienā mašīnā vajag simtiem izolētu aģenta sesiju.
Izvēle starp vieglu virtuālo mašīnu un parastu konteineru šeit nav teorētiska. Parastie konteineri dala resursdatora kodolu caur namespaces un cgroups. Ja aģents atrod kodola kļūdu, tas var izkļūt uz resursdatoru un piekļūt citu nomnieku datiem. Kata katram konteinerim dod atsevišķu kodolu virtuālajā mašīnā, tāpēc kodola caurums vienā smilškastē neapdraud pārējās. Šī pati īpašība padara Kata par pamatu Confidential Containers projektam, kur nomnieka slodze paliek šifrēta pat no mākoņa operatora.
Hipervizori un arhitektūras
runtime-rs strādā ar vairākiem hipervizoriem: QEMU, Cloud Hypervisor, Firecracker un Dragonball, ko izstrādājis Ant Group kā speciālu hipervizoru Kata vajadzībām. Atbalstītās aparatūras arhitektūras aptver ARM64, Intel un AMD x86_64, IBM s390x un PowerPC. RISC-V atbalsts pagaidām ir eksperimentāls.
Pirms 4.0.0 komanda izlaida starpversijas 3.30.0 līdz 3.32.0, pēdējo 22. jūnijā. Tās sagatavoja pāreju uz Rust izpildlaiku, pakāpeniski tuvinot abu versiju iespējas. Uzstādīšanas instrukcijas un dokumentācija ir pieejama projekta oficiālajā vietnē.
Kata Containers saknes ir Intel Clear Containers un Hyper.sh runV projektos, kuri 2017. gadā apvienojās. Kopš tā laika izpildlaiks integrējas ar Kubernetes caur containerd un CRI-O, tāpēc to var iespraust esošā klasterī bez lietojumprogrammu pārrakstīšanas. Dragonball hipervizors savukārt ir iebūvēts pašā izpildlaikā, tāpēc atsevišķu QEMU procesu palaist nav nepieciešams. Tas vēl vairāk saīsina palaišanas ceļu, kas svarīgi tieši biežai smilškastu ciklēšanai.
Kata Containers 4.0.0 pabeidz pāreju uz Rust dzini, ko projekts plānoja vairākus gadus. Nākamais atskaites punkts ir 5.0.0, kad Go izpildlaiku varētu izņemt pavisam.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.