Späť na blog

Ako nainštalovať a používať Kubernetes na Ubuntu 20.04

Ako nainštalovať a používať Kubernetes na Ubuntu 20.04

Úvod

Kubernetes je open-source nástroj, ktorý je kľúčový v orchestrácii kontajnerov. Kubernetes funguje tak, že orchestruje a spravuje clustery vo veľkom rozsahu v rôznych cloudových prostrediach alebo dokonca na lokálnych serveroch. Cluster je skupina hostiteľov určená na spúšťanie kontajnerizovaných aplikácií a služieb. Cluster potrebuje na fungovanie minimálne dva uzly – jeden master uzol a worker uzol. S ohľadom na škálovateľnosť máte možnosť rozšíriť cluster o toľko worker uzlov, koľko je potrebné.

Uzol v Kubernetes označuje server. Master uzol je server, ktorý spravuje stav clustera. Worker uzly sú servery, na ktorých bežia pracovné zaťaženia – zvyčajne ide o kontajnerizované aplikácie a služby.

Tento sprievodca vás prevedie krokmi inštalácie a nasadenia Kubernetes clustera pozostávajúceho z dvoch uzlov na Ubuntu 20.04. Ako už bolo spomenuté, mať dva uzly je najzákladnejšia konfigurácia pri práci s Kubernetes. Po pochopení základov máte tiež možnosť pridať ďalšie worker uzly. Ďalej vám ukážeme, ako prepojiť tieto dva servery, aby master uzol mohol ovládať worker uzol.

Na otestovanie našej konfigurácie nasadíme do clustera Docker kontajner, v ktorom beží webový server Nginx do clustera. Toto je typické reálne využitie Kubernetes. Počas postupu sa dozviete viac o niektorých definujúcich komponentoch Kubernetes, ako sú kubectl a kubeadm . Odporúča sa tiež najprv sa oboznámiť s naším návodom na zoznámenie sa so základmi sady nástrojov Kubernetes, aby ste sa oboznámili so základmi platformy Kubernetes.

Teraz poďme na to!

Požiadavky

Budete musieť sprevádzkovať dva servery bežiace na Ubuntu 20.04. Pre najlepší výkon sú minimálne systémové požiadavky pre Kubernetes 2 GB RAM a 2 CPU. Môžete postupovať podľa krokov 1 až 4 tohto podrobného návodu, ktorý vám pomôže nastaviť váš Ubuntu server na CloudSigma. Jeden server bude master uzol, druhý bude worker uzol. Naše dva servery sme výstižne pomenovali ako kubernetes-master a kubernetes-worker. Vďaka tomu je jednoduchšie sledovať tento návod. Môžete si však slobodne vybrať hostnames, ktoré uprednostňujete.

  • Uistite sa, že na oboch uzloch pridáte používateľa s sudo privilégiami na oboch uzloch, ktoré použijeme na spúšťanie príkazov, ako je popísané v návode vyššie. Postupujte podľa tohto návodu na konfiguráciu súboru Linux sudoers, kde nájdete pokyny.

  • Sieťová konektivita – servery v clustri by mali byť schopné komunikovať. Keď nasadíte svoje VM z CloudSigma, budú predvolene pripojené k internetu s verejnou IP adresou. Ak pracujete z lokálnej siete, možno budete musieť upraviť svoj súbor /etc/hosts v každom serveri a vhodne ich prepojiť.

  • Na každom z uzlov budete musieť nainštalovať a povoliť Docker na každom z uzlov. Kubernetes sa spolieha na kontajnerové runtime prostredie na spúšťanie kontajnerov v podoch. Hoci existujú aj iné kontajnerové platformy, v tomto návode budeme používať Docker. Docker poskytne runtime prostredie potrebné pre Ubuntu. Môžete postupovať podľa krokov 1, 2 a 3 nášho návodu na inštaláciu a prevádzku Dockeru.

Krok 1: Inštalácia Kubernetes

V tomto kroku budeme inštalovať Kubernetes. Podobne ako pri Dockeri v časti požiadavky, musíte spustiť príkazy na oboch uzloch, aby ste nainštalovali Kubernetes. Použite ssh na prihlásenie do oboch uzlov a pokračujte. Začnete inštaláciou balíka apt-transport-https , ktorý umožňuje prácu s http a https v repozitároch Ubuntu. Tiež nainštalujte curl , pretože bude potrebný pre ďalšie kroky. Spustite nasledujúci príkaz:

Potom pridajte Kubernetes podpisovací kľúč do oboch uzlov spustením príkazu:

Ďalej pridáme Kubernetes repozitár ako zdroj balíkov na oboch uzloch pomocou nasledujúceho príkazu:

Potom aktualizujte uzly:

  • Nainštalujte nástroje Kubernetes

Po dokončení aktualizácie nainštalujeme Kubernetes. To zahŕňa inštaláciu rôznych nástrojov, ktoré tvoria Kubernetes: kubeadm, kubelet, kubectl, a kubernetes-cni. Tieto nástroje sú nainštalované na oboch uzloch. Každý nástroj definujeme nižšie:

  • kubelet – agent, ktorý beží na každom uzle a zabezpečuje komunikáciu s hlavným (master) uzlom na spustenie pracovných zaťažení v kontajnerovom prostredí. Pre inštaláciu kubelet zadajte nasledujúci príkaz:

  • kubeadm – súčasť projektu Kubernetes, ktorá pomáha inicializovať cluster Kubernetes. Pre inštaláciu kubeadm zadajte nasledujúci príkaz:

  • kubectl – nástroj príkazového riadka pre Kubernetes, ktorý vám umožňuje spúšťať príkazy v rámci clustrov Kubernetes. Pre inštaláciu kubectl vykonajte nasledujúci príkaz:

  • kubernetes-cni – umožňuje sieťové prepojenie v rámci kontajnerov, čím zabezpečuje, že kontajnery môžu komunikovať a vymieňať si dáta. Pre inštaláciu vykonajte nasledujúci príkaz:

Voliteľne môžete nainštalovať všetky štyri jedným príkazom:

Krok 2: Zakázanie swap pamäte

Kubernetes nefunguje v systéme, ktorý používa swap pamäť. Preto musí byť zakázaná na hlavnom (master) uzle aj na všetkých pracovných (worker) uzloch. Pre zakázanie swap pamäte vykonajte nasledujúci príkaz:

Tento príkaz zakáže swap pamäť do reštartu systému. Musíme zabezpečiť, aby zostala vypnutá aj po reštarte. To sa musí vykonať na hlavnom uzle aj na všetkých pracovných uzloch. Môžeme to urobiť úpravou súboru fstab súbor a zakomentovaním riadku /swapfile pomocou #. Otvorte súbor v textovom editore nano zadaním nasledujúceho príkazu:

V súbore zakomentujte riadok swapfile tak, ako je to znázornené na snímke obrazovky nižšie:

install Kubernetes fstab swap disable

Ak riadok swapfile nevidíte, jednoducho ho ignorujte. Po dokončení úprav súbor uložte a zatvorte. Postupujte rovnako pre oba uzly. Nastavenia swap pamäte teraz zostanú vypnuté aj po reštarte servera.

Krok 3: Nastavenie jedinečných názvov hostiteľov

Vaše uzly must have jedinečné názvy hostiteľov pre jednoduchšiu identifikáciu. Ak nasadzujete cluster s mnohými uzlami, môžete nastaviť identifikačné názvy pre vaše pracovné uzly, napríklad node-1, node-2 atď. Ako sme už spomínali, naše uzly sme pomenovali ako kubernetes-master a kubernetes-worker. Nastavili sme ich pri vytváraní servera. Ak ste tak však ešte neurobili, môžete si ich prispôsobiť alebo nastaviť z príkazového riadka. Ak chcete upraviť názov hostiteľa na hlavnom uzle, spustite nasledujúci príkaz:

Na pracovnom uzle spustite nasledujúci príkaz:

Môžete zatvoriť aktuálnu reláciu terminálu a znova sa pripojiť cez ssh k serveru, aby ste videli zmeny.

Krok 4: Povolenie pre Iptables vidieť premostenú prevádzku

Aby hlavný a pracovné uzly správne videli premostenú prevádzku, mali by ste sa uistiť, že net.bridge.bridge-nf-call-iptables je vo vašej konfigurácii nastavené na 1. Najprv sa uistite, že je načítaný modul br_netfilter. Môžete to potvrdiť zadaním príkazu:

Voliteľne ho môžete explicitne načítať príkazom:

Teraz môžete spustiť tento príkaz na nastavenie hodnoty na 1:

Krok 5: Zmena ovládača Docker Cgroup

V predvolenom nastavení sa Docker inštaluje s cgroupfs ako ovládačom cgroup. Kubernetes odporúča , aby Docker bežal s systemd ako ovládačom. Ak tento krok vynecháte a pokúsite sa inicializovať kubeadm v nasledujúcom kroku, v termináli sa zobrazí nasledujúce varovanie:

Na hlavnom aj pracovnom uzle aktualizujte cgroupdriver pomocou nasledujúcich príkazov:

Potom vykonajte nasledujúce príkazy na reštartovanie a povolenie Dockera pri spúšťaní systému:

Keď je to nastavené, môžeme prejsť k tej zábavnejšej časti, nasadeniu Kubernetes klastra!

Krok 6: Inicializácia hlavného uzla (Master Node) Kubernetes

Prvým krokom pri nasadzovaní Kubernetes klastra je spustenie hlavného uzla. V termináli vášho hlavného uzla vykonajte nasledujúci príkaz na inicializáciu kubernetes-master:

Ak vykonáte vyššie uvedený príkaz a váš systém nespĺňa očakávané požiadavky, ako je minimálna pamäť RAM alebo CPU, ako je vysvetlené v časti Požiadavky, dostanete varovanie a klaster sa nespustí:

install Kubernetes InitError

Poznámka: Ak staviate prostredie pre produkciu, je dobré vždy splniť minimálne požiadavky, aby Kubernetes bežal hladko. Ak však robíte tento návod na účely učenia sa, môžete k príkazu kubeadm init pridať nasledujúci príznak, aby ste ignorovali varovania o chybách:
sudo kubeadm init --ignore-preflight-errors=NumCPU,Mem --pod-network-cidr=10.244.0.0/16

Snímka obrazovky nižšie ukazuje, že inicializácia bola úspešná. Pridali sme tiež príznak na špecifikáciu siete podov s IP adresou 10.244.0.0. Je to predvolená IP adresa, ktorú kube-flannel používa. Viac o sieti podov si povieme v nasledujúcom kroku.

install Kubernetes Kubeadm Init

Na výstupe môžete vidieť príkaz kubeadm join (skryli sme našu IP adresu) a jedinečný token, ktorý spustíte na pracovnom uzle a všetkých ostatných pracovných uzloch, ktoré chcete pripojiť k tomuto klastru. Potom tento príkaz skopírujte a vložte, pretože ho neskôr použijete v pracovnom uzle.

Na výstupe Kubernetes zobrazuje aj niektoré ďalšie príkazy, ktoré by ste mali spustiť ako bežný používateľ na hlavnom uzle pred spustením klastra. Spustime tieto príkazy:

Teraz sme inicializovali hlavný uzol. Pred pripojením pracovných uzlov však musíme na hlavnom uzle nastaviť aj sieť podov.

Krok 7: Nasadenie siete podov (Pod Network)

Sieť podov uľahčuje komunikáciu medzi servermi a je nevyhnutná pre správne fungovanie Kubernetes klastra. Viac o sieťovaní klastrov Kubernetes sa dočítate v oficiálnej dokumentácii. V tomto návode budeme používať sieť podov Flannel. Flannel je jednoduchá prekryvná sieť (overlay network), ktorá spĺňa požiadavky Kubernetes.

Pred nasadením siete podov musíme skontrolovať stav firewallu. Ak ste povolili firewall po vykonaní kroku 5 v návode na nastavenie servera Ubuntu, musíte najprv pridať firewallové pravidlo na vytvorenie výnimiek pre port 6443 (predvolený port pre Kubernetes). Spustite nasledujúce príkazy ufw na hlavnom (master) aj pracovnom (worker) uzle:

Potom môžete spustiť nasledujúce dva príkazy na nasadenie siete podov na hlavnom (master) uzle:

Načítanie siete flannel môže trvať od niekoľkých sekúnd do minúty v závislosti od vášho prostredia. Spustením nasledujúceho príkazu potvrďte, že je všetko spustené:

Ak bolo všetko úspešné, výstup príkazu by mal zobrazovať stav všetkých služieb ako spustený (running):

install Kubernetes Pod Status

Môžete si tiež zobraziť stav komponentov pomocou príkazu get component status:

install Kubernetes Component Status

Tento príkaz má skrátenú formu cs:

Component Status Short

Ak vidíte nezdravý stav (unhealthy), upravte nasledujúce súbory a vymažte riadok v (spec->containers->command) obsahujúci túto frázu - --port=0 :

Urobte to isté pre tento súbor:

Nakoniec reštartujte službu Kubernetes:

Krok 8: Pripojenie pracovných uzlov (Worker Nodes) ku Kubernetes clusteru

Keď je kubernetes-master uzol spustený a sieť podov je pripravená, môžeme k clusteru pripojiť naše pracovné uzly. V tomto návode máme iba jeden pracovný uzol, takže budeme pracovať s ním. Ak máte viac pracovných uzlov, môžete na ich pripojenie k clusteru kedykoľvek použiť rovnaké kroky, aké vysvetlíme nižšie.

Najprv sa prihláste do svojho pracovného uzla v samostatnej relácii terminálu. Použijete svoj príkaz kubeadm join, ktorý sa zobrazil vo vašom termináli, keď sme inicializovali hlavný uzol v Kroku 6. Spustite príkaz:

Po dokončení pripájania k clusteru by ste mali vidieť podobný výstup ako na snímke obrazovky nižšie:

Worker Join

Po dokončení procesu pripájania sa prepnite do terminálu hlavného uzla a spustením nasledujúceho príkazu potvrďte, že sa váš pracovný uzol pripojil k clusteru:

Na snímke obrazovky z výstupu vyššie uvedeného príkazu môžeme vidieť, že pracovný uzol sa pripojil k clusteru:

install Kubernetes K8S Node Status

Krok 9: Nasadenie aplikácie do Kubernetes clustera

V tomto bode ste úspešne nastavili Kubernetes cluster. Poďme cluster spraviť užitočným nasadením služby. Nginx is a populárny webový server, ktorý sa pýši neuveriteľnou rýchlosťou aj pri tisíckach pripojení. Nasadíme webový server Nginx do clustera, aby sme dokázali, že toto nastavenie môžete použiť v reálnej aplikácii.

Spustením nasledujúceho príkazu na hlavnom uzle vytvorte Kubernetes deployment pre Nginx:

Vytvorený deployment si môžete zobraziť pomocou príkazu describe deployment:

Nginx Deployment

To make the nginx service accessible via the internet, run the following command:

NodePort Svc Create

The command above will create a public-facing service for the Nginx deployment. This being a nodeport deployment, Kubernetes assigns the service a port in the range of 32000+.

You can get the current services by issuing the command:

NodePort Svc Status

You can see that our assigned port is 32264. Take note of the port displayed in your terminal to use in the next step.

To verify that the Nginx service deployment is successful, issue a curl call to the worker node from the master. Replace your worker node IP and the port you got from the above command:

You should see the output of the default Nginx index.html:

Curl Nginx Svc

Optionally, you can visit the worker node IP address and port combination in your browser and view the default Nginx index page:

install Kubernetes Nginx Webpage

You can delete a deployment by specifying the name of the deployment. For example, this command will delete our deployment:

We have now successfully tested our cluster!

Conclusion

In this tutorial, you have learned how to install a Kubernetes cluster on Ubuntu 20.04. You set up a cluster consisting of a master and worker node. You were able to install the Kubernetes toolset, created a pod network, and joined the worker node to the master node. We also tested our concept by doing a basic deployment of an Nginx webserver to the cluster. This should work as a foundation to working with Kubernetes clusters on Ubuntu.

While we only used one worker node, you can extend your cluster with as many nodes as you wish. If you would like to get deeper into DevOps with automation tools like Ansible, we have a tutorial that delves into provisioning Kubernetes cluster deployments with Ansible and Kubeadm, check it out. If you want to learn how to deploy a PHP application on a Kubernetes cluster check this tutorial.

Happy Computing!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.