Kubernetes je přední software v orchestraci kontejnerů. Kubernetes funguje tak, že spravuje clustery, což je prostě sada hostitelů určená pro spouštění kontejnerizovaných aplikací. Abyste mohli mít cluster Kubernetes, potřebujete minimálně dva uzly – hlavní uzel a pracovní uzel . Samozřejmě můžete cluster rozšířit přidáním tolika pracovních uzlů, kolik potřebujete.
V této příručce nasadíme cluster Kubernetes sestávající ze dvou uzlů, z nichž oba používají Ubuntu 20.04 Focal Fossa. Mít dva uzly v našem clusteru je nejzákladnější možná konfigurace, ale budete moci tuto konfiguraci škálovat a přidat další uzly, pokud budete chtít.
V tomto tutoriálu se naučíte:
- Jak nainstalovat Docker
- Jak nainstalovat Kubernetes
- Jak nakonfigurovat hlavní a pracovní uzel
- Jak připojit pracovní uzel ke clusteru Kubernetes
- Jak nasadit Nginx (nebo jakoukoli kontejnerizovanou aplikaci) v clusteru Kubernetes
Nasazení Kubernetes na Ubuntu 20.04 Focal Fossa
Kategorie | Požadavky, konvence nebo použitá verze softwaru |
---|---|
Systém | Nainstalováno Ubuntu 20.04 nebo upgradované Ubuntu 20.04 Focal Fossa |
Software | Kubernetes |
Jiné | Privilegovaný přístup k vašemu systému Linux jako root nebo prostřednictvím sudo příkaz. |
Konvence | # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel |
Scénář
Než se ponoříme, pojďme si ujasnit podrobnosti našeho scénáře. Jak bylo uvedeno výše, náš cluster bude mít dva uzly a oba tyto uzly používají Ubuntu 20.04 Focal Fossa. Jedním z nich bude hlavní uzel a lze jej snadno identifikovat podle názvu hostitele kubernetes-master
. Druhým uzlem bude náš pracovní uzel a mít název hostitele kubernetes-worker
.
Hlavní uzel nasadí cluster Kubernetes a pracovní uzel se k němu jednoduše připojí. Vzhledem k tomu, že clustery Kubernetes jsou navrženy tak, aby spouštěly kontejnerizovaný software, poté, co náš cluster zprovozníme a spustíme, nasadíme serverový kontejner Nginx jako důkaz konceptu.
Nainstalovat Docker
Oba uzly budou muset mít nainstalovaný Docker, protože na něj Kubernetes spoléhá. Otevřete terminál a zadejte následující příkazy do hlavního i pracovního uzlu pro instalaci Dockeru:
$ sudo apt update$ sudo apt install docker.io
Jakmile Docker dokončí instalaci, pomocí následujících příkazů spusťte službu a ujistěte se, že se spouští automaticky po každém restartu:
$ sudo systemctl spustit docker$ sudo systemctl povolit docker
Nainstalujte Kubernetes
Nyní jsme připraveni nainstalovat Kubernetes. Stejně jako všechny ostatní příkazy až do tohoto bodu se ujistěte, že to děláte na obou uzlech. Na hlavním a pracovním serveru Kubernetes nejprve nainstalujte apt-transport-https
balíček, který nám umožní používat http a https v úložištích Ubuntu. Nyní je také vhodný čas nainstalovat curl
protože to za chvíli budeme potřebovat:
$ sudo apt install apt-transport-https curl
Dále přidejte podpisový klíč Kubernetes do obou systémů:
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
Dále přidáme úložiště balíčků Kubernetes. Všimněte si, že v době psaní tohoto článku je Ubuntu 16.04 Xenial Xerus nejnovější dostupné úložiště Kubernetes. To by mělo být nakonec nahrazeno Ubuntu 20.04 Focal Fossa a následující příkaz lze poté aktualizovat z xenial
na focal
.
$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Nyní můžeme nainstalovat Kubernetes:
$ sudo apt nainstalovat kubeadm kubelet kubectl kubernetes-cni
Zakázat odkládací paměť
Kubernetes odmítne fungovat, pokud váš systém používá odkládací paměť. Než budete pokračovat dále, ujistěte se, že hlavní a pracovní uzel mají vypnutou odkládací paměť tímto příkazem:
$ sudo swapoff -a
Tento příkaz zakáže odkládací paměť, dokud se vaše systémy nerestartují, takže aby tato změna přetrvávala, otevřete tento soubor pomocí nano nebo vašeho oblíbeného textového editoru:
$ sudo nano /etc/fstab
Uvnitř tohoto souboru zakomentujte /swapfile
řádek tak, že před něj bude #
symbol, jak je vidět níže. Poté tento soubor zavřete a uložte změny.
Nastavte názvy hostitelů
Dále se ujistěte, že všechny vaše uzly mají jedinečný název hostitele. V našem scénáři používáme názvy hostitelů kubernetes-master
a kubernetes-worker
abychom mohli snadno odlišit naše hostitele a identifikovat jejich role. Pokud potřebujete změnit názvy hostitelů, použijte následující příkaz:
$ sudo hostnamectl set-hostname kubernetes-master
A na pracovním uzlu:
$ sudo hostnamectl set-hostname kubernetes-worker
Změny názvu hostitele v terminálu si nevšimnete, dokud neotevřete nový. Nakonec se ujistěte, že všechny vaše uzly mají přesný čas a datum, jinak se dostanete do problémů s neplatnými certifikáty TLS.
Inicializovat hlavní server Kubernetes
Nyní jsme připraveni inicializovat hlavní uzel Kubernetes. Chcete-li tak učinit, zadejte na svém hlavním uzlu následující příkaz:
kubernetes-master:~$ sudo kubeadm initKubernetes na hlavním uzlu Ubuntu 20.04 je nyní inicializován
Hlavní uzel Kubernetes byl nyní inicializován. Výstup nám poskytne kubeadm join
příkaz, který budeme muset později použít k připojení našeho pracovního uzlu (uzlů) k hlavnímu uzlu. Poznamenejte si tedy tento příkaz na později.
Výstup shora nám také radí, abychom jako běžný uživatel spustili několik příkazů, abychom mohli začít používat cluster Kubernetes. Spusťte tyto tři příkazy na hlavním uzlu:
kubernetes-master:~$ mkdir -p $HOME/.kubekubernetes-master:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configkubernetes-master:~$ sudo chown $( id -u):$(id -g) $HOME/.kube/config
Nasazení sítě podů
Dalším krokem je nasazení sítě pod. Síť pod se používá pro komunikaci mezi hostiteli a je nezbytná pro správné fungování clusteru Kubernetes. K tomu použijeme síť Flannel pod. V hlavním uzlu zadejte následující dva příkazy:
kubernetes-master:~$ použít kubectl -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubernetes-master:~$ použít kubectl -f https://raw .githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
V závislosti na vašem prostředí může spuštění celé flanelové sítě trvat jen několik sekund nebo minutu. Můžete použít kubectl
příkaz k potvrzení, že je vše v pořádku a připraveno:
kubernetes-master:~$ kubectl získat pody --all-namespacesSíť pod je úspěšně nasazena
Když se ve všech sloupcích STAV zobrazuje „Spuštěno“, znamená to, že vše je dokončeno a je připraveno.
Připojte se ke clusteru Kubernetes
Nyní je náš cluster připraven na připojení pracovních uzlů. Použijte kubeadm join
příkaz získaný dříve z inicializačního výstupu hlavního uzlu Kubernetes pro připojení ke clusteru Kubernetes:
kubernetes-worker:~$ sudo kubeadm připojit se k 192.168.1.220:6443 --token 1exb8s.2t4k3b5syfc3jfmo --discovery-token-ca-cert-hash sha256:72ad481cf261416256:72ad481cee49148 Připojování pracovního uzlu ke clusteru KubernetesZpět na hlavním uzlu Kubernetes potvrďte
kubernetes-worker
je nyní součástí našeho clusteru Kubernetes s tímto příkazem:kubernetes-master:~$ kubectl get nodesZobrazuje, jaké uzly jsou aktuálně v clusteru KubernetesNasazení služby na clusteru Kubernetes
Nyní jsme připraveni nasadit službu do clusteru Kubernetes. V našem příkladu nasadíme server Nginx do našeho nového clusteru jako důkaz koncepce. Na hlavním uzlu spusťte následující dva příkazy:
kubernetes-master:~$ kubectl spustit --image=nginx nginx-server --port=80 --env="DOMAIN=cluster"kubernetes-master:~$ kubectl vystavit nasazení nginx-server --port=80 --name=nginx-httpNyní byste měli vidět nový kontejner nginx docker nasazený na vašem pracovním uzlu:
kubernetes-worker:~$ sudo docker psNa pracovním uzlu Kubernetes je spuštěn nový kontejner Nginx dockeruMůžete zobrazit seznam všech dostupných služeb spuštěných ve vašem clusteru pomocí následujícího příkazu vydaného z uzlu Kubernetes maser:
kubernetes-master:~$ kubectl získat svcZobrazuje, jaké kontejnerizované služby běží v clusteru KubernetesZávěr
V tomto článku jsme se naučili, jak nastavit Kubernetes pro nasazení kontejnerových aplikací na Ubuntu 20.04 Focal Fossa. Nastavíme základní cluster sestávající ze dvou hostitelů, hlavního a pracovního, i když jej lze v případě potřeby škálovat na mnohem více pracovních uzlů.
Viděli jsme, jak nakonfigurovat Docker a další předpoklady, a také nasadit server Nginx v našem novém clusteru jako důkaz konceptu. Stejnou konfiguraci lze samozřejmě použít k nasazení libovolného počtu kontejnerizovaných aplikací.
Ubuntu