Tento návod vás provede nastavením Kubernetes clusteru od nuly pomocí Ansible a Kubeadm a následným nasazením kontejnerizované aplikace Nginx s její pomocí.
Úvod
Kubernetes (známý také jako k8s nebo “kube”) je open-source platforma pro orchestraci kontejnerů, která automatizuje mnoho manuálních procesů spojených s nasazováním, správou a škálováním kontejnerizovaných aplikací. Kubernetes má rychle rostoucí open-source komunitu, která aktivně přispívá do projektu. Podívejte se na náš příspěvek na blogu, který vás seznámí se vším, co potřebujete vědět o základech platformy Kubernetes.
Kubeadm je nástroj, který konfiguruje několik integrovaných prvků, částí a dílů, jako je API server, Controller Manager a Kube DNS. Pomáhá také s automatizací instalace. Nevytváří však uživatele ani neřeší instalaci závislostí na úrovni operačního systému a jejich konfiguraci a nedokáže zprovoznit vaši infrastrukturu.
Ansible je open-source nástroj pro zprovoznění softwaru a nasazení aplikací. Saltstack je open-source software pro automatizaci informačních technologií řízenou událostmi. Jedná se o dva nástroje, díky nimž je vytváření dalších clusterů nebo opětovné vytváření stávajících clusterů méně náchylné k chybám, a lze je použít pro tyto předběžné úkoly.
Cíle:
Váš cluster bude obsahovat následující fyzické prostředky:
1. Jeden master uzel:
Master uzel je uzel, který řídí a spravuje sadu worker uzlů (běhové prostředí pro pracovní zátěž) a představuje cluster v Kubernetes. Uchovává také plán prostředků uzlu pro určení správné akce pro spuštěnou událost. Běží na něm etcd, open-source distribuované úložiště klíč-hodnota používané k uchovávání a správě dat clusteru mezi komponentami, které plánují pracovní zátěž na worker uzly.
Plánovač by například zjistil, který worker uzel bude hostit nově naplánovaný POD.
2. Dva worker uzly:
Worker uzly jsou uzly, které pokračují v přidělené práci, i když master uzel po dokončení plánování selže. Worker uzly jsou servery, na kterých poběží vaše pracovní zátěž (tj. kontejnerizované aplikace a služby). Kapacitu clusteru můžete také zvýšit přidáním dalších workerů.
Po dokončení tohoto návodu budete mít plně funkční cluster připravený ke spouštění pracovní zátěže (tj. kontejnerizovaných aplikací a služeb) za předpokladu, že servery v clusteru mají dostatek prostředků CPU a RAM pro běh vašich aplikací. Po úspěšném nastavení clusteru můžete spustit téměř jakoukoli tradiční UNIXovou aplikaci. Může být kontejnerizována na vašem clusteru, včetně webových aplikací, databází, démonů a nástrojů příkazového řádku.
Samotný cluster spotřebuje přibližně 300-500 MB paměti a 10 % CPU na každém uzlu.
Požadavky:
- Na svém lokálním linuxovém stroji musíte mít pár SSH klíčů a vědět, jak SSH klíče používat. Pokud jste však SSH klíče dříve nepoužívali, můžete se podívat na tento návod, který vám pomůže nastavit SSH klíče na vašem lokálním stroji.
- Tři servery se systémem Ubuntu 18.04, každý s alespoň 4 GB RAM a 4 vCPU. Měli byste mít možnost se k jednotlivým serverům připojit přes SSH jako uživatel root pomocí vašeho páru SSH klíčů. Postupujte podle tohoto návodu k instalaci serveru Ubuntu.
- Ansible nainstalovaný na vašem lokálním stroji.
- Musíte být také obeznámeni s playbooky Ansible.
- Budete také muset vědět, jak spustit kontejner z Docker obrazu. Podívejte se na “Krok 5 — Práce s Docker obrazy v Ubuntu” v How To Install and Use Docker on Ubuntu 18.04 pokud si potřebujete osvěžit znalosti.
Krok 1 — Nastavení adresáře pracovního prostoru a souboru inventáře Ansible
Nejprve musíte nastavit Ansible na svém lokálním stroji. Pomůže vám spouštět příkazy na vzdáleném serveru. Usnadňuje také ruční nasazení tím, že ho automatizuje. K tomu budete muset na svém lokálním stroji vytvořit adresář, který bude sloužit jako váš dočasný digitální úložný prostor (Pracovní prostor).
Jakmile vytvoříte adresář, vytvoříte hosts soubor pro uložení všech informací o IP adresách a skupině každého serveru. Pomůže vám uložit informace o inventáři. Jak bylo uvedeno dříve, k dispozici budou tři servery, jeden master a dva workery. Master server bude master s IP adresou zobrazenou jako master_ip. Zbývající dva servery budou workery a budou mít IP adresy worker_1_ip a worker_2_ip.
Musíte vytvořit adresář s názvem ~/kube-cluster v domovském adresáři vašeho lokálního počítače a vstoupit do něj pomocí příkazu cd:
|
1 2 |
mkdir ~/kube-cluster cd ~/kube-cluster |
Adresář ~/kube-cluster bude nyní sloužit jako dočasné digitální úložiště (pracovní prostor), ve kterém budete spouštět všechny lokální příkazy pro vytvoření Kubernetes clusteru pomocí kubeadm. Adresář bude obsahovat všechny vaše Ansible playbooky a bude se používat po zbytek návodu.
Vytvoření souboru hosts
Vytvořte soubor s názvem ~/kube-cluster/hosts pomocí nano nebo vašeho oblíbeného textového editoru:
|
1 |
nano ~/kube-cluster/hosts |
Nyní budete muset přidat následující text, který specifikuje informace o logické struktuře vašeho clusteru:
|
1 2 3 4 5 6 7 8 9 |
[masters] master ansible_host=master_ip ansible_user=root [workers] worker1 ansible_host=worker_1_ip ansible_user=root worker2 ansible_host=worker_2_ip ansible_user=root [all:vars] ansible_python_interpreter=/usr/bin/python3 |
Jak již bylo zmíněno, tento soubor inventáře vám pomůže uložit všechny informace o IP adresách vašich serverů a skupinách, do kterých jednotlivé servery patří. ~/kube-cluster/hosts bude váš soubor inventáře a (masters a workers) budou dvě skupiny Ansible, které jste do něj přidali a které specifikují logickou strukturu vašeho clusteru.
Skupina Master specifikuje, že Ansible by měl spouštět vzdálené příkazy jako uživatel root. Obsahuje také IP adresu master uzlu (master_ip) kterou lze uvést pod položkou serveru s názvem “master”. Podobně skupina Workers má dvě položky pro worker servery (worker_1_ip a worker_2_ip) které také specifikují ansible_user jako root.
Poslední řádek souboru říká Ansible, aby pro své operace správy používal interprety Pythonu 3 na vzdálených serverech. Nakonec musíte soubor po přidání textu uložit a zavřít. Po nastavení adresáře pracovního prostoru a souboru inventáře Ansible přejděme k dalšímu kroku instalace závislostí na úrovni operačního systému a vytvoření nastavení konfigurace.
Krok 2 — Vytvoření uživatele bez oprávnění root na všech vzdálených serverech
V tomto kroku se dozvíte, jak vytvořit uživatele bez oprávnění root s právy sudo na všech serverech, abyste se k nim mohli ručně připojit přes SSH jako neprivilegovaný uživatel.
To může být užitečné pro často prováděné operace pro zachování clusteru. Tento krok vám navíc pomůže provést úkol přesněji a s menším rizikem chyb, což sníží pravděpodobnost neúmyslné změny nebo smazání důležitých souborů. Pokud chcete změnit nastavení souborů vlastněných uživatelem root nebo zobrazit systémové informace pomocí příkazů jako top/htop a zobrazit seznam běžících kontejnerů, následující krok vám pomůže provést všechny tyto úkoly.
Vytvoření playbooku
Vytvořte soubor s názvem ~/kube-cluster/initial.yml v pracovním prostoru:
|
1 |
nano ~/kube-cluster/initial.yml |
Dále musíte přidat následující play. Play v Ansible je kolekce kroků, které se mají provést a které cílí na konkrétní servery a skupiny. V playbooku může být jedna nebo více play.
Následující play vytvoří sudo uživatele bez oprávnění root:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
- hosts: all become: yes tasks: - name: vytvořit uživatele 'ubuntu' user user: name=ubuntu append=yes state=present createhome=yes shell=/bin/bash - name: povolit uživateli 'ubuntu' sudo bez heslasudo lineinfile: dest: /etc/sudoers line: 'ubuntu ALL=(ALL) NOPASSWD: ALL' validate: 'visudo -cf %s' - name: nastavit autorizované klíče pro uživatele ubuntuubuntu user authorized_key: user=ubuntu key="{{item}}" with_file: - ~/.ssh/id_rsa.pub |
Následuje rozbor toho, co náš playbook dělá:
- Tento playbook vytvoří uživatele bez oprávnění root
ubuntu. - Protože potřebujete spouštět příkazy
sudobez výzvy k zadání hesla, tento play nakonfiguruje souborsudoers, aby to uživateliubuntuumožnil. - Hlavním účelem výše uvedené úlohy bylo umožnit vám připojit se k jednotlivým serverům přes SSH jako uživatel
ubuntu. Tento playbook přidá veřejný klíč vašeho lokálního stroje (obvykle~/.ssh/id_rsa.pub) do seznamu autorizovaných klíčů vzdáleného uživateleubuntu.
Nyní, po přidání textu, musíte soubor uložit a zavřít.
Spuštění playbooku
Poté musíme spustit náš playbook, který vytvoří uživatele ubuntu bez oprávnění root, jednoduchým spuštěním na lokálních strojích:
|
1 |
ansible-playbook -i hosts ~/kube-cluster/initial.yml |
Provedení tohoto příkazu bude nějakou dobu trvat, poté se zobrazí následující výstup:

Po dokončení tohoto kroku můžete v dalším kroku přejít k instalaci závislostí specifických pro Kubernetes.
Krok 3 — Instalace závislostí Kubernetes
V tomto kroku se dozvíte, jak pomocí správce balíčků v Ubuntu nainstalovat balíčky na úrovni operačního systému vyžadované Kubernetes.
Tyto balíčky jsou:
- Docker: Docker je platforma a nástroj pro sestavování, distribuci a spouštění kontejnerů Docker. Docker můžete snadno nastavit podle našeho návodu na jak nainstalovat & provozovat Docker na Ubuntu ve veřejném cloudu. Podpora pro jiná běhová prostředí, jako je například rkt, je v Kubernetes v aktivním vývoji.
Kubeadm: kubeadm je nástroj příkazové řádky (CLI), který provádí akce nezbytné ke zprovoznění minimálního životaschopného clusteru. To vám pomůže standardním způsobem nainstalovat a sestavit různé komponenty clusteru.kubelet: kubelet je hlavní “agent uzlu”, který běží na každém uzlu a zpracovává operace na úrovni uzlu.kubectl: kubectl je také nástroj příkazové řádky (CLI), který komunikuje s vaším clusterem a vydává příkazy prostřednictvím jeho API serveru.
Vytvoření playbooku
Vytvořte soubor s názvem ~/kube-cluster/kube-dependencies.yml v pracovním prostoru:
|
1 |
nano ~/kube-cluster/kube-dependencies.yml |
Nyní musíte do souboru přidat následující playe, abyste do svých serverů nainstalovali tyto balíčky:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
- hosts: all become: yes tasks: - name: nainstalovat Docker apt: name: docker.io state: present update_cache: true - name: nainstalovat APT Transport HTTPS apt: name: apt-transport-https state: present - name: přidat Kubernetes apt-klíč apt_key: url: https://packages.cloud.google.com/apt/doc/apt-key.gpg validate_certs: false state: present - name: přidat Kubernetes APT repozitář apt_repository: repo: deb http://apt.kubernetes.io/ kubernetes-xenial main state: present filename: 'kubernetes' - name: nainstalovat kubelet apt: name: kubelet=1.16.0-00 state: present update_cache: true - name: nainstalovat kubeadm apt: name: kubeadm=1.16.0-00 state: present - hosts: master become: yes tasks: - name: nainstalovat kubectl apt: name: kubectl=1.16.0-00 state: present force: yes |
První play v playbooku dělá následující:
- Tento play vám pomůže nainstalovat balíčky na úrovni operačního systému, Docker – kontejnerové spouštěcí prostředí.
- Nainstaluje
apt-transport-https, což vám umožní přidat externí HTTPS zdroje do vašeho seznamu zdrojů APT. - Přidá apt-klíč repozitáře APT pro Kubernetes pro ověření klíče.
- Přidá repozitář APT pro Kubernetes do seznamu zdrojů APT vašich vzdálených serverů.
- Nainstaluje
kubeletakubeadm.
Druhý play provádí důležitou a samostatnou úlohu, která zahrnuje instalaci kubectl na vašem master uzlu. Nyní po přidání textu musíte soubor uložit a zavřít.
Spuštění playbooku
Poté musíme náš playbook spustit jednoduchým spuštěním na lokálních strojích:
|
1 |
ansible-playbook -i hosts ~/kube-cluster/kube-dependencies.yml |
Provedení tohoto příkazu bude nějakou dobu trvat, poté uvidíte následující výstup:

Po spuštění budou Docker, kubeadm a kubelet nainstalovány na všech vzdálených serverech. Kubectl není vyžadovanou součástí a je potřeba pouze pro spouštění příkazů clusteru. Jeho instalace pouze na master uzlu dává v tomto kontextu smysl, protože budete spouštět kubectl příkazy pouze z masteru. Uvědomte si však, že kubectl příkazy lze spouštět z libovolného z pracovních uzlů nebo z jakéhokoli stroje, kde je lze nainstalovat a nakonfigurovat tak, aby ukazovaly na cluster.
Všechny systémové závislosti jsou nyní nainstalovány. Pojďme nastavit hlavní uzel a inicializovat cluster.
Krok 4 — Nastavení hlavního uzlu
V tomto kroku se seznámíte s několika koncepty, jako jsou Pody a síťové pluginy pro Pody, protože váš cluster bude po nastavení hlavního uzlu obsahovat obojí.
Pody jsou nejmenší, nejzákladnější nasaditelné objekty v Kubernetes. Pody obsahují jeden nebo více kontejnerů, jako jsou například kontejnery Docker. Pokud Pod spouští více kontejnerů, jsou tyto kontejnery spravovány jako jeden celek a sdílejí prostředky Podu.
Každý pod má svou vlastní IP adresu a pod na jednom uzlu by měl mít přístup k podu na jiném uzlu pomocí IP adresy daného podu. Komunikace mezi pody je však složitější. Vyžaduje samostatnou komponentu, která dokáže transparentně směrovat provoz z podu na jednom uzlu do podu na jiném uzlu. Pro tuto funkci se používají síťové pluginy pro pody. K dispozici je mnoho síťových pluginů pro pody, ale my použijeme Flannel, protože se jedná o stabilní a efektivní možnost.
Vytvoření playbooku
Vytvořte Ansible playbook s názvem master.yml na svém lokálním počítači:
|
1 |
nano ~/kube-cluster/master.yml |
Dále musíte do souboru přidat následující play pro inicializaci clusteru a instalaci Flannelu:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
- hosts: master become: yes tasks: - name: inicializovatthe cluster shell: kubeadm init --pod-network-cidr=10.244.0.0/16 >> cluster_initialized.txt args: chdir: $HOME creates: cluster_initialized.txt become: yes become_user: root - name: vytvořit .adresář kube become: yes become_user: ubuntu file: path: $HOME/.kube state: directory mode: 0755 - name: zkopírovat admin.conf do konfigurace 'kube uživateleconfig copy: src: /etc/kubernetes/admin.conf dest: /home/ubuntu/.kube/config remote_src: yes owner: ubuntu - name: nainstalovat síť pro Pody become: yes become_user: ubuntu shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml >> pod_network_setup.txt args: chdir: $HOME creates: pod_network_setup.txt |
Zde je rozbor tohoto playe:
- První úloha v tomto playi nastaví cluster spuštěním
kubeadm init. Pro specifikaci privátní podsítě, která bude přiřazena IP adresám podů, předáváme argument--pod-network-cidr=10.244.0.0/16. Flannel standardně používá výše uvedenou podsíť. Tímto říkámekubeadm, aby použil stejnou podsíť. - Druhá úloha slouží k vytvoření adresáře
.kubev/home/ubuntu. V tomto adresáři budou uloženy konfigurační informace, jako jsou soubory s klíči administrátora, které jsou vyžadovány pro připojení ke clusteru, a adresa API clusteru. - Třetí úloha slouží ke zkopírování souboru
/etc/kubernetes/admin.conf, který byl vygenerován zkubeadm initdo domovského adresáře vašeho uživatele bez oprávnění root. To vám umožní používatkubectlpro přístup k nově vytvořenému clusteru. - Poslední úloha spustí
kubectl applypro instalaciFlannel.kubectl apply -f descriptor.[yml|json]je syntaxe, která říkákubectl, aby vytvořil objekty popsané v souborudescriptor.[yml|json]. Souborkube-flannel.ymlobsahuje popisy objektů potřebných pro nastaveníFlannelv clusteru.
Nyní, po přidání textu, musíte soubor uložit a zavřít.
Spuštění playbooku
Poté musíte spustit náš playbook jednoduchým spuštěním na lokálních strojích:
|
1 |
ansible-playbook -i hosts ~/kube-cluster/master.yml |
Provedení tohoto příkazu bude nějakou dobu trvat, poté se zobrazí následující výstup:

Nyní se k němu připojte pomocí SSH s následujícím příkazem pro kontrolu stavu hlavního uzlu:
|
1 |
ssh ubuntu@master_ip |
Jakmile budete uvnitř hlavního uzlu, spusťte:
|
1 |
kubectl get nodes |
Nyní uvidíte následující výstup:

Po získání výše uvedeného výstupu můžete prohlásit, že všechny úkoly nastavení byly hlavním uzlem dokončeny a ten může začít přijímat pracovní uzly a provádět úkoly, jakmile přejde do stavu Ready. Nyní můžete přidat pracovníky ze svého lokálního stroje.
Krok 5 — Nastavení pracovních uzlů
Po nastavení hlavního uzlu se nyní můžeme přesunout k dalšímu kroku, kterým je nastavení pracovních uzlů. Přidání pracovních uzlů do clusteru lze provést jednoduše spuštěním jediného příkazu na každém pracovním serveru. Tento příkaz obsahuje důležité informace, jako je IP adresa, port API serveru hlavního uzlu a zabezpečený token. Měli byste však vzít na vědomí, že se ke clusteru nebudou moci připojit všechny uzly, ale pouze ty uzly, které předají zabezpečený token.
Vytvoření playbooku
Tento příkaz vám pomůže přejít zpět do vašeho pracovního prostoru a vytvořit playbook s názvem workers.yml:
|
1 |
nano ~/kube-cluster/workers.yml |
Pro přidání pracovníků do clusteru přidejte do souboru následující text:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
- hosts: master become: yes gather_facts: false tasks: - name: získat příkaz pro připojení shell: kubeadm token create --print-join-command register: join_command_raw - name: nastavit příkaz pro připojení set_fact: join_command: "{{ join_command_raw.stdout_lines[0] }}" - hosts: workers become: yes tasks: - name: připojit ke clusteru shell: "{{ hostvars['master'].join_command }} >> node_joined.txt" args: chdir: $HOME creates: node_joined.txt |
Zde je to, co playbook dělá. Ve výše uvedeném kódu jsou dvě části (plays):
- První část (play) slouží k získání příkazu pro připojení, který je třeba spustit na pracovních uzlech. Formát příkazu bude:
kubeadm join --token sha256:<hash><token><master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>;. Úloha musí získat správné hodnoty tokenu a hodnoty hash. Jakmile získá správný vstup, nastaví jej jako fakt (fact), aby k těmto informacím měla přístup druhá část (play). - Druhá část (play) je napsána pouze pro provedení jediné úlohy – připojení dvou pracovních uzlů do clusteru jednoduchým spuštěním příkazu pro připojení na všech pracovních uzlech.
Po přidání textu musíte soubor uložit a zavřít.
Spuštění playbooku
Poté musíme spustit náš playbook spuštěním následujícího příkazu na pracovních strojích:
|
1 |
ansible-playbook -i hosts ~/kube-cluster/workers.yml |
Provedení tohoto příkazu bude nějakou dobu trvat, poté se zobrazí následující výstup:

Nyní je váš Kubernetes cluster plně nastaven a funkční a pracovní uzly jsou připraveny ke spouštění úloh. Než přejdeme k dalšímu kroku, ověřme, zda cluster funguje podle plánu.
Krok 6 — Ověření clusteru
Mohou nastat případy, kdy cluster během nastavování selže. Může to být způsobeno chybou sítě mezi masterem a workerem nebo problémem s uzlem. Před plánováním aplikací proto musíme cluster ověřit a ujistit se, že nedochází k žádným poruchám. K tomu budete muset zkontrolovat aktuální stav clusteru z hlavního uzlu (master node), abyste se ujistili, že jsou uzly připraveny. Pokud uzly nejsou připraveny nebo dojde k odpojení, můžete připojení obnovit pomocí následujícího příkazu:
|
1 |
ssh ubuntu@master_ip |
Pro získání stavu clusteru použijte následující příkazy:
|
1 |
kubectl get nodes |
Provedení tohoto příkazu bude nějakou dobu trvat, poté se zobrazí následující výstup:

Musíte zkontrolovat, zda jsou všechny uzly, které jsou součástí clusteru, ve stavu ready (připraveno). Pokud má několik uzlů Not Ready jako STATUS, ukazuje to, že pracovní uzly ještě nedokončily své nastavení. Před opětovným spuštěním kubectl get nodes a kontrolou aktualizovaného výstupu byste měli počkat dalších pět až deset minut. Pokud některé uzly stále vykazují Not Ready jako svůj stav, měli byste zkontrolovat předchozí kroky a příkazy spustit znovu. Pouze pokud mají uzly pro STATUS hodnotu Ready, jsou součástí clusteru a jsou připraveny ke spouštění úloh. Po úspěšném provedení 6. kroku je nyní váš cluster ověřen. Nyní naplánujme na clusteru ukázkovou aplikaci Nginx.
Krok 7 — Spuštění aplikace v clusteru
Vytvoření Deploymentu
Po úspěšném vytvoření clusteru můžete do clusteru nasadit jakoukoli kontejnerizovanou aplikaci. Pokud se nacházíte v hlavním uzlu (master node), můžete pro ostatní kontejnerizované aplikace použít následující příkazy níže. Dále spusťte následující příkaz k vytvoření deploymentu s názvem nginx :
|
1 |
kubectl create deployment nginx --image=nginx |
Musíte změnit název Docker obrazu (image) a všechny příslušné příznaky (například porty a svazky). Abychom zachovali známé prostředí, můžete nasadit Nginx pomocí deploymentů a služeb (services), abyste viděli, jak lze aplikace do clusteru nasazovat.
A Kubernetes deployment je objekt prostředku v Kubernetes, který poskytuje deklarativní aktualizace aplikací. Deployment vám umožňuje popsat životní cyklus aplikace, jako je obraz kontejneru, repliky a strategie aktualizace. Deployment zajišťuje, že požadovaný počet podů běží a je neustále k dispozici. Pokud pod během životnosti clusteru selže, spustí se znovu. Proces aktualizace je také kompletně zaznamenáván a verzován s možnostmi pozastavení, pokračování a vrácení zpět k předchozím verzím. Výše uvedený příkaz k vytvoření deploymentu s názvem Nginx vám pomůže nasadit pod s jedním kontejnerem z Docker Image Nginx v registru Docker.
Nastavení Node Portu
Dále musíme vytvořit NodePort. NodePort je otevřený port na každém uzlu vašeho clusteru. Kubernetes transparentně směruje příchozí provoz na NodePort do vaší služby, i když vaše aplikace běží na jiném uzlu. K tomu můžeme použít tento příkaz k vytvoření prostředku NodePort s názvem Nginx, který aplikaci veřejně zpřístupní:
|
1 |
kubectl expose deploy nginx --port 80 --target-port 80 --type NodePort |
Služba (service) je další objekt Kubernetes zodpovědný za vystavení rozhraní těmto podům, což umožňuje síťový přístup buď zevnitř clusteru, nebo mezi externími procesy a službou. Lze ji definovat jako abstrakci nad podem, která poskytuje jedinou IP adresu a název DNS, pomocí kterých lze k podům přistupovat. Se službou je velmi snadné spravovat konfiguraci vyrovnávání zátěže.
Spusťte následující příkaz:
|
1 |
kubectl get services |
Tím se vypíše text podobný následujícímu:

Po získání výstupu Kubernetes automaticky přiřadí náhodný port, který je větší než 30000 , přičemž se také ujistí, že přiřazený port již není obsazen jinou službou. Třetí řádek výše uvedeného výstupu vám pomůže zjistit port, na kterém Nginx běží.
To verify it is working visit http://worker_1_ip:nginx_port nebo http://worker_2_ip:nginx_port prostřednictvím prohlížeče na vašem lokálním počítači. Uvidíte známou uvítací stránku Nginx.
Odebrání deploymentu
Pokud chcete aplikaci Nginx odebrat, musíte nejprve smazat službu nginx z hlavního uzlu:
|
1 |
kubectl delete service nginx |
Pro ověření, že je aplikace definitivně smazána, musíte spustit tento příkaz:
|
1 |
kubectl get services |
Získáte následující výstup:

Poté musíte smazat deployment pomocí následujícího příkazu:
|
1 |
kubectl delete deployment nginx |
Tento příkaz můžete použít k ověření, zda je deployment definitivně smazán:
|
1 |
kubectl get deployments |
![]()
Závěr:
Tento návod vám pomůže správně nastavit cluster na Ubuntu 18.04 pomocí nástrojů Kubeadm a Ansible. Nyní, když je váš cluster nastaven, můžete snadno začít nasazovat své vlastní aplikace a služby.
Zde je seznam odkazů s dalšími podrobnostmi, které vás procesem provedou:
- Dockerizace aplikací – Tento odkaz obsahuje příklady, které vás provedou tím, jak spouštět aplikace pomocí Dockeru. Například dockerizace PostgreSQL, služby CouchDB atd.
- Přehled podů – Tento odkaz ukazuje podrobnosti o tom, jak používat pod, jak pody fungují a jak pody souvisejí s ostatními objekty Kubernetes. Pody jsou důležitou součástí Kubernetes, takže jejich pochopení vám pomůže uspět ve vašem úkolu.
- Přehled deploymentů – Pomůže vám dozvědět se o deploymentech. Deployment poskytuje deklarativní aktualizace pro pody (Pods) a ReplicaSety. Dozvíte se, jak aktualizovat, přejít na novou verzi a vrátit zpět deployment.
- Přehled služeb - Tento odkaz vás provede službami, které jsou dalším často používaným objektem v clusterech Kubernetes. Služba v Kubernetes je abstrakce, která definuje logickou sadu podů a pravidla, podle kterých k nim můžete přistupovat. Pochopení typů služeb a jejich možností je zásadní pro provozování bezstavových i stavových aplikací.
Kromě toho se podívejte na naše další návody zaměřené na Docker a Kubernetes, které najdete na našem blogu:
- Seznámení s Kubernetes
- Vyčištění prostředků Dockeru – obrazy, kontejnery a svazky
- Jak spustit Docker na CloudSigma (s CloudInit) Aktualizováno
- Instalace a nastavení Dockeru na CentOS 7
- Jak nainstalovat & provozovat Docker na Ubuntu ve veřejném cloudu
Existuje také mnoho dalších důležitých konceptů, jako jsou Svazky, Ingressy, a Secrets které můžete použít při nasazování produkčních aplikací.
Příjemnou práci!
Komentáře
Zatím žádné komentáře. Buďte první.