Migracija — noter in ven
Odsotnost vezanosti je obljuba samo, če jo lahko dejansko uveljaviš. Ta stran dokumentira predajo (handover: premik clustra med gostovano kontrolno ravnino kubehz in tvojo lastno infrastrukturo) v obe smeri, natanko tako, kot deluje danes.
Kaj je danes v živo
Gostovano → lastno gostovanje (eject) je v živo. Svojo gostovano kontrolno ravnino lahko premakneš na lastno Hetzner infrastrukturo in pri tem ohraniš kriptografsko identiteto clustra: tvoji workerji, kubeconfigi in skrivnosti delujejo naprej.
Lastno gostovanje → gostovano (adopt) je v živo kot recreation. kubehz postavi svežo gostovano kontrolno ravnino, ti pa nanjo preseliš svoje delovne obremenitve. Cluster dobi novo identiteto. Adopt z ohranjeno identiteto je načrtovan; dokler ne izide, ta stran to pove naravnost, namesto da bi se pretvarjala drugače.
Koncepte za vsem tem (zakaj se seli prav identiteta in zakaj se nič ne izbriše brez tvoje privolitve) najdeš na strani Kako deluje predaja.
Obe smeri
| Smer | Kaj se zgodi | Status |
|---|---|---|
| Eject: gostovano → tvoja infrastruktura | Tvoja gostovana kontrolna ravnina se obnovi na strojih, ki jih imaš v lasti, z isto identiteto. Workerji ostanejo. | V živo |
| Adopt: tvoj cluster → gostovano | kubehz ustvari svežo gostovano kontrolno ravnino; delovne obremenitve preseliš nanjo. Nova identiteta. | V živo (recreation) |
Eject je za trenutek, ko želiš polno lastništvo: zahteve skladnosti, nadzor stroškov v velikem obsegu ali preprosto zato, ker lahko. Izhodna vrata so dokaz, da je gostovanje izbira in ne past.
Adopt je za trenutek, ko kontrolne ravnine nočeš več upravljati sam in na svojem računu obdržiš samo workerje.
Najprej pride ocena
Nič se ne premakne, dokler nisi videl načrta. Platforma nenehno zbira zgolj bralno oceno (assessment) tvojega clustra (različica Kubernetesa, podatkovna shramba, storage classi, load balancerji, upravljanje CAPI) in iz nje izpelje pot izvedljivosti ter poročilo o prevedbi, seznam stvari, ki se ne preselijo samodejno in zahtevajo tvojo pozornost:
- Storage classi, vezani na ponudnika: volumni, ki jih je ustvaril CSI gonilnik enega ponudnika, kontrolni ravnini ne sledijo k drugemu.
- Storitve tipa
LoadBalancer: oblačni load balancerji so vezani na ponudnika, ki jih je ustvaril. - Clustri, upravljani s CAPI: cluster, katerega življenjski cikel vodi Cluster API, potrebuje zaustavljeno upravljanje, preden je predaja smiselna.
Kadar koli si jo lahko ogledaš prek CLI (bere register tvojega tenanta, zato potrebuje KUBEHZ_TOKEN):
lo kubehz assessNadzorna plošča prikazuje isto oceno in izvedljivost na strani clustra. Pot izvedljivosti je ena od:
| Pot | Pomen |
|---|---|
restore | Selitev prek posnetka + vsaditve identitete. Kar eject uporablja danes. |
recreation | Sveža kontrolna ravnina; delovne obremenitve se preselijo s ponovno uveljavitvijo. Kar adopt uporablja danes. |
graft | Prenos v živo na mestu. Ta se oceni in izpiše, a še ni izvedljiv; je na načrtu. |
Gostovano → lastno gostovanje (eject)
Eject premakne tvojo gostovano kontrolno ravnino na infrastrukturo v tvoji lasti in ohrani identiteto clustra: certifikatno agencijo (CA), ključe za podpisovanje service accountov, šifrirni ključ za skrivnosti in vsak objekt v clustru (prek posnetka etcd). Ker se identiteta ohrani:
- Tvoji workerji delujejo naprej: CA clustra jim je že zaupanja vredna in po preklopu se znova povežejo z istim logičnim clustrom.
- Obstoječi kubeconfigi in žetoni service accountov ostanejo veljavni.
- Skrivnosti se dešifrirajo: šifrirni ključ potuje s clustrom.
Potek
Ocena:
lo kubehz assess(ali nadzorna plošča). Potrdi, da je potrestore, in preberi poročilo o prevedbi.Začni predajo: prek zavihka Predaja (Handover) clustra v nadzorni plošči (ali prek API-ja). Izbereš ciljni gonilnik (
kubeadmalikubeone) in ali se endpoint ohrani ali zamenja.Platforma izvozi: sestavi izvozni sveženj (PKI clustra, ključe service accountov in šifrirni ključ) ter naredi svež posnetek etcd.
Prenesi sveženj: prenos zahteva ponovno prijavo, je enkraten in se revizijsko beleži. Sveženj je korenska identiteta tvojega clustra: ravnaj z njim kot s korensko poverilnico in lokalno kopijo izbriši, ko je predaja končana.
Pripravi cilj: stroj (ali stroje) v tvoji lasti, dosegljiv tvojim workerjem. Konkretno:
- Dosegljiv na
6443z vsakega workerja: to je končna točka API, ki jo nastavi lok8s. Cilj za NAT brez vhodnega6443je običajni vzrok, da obnova navidez uspe, workerji pa nato obvisijo. - Dimenzioniraj nad rezervacijami, ne nanje. Na vozlišču kontrolne ravnine lok8s rezervira
400mCPU in1 GiBpomnilnika za sistem in kubelet še pred kakršnimkoli workloadom, kubelet pa začne izseljevati pode, ko je na voljo manj kot500 MiB. 2 GB so torej spodnja meja, ne delovna velikost. Naše referenčne konfiguracije uporabljajocx33za kontrolne ravnine. Glej vodnik KubeOne. - Eno ali tri vozlišča, nikoli dve: etcd potrebuje liho število za kvorum.
- Vozlišče poganja največ 110 podov. Za toliko je nastavljen kubelet kontrolne ravnine.
- lok8s nameščen na cilju, z ustreznimi pravicami.
receiveteče na tisti napravi, ne na vaši delovni postaji: piše v/etc/kubernetesin/var/lib/etcdter kličekubeadm. - Paket na cilju. Korak 4 ga prenese tja, kjer ste ga zagnali; prenesite ga po zaupanja vrednem kanalu in izbrišite obe kopiji, ko korak 7 potrdi. Med prenosom je to korenska identiteta vaše gruče.
- Čisto vozlišče.
receivezavrne napravo, ki že nosi stanje Kubernetesa; na že uporabljenem vozlišču najprej sami zaženitekubeadm reset.
- Dosegljiv na
Obnova na cilju:
bash# gonilnik kubeadm: zaženi na samem ciljnem nodu lo kubehz handover receive --bundle ./bundle.tar.gz # gonilnik kubeone: najprej vsadi identiteto, nato vzpostavi kot običajno lo kubehz handover preseed --bundle ./bundle.tar.gz --node "<node-ip>" lo provisionreceivesprejme--snapshot <datoteka>za obnovitev posnetka etcd, ki si ga prenesel ločeno,--single-nodeza enovozliščno kontrolno ravnino in--forceza prepis vozlišča, ki že nosi stanje Kubernetesa (namesto zgornjegakubeadm reset).preseedvozlišče doseže prek SSH: kako, določajo--user(privzetoroot),--port(privzeto22) in--ssh-key.receivevsadi izvoženo identiteto, obnovi posnetek etcd in zažene kontrolno ravnino, ki je tvoj cluster: ista CA, isti ključi, isti objekti.Preklop (cutover): endpoint DNS clustra usmeri na novo kontrolno ravnino. Workerji se znova povežejo sami; na njih se nič ne spremeni. Nato potrdi preklop: platforma čaka na tvojo izrecno potrditev in pred njo ne naredi ničesar destruktivnega.
Razgradnja (decommission): stara gostovana kontrolna ravnina se odstrani šele, ko veljata dve stvari. Platforma je videla tvojo novo kontrolno ravnino živo (heartbeat), in razgradnjo si izrecno potrdil. Do takrat stara kontrolna ravnina ostane nedotaknjena kot tvoja rezerva.
Kaj narediš ob preklopu
Edino dejanje, ki je samo tvoje: endpoint DNS clustra usmeriš na novo kontrolno ravnino. Vse pred tem je povratno; platforma tvojega DNS-a nikoli ne preklopi namesto tebe. Če kar koli izgleda narobe, ne potrdi: zaustavljena predaja ohrani celotno stanje na obeh straneh.
Lastno gostovanje → gostovano (adopt)
Adopt preda upravljanje kontrolne ravnine kubehzu: na svojem Hetzner računu obdržiš samo workerje. Danes adopt deluje kot recreation, in to povemo naravnost:
- kubehz ustvari svežo gostovano kontrolno ravnino z novo identiteto (nova CA, novi ključi). Na platformi je to nov cluster.
- Delovne obremenitve preseliš s ponovno uveljavitvijo (iz svojega GitOps repozitorija ali manifestov) na nov cluster. To je trenutek, ko se deklarativna postavitev obrestuje.
- Trajni podatki se ne preselijo samodejno. Obnovi jih iz lastnih varnostnih kopij ali jih znova vzpostavi. Samodejnega prenosnika podatkov še ni, zato se ne pretvarjamo, da obstaja.
- Nodi se pridružijo na novo: workerji se zaženejo proti novi kontrolni ravnini prek naborov workerjev; stari kubeconfigi in žetoni ne veljajo naprej.
Ocena in poročilo o prevedbi se izvedeta najprej, natanko tako kot pri ejectu, o storageu, vezanem na ponudnika, load balancerjih in upravljanju CAPI torej veš, preden se kar koli ustvari.
Zakaj recreation? Upravljani sklad kontrolne ravnine skuje identiteto clustra ob ustvarjanju. Zanesljiva vsaditev tvoje obstoječe identitete zahteva korak »ustvari zaustavljeno, nato vsadi«, ki je zasnovan in načrtovan. Ko izide, bo adopt ohranjal identiteto tako, kot jo eject že danes. Do takrat adopt pomeni: sveža kontrolna ravnina, delovne obremenitve ponovno uveljavljene.
Brez vezanosti: z migracijo ali brez nje
Predaja je močna oblika obljube, a vezan nisi bil nikoli:
- lok8s je odprtokoden in vzpostavi tvoj cluster na tvojem Hetzner računu.
- Integracija z nadzorno ploščo je opcijska in samo odhodna; kubehz nima nobenih dohodnih poverilnic do tvojega clustra.
- Odstranitev kubehz z lastno gostovanega clustra sta dva ukaza:
lo kubehz deregisterga odjavi (potrebujeKUBEHZ_TOKEN), izbris namespaceakubehz-systempa odstrani znotrajclustrskega agenta. RBAC agenta na ravni clustra (njegovaClusterRoleinClusterRoleBindingterRolevkube-system) namespace preživi; če želiš čist cluster, izbriši tudi te objekte. Tvoj cluster deluje naprej natanko tako kot prej.
Naslednji koraki
- Kako deluje predaja: identiteta proti infrastrukturi in zakaj proces čaka nate
- Gostovana kontrolna ravnina: gostovana pot
- Nabori workerjev: kje v gostovanem načinu živijo tvoji workerji
- KubeOne na Hetznerju: cilj z lastnim gostovanjem, kjer pristane največ ejectov
Status dokumenta
| Vidik | Podrobnost |
|---|---|
| Stanje | eject v živo (na osnovi obnove); adopt v živo kot recreation; adopt z ohranjeno identiteto načrtovan |
| Zadnji pregled | 2026-09-05 |