gruodžio 14, 2020

Dominykas Palšis: Ate, docker!?

Naujoji Kubernetes versija 1.20 žada reikšmingus pokyčius. Kaip konteinerių valdymo variklis (angl. Container Runtime) bus pradėtas naikinti Docker. Nors naujienos skambios ir svarbios, nėra priežasties panikuoti. Ypač, jei turite išorinį valdomų paslaugų tiekėją.

Mūsų esami ir potencialūs klientai šios transformacijos praktiškai nepajus. Nes tai susiję su pačių Kubernečių klasterių kūrimu ir valdymu, o šią dalį darbų praktiškai visada atlieka mūsų DevOps komanda, ar tai būtų mūsų „Private Cloud“, ar AWS, MS Azure, Google Cloud platformos.

Kas atsitiks?

Iki šiol Container Runtime variklis buvo plačiai naudojamas daugelyje Kubernetes klasterių, kur Docker buvo pagrindinis variklis. Dabar taip nebus. Kubernetes 1.20 versijoje Docker Container Runtime nebėra suderinamas su CRI (Container Runtime Interface), kuris tampa privalomai taikomu.

Reiktų žinoti, kad Docker priemonėmis sukurti konteinerių ruošiniai (angl. images) ir toliau puikiai veiks Kubernetes klasteriuose, kaip veikė iki šiol. Nesvarbu, kuris CRI palaikantis Container Runtime bus pasirinktas Kubernetes klasteryje.

Kas laukia Docker?

Šie pokyčiai nereiškia Docker mirties, kaip ir nereiškia, kad programuotojai nebegalės toliau naudoti Docker kaip konteinerių kūrimo ir vystymo (development) įrankio.

Docker išliks naudingas įrankis konteionerių kūrimui, o konteinerių ruošiniai (Container images), gaunami naudojant docker build komandą veikė ir toliau turėtų veikti Kubernetes klasteriuose.

Jei Jūs naudojate valdomų kubernečių paslaugą, pavyzdžiui Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) ar Azure Kubernetes Service (AKS), kurių standartinis Container Runtime yra „containerd“, prieš atnaujinant Kubernetes klasterio versiją turėsite tik įsitikinti, kad Jūsų Kubernetes klasterio darbiniai mazgai (worker nodes) naudoja kurią nors iš CRI palaikančių Container Runtime, nes naujoji Kubernetes versija 1.20 nebepalaiko Docker Container Runtime.

Pavojaus nestandartiniams konteineriams nėra

Jei turite nestandartinių ar perdarytų (customized) konteinerių, juos turėsite atnaujinti pagal naudojamame Kubernetes klasteryje pasirinkto Container Runtime reikalavimus. Paprasčiausia būtų šią funkciją patikėti valdomų Cloud paslauygų tiekėjui. BTT Cloud DevOps profesionalai padės užtikrinti sklandžią migraciją, bei tinkamą atnaujinimų ir testavimų plano įgyvendinimą.

Jei naudojatės dedikuotu Kubernetes cluster, pakeitimų neišvengsite. Įsidiegus Kubernetes v1.20 Docker Container Runtime palaikymas bus nutrauktas.

Po v1.22 atnaujinimo (planuojama, kad 2021 metų pabaigoje), Docker Container Runtime bus n ebepalaikomas, todėl esamus konteinerius konfigūruokite taip, kad jie naudotų Kubernetes palaikomus Containerd ar CRI.

Vytenis SAKALAS: Kubernetes said “Goodbye Docker, Hello Containers”. What should developers say?

Papildomos nuorodos:

Demystifying the Open Container Initiative (OCI) Specifications

Open Container Initiative

Kubernetes v1.20: The Raddest Release