Kubernetes je bezplatný a otevřený systém pro orchestraci kontejnerů, který lze použít k nasazení a správě kontejneru. Byl vyvinut společností Google a speciálně navržen pro automatické škálování a automatizované nasazení. Kubernetes může běžet na jakékoli cloudové infrastruktuře a na holém kovu. Kubernetes umožňuje distribuovat více aplikací v rámci clusteru uzlů. Kubernetes přichází s bohatou sadou funkcí včetně samoléčení, automatické škálovatelnosti, vyvažování zátěže, spouštění dávek, horizontálního škálování, zjišťování služeb, orchestrace úložiště a mnoha dalších.
V tomto tutoriálu se naučíme, jak nastavit Nginx load balancing s Kubernetes na Ubuntu 18.04.
Požadavky
- Dva servery s nainstalovaným Ubuntu 18.04.
- Na každém serveru je nainstalováno minimálně 2 GB paměti RAM.
- Na obou serverech je nakonfigurováno heslo uživatele root.
Začínáme
Nejprve budete muset aktualizovat oba servery na nejnovější stabilní verzi. Můžete je aktualizovat spuštěním následujícího příkazu:
apt-get update -y
apt-get upgrade -y
Jakmile jsou oba servery aktualizovány, restartujte je, aby se všechny změny projevily.
Ve výchozím nastavení Kuberenetes nepodporuje odkládací paměť a nebude fungovat, pokud je swap aktivní. Takže budete muset zakázat odkládací paměť na obou serverech.
Chcete-li dočasně zakázat odkládací paměť, spusťte následující příkaz:
swapoff -a
Chcete-li trvale zakázat odkládací paměť, otevřete soubor /etc/fstab:
nano /etc/fstab
Zakomentujte poslední řádek:
# /etc/fstab:informace o statickém systému souborů.
#
# použijte 'blkid' k vytištění univerzálně jedinečného identifikátoru zařízení
#; to lze použít s uuid=jako robustnější způsob pojmenování zařízení
#, který funguje i po přidání a odebrání disků. viz fstab(5).
#
# <systém souborů> <bod připojení> <typ> <možnosti> <skládka> <pass>
# / byl během instalace zapnutý /dev/sda1
# swap byl během instalace zapnutý /dev/sda4#UUID=65se21r-1d3t-3263-2198-e564c275e156 žádný swap sw 0 0Uložte a zavřete soubor. Poté spusťte následující příkaz a použijte změny konfigurace:
mount -aDále budete muset nastavit rozlišení názvu hostitele na obou serverech. Každý server tedy může mezi sebou komunikovat pomocí názvu hostitele.
Chcete-li tak učinit, otevřete soubor /etc/hosts pomocí preferovaného editoru:
nano /etc/hostsPřidejte následující řádky:
192.168.0.103 master192.168.0.100 slavePo dokončení uložte a zavřete soubor. Poté přejděte k dalšímu kroku.
Instalovat Docker And Kubernetes
Dále budete muset nainstalovat nástroje Docker a Kubernetes kubelet, kubeadm a kubectl na oba servery.
Nejprve nainstalujte požadované balíčky a přidejte klíč GPG pomocí následujícího příkazu:
apt-get install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -Dále přidejte úložiště Docker CE na oba servery spuštěním následujícího příkazu:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"Dále aktualizujte úložiště a nainstalujte Docker CE pomocí následujícího příkazu:
apt-get update -y
apt-get install docker-ce -yPo dokončení instalace zkontrolujte stav Docker CE pomocí následujícího příkazu:
systemctl status dockerMěli byste vidět následující výstup:
? docker.service – Docker Application Container Engine Načteno:načteno (/lib/systemd/system/docker.service; povoleno; přednastaveno dodavatelem:povoleno) Aktivní:aktivní (běží) od pá 2019-07-19 07:05:50 UTC; Před 1h 24min Dokumenty:https://docs.docker.com Hlavní PID:3619 (dockerd) Úkoly:8 CGroup:/system.slice/docker.service ??3619 /usr/bin/dockerd -H fd:// - -containerd=/run/containerd/containerd.sock 19. července 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.574491681Z" level=warning msg="Vaše jádro wap nepodporuje s limit"Jul 19 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.575196691Z" level=warning msg="Vaše jádro nepodporuje cgroup rt period" 19. července 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.575733336Z" level=warning msg="Vaše jádro nepodporuje cgroup rt runtime" 19. července 07:05:48 master dockerd[3619]:="2019-07-19T07:05:48.582517104Z" level=info msg="Načítání kontejnerů:start."Jul 19 07:05:49 master dockerd[3619]:time="2019-07-19T07:05:2549.39 Z" level=info msg="Výchozí most (docker0) je přiřazen s IP addJul 19 07:05:49 master dockerd[3619]:time="2019-07-19T07:05:49.681478822Z" level=info msg="Načítání con tainers:done." Jul 19 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.003776717Z" level=info msg="Docker daemon" commit=0dd43dd graphdriver(s)=overlaJul 19 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.009892901Z" level=info msg="Daemon dokončil inicializaci" Jul 19 07:05:50 master systemd[1]:Started Docker Application Container Engine.Jul 19 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.279284258Z" level=info msg="API poslouchat na /var/run/docker.sock "."Balíčky Kubernetes nejsou dostupné ve výchozím úložišti Ubuntu 18.04. Takže budete muset přidat úložiště Kubernetes na oba servery.
Můžete jej přidat pomocí následujících příkazů:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo 'deb http://apt.kubernetes.io/ kubernetes-xenial main' | tee /etc/apt/sources.list.d/kubernetes.listDále aktualizujte úložiště a nainstalujte balíčky Kubernetes pomocí následujícího příkazu:
apt-get install kubelet kubeadm kubectl -yJakmile jsou všechny balíčky nainstalovány, můžete pokračovat v konfiguraci hlavního serveru.
Konfigurace hlavního serveru Kubernetes
Nejprve budete muset inicializovat váš cluster s jeho privátní IP adresou na hlavním serveru:
Můžete to udělat pomocí příkazu kubeadm:
kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.0.103Po úspěšné inicializaci Clusteru byste měli vidět následující výstup:
Vaše řídicí rovina Kubernetes byla úspěšně inicializována! Chcete-li začít používat svůj cluster, musíte jako běžný uživatel spustit následující:mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $ HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configNyní byste měli nasadit síť pod do clusteru. Spusťte "kubectl apply -f [podnetwork].yaml" s jednou z možností uvedených na:https://kubernetes.io/docs/concepts/cluster-administration/addons/Pak se můžete připojit k libovolnému počtu pracovních uzlů spuštěním následujícího na každém jako root:kubeadm join 192.168.0.103:6443 --token zsyq2w.c676bxzjul3upd7u \ --discovery-token-ca-cert-hash sha256:a720ae35d472162177f6ee39de758a5de40043f53e4a2cf3004>Dále budete muset nakonfigurovat nástroj kubectl na vašem hlavním serveru. Můžete to udělat pomocí následujícího příkazu:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g ) $HOME/.kube/configDále budete muset na svůj server nasadit rozhraní CNI (Container Networking Interface). Protože cluster nemá CNI.
CNI můžete nasadit do svého clusteru pomocí následujícího příkazu:
kubectl použít -f https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yamlMěli byste vidět následující výstup:
configmap/calico-config createddaemonset.extensions/calico-etcd createdservice/calico-etcd createddaemonset.extensions/calico-node createddeployment.extensions/calico-kube-controllers createddeployment.extensions/calico-policy-controller createdclusterrolebinding.rbac. .k8s.io/calico-cni-plugin createdclusterrole.rbac.authorization.k8s.io/calico-cni-plugin createdserviceaccount/calico-cni-plugin createdclusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers createdclusterrole.rbac .authorization.k8s.io/calico-kube-controllers createdserviceaccount/calico-kube-controllers createdNyní můžete zkontrolovat své jmenné prostory spuštěním následujícího příkazu:
kubectl získat jmenné prostoryPokud vše proběhne v pořádku, měli byste vidět následující výstup:
NAME STATUS AGEdefault Active 4hkube-public Active 4hkube-system Active 4hDále ověřte, zda hlavní uzel nyní běží správně pomocí následujícího příkazu:
kubectl získat uzlyMěli byste vidět následující výstup:
název stav role věk versionmaster Ready master 12m v1.15.3Přidat Slave do clusteru Kubernetes
Dále se přihlaste ke svému podřízenému serveru a spusťte následující příkaz pro přidání podřízeného serveru do clusteru Kubernetes:
připojit se ke kubeadm 192.168.0.103:6443 --token zsyq2w.c676bxzjul3upd7u --discovery-token-ca-cert-hash sha256:a720ae35d472162177f75eed49ef75eed439de038ee439deDále přejděte na hlavní server a zkontrolujte, zda je podřízený server přidán do vašeho clusteru Kubernetes pomocí následujícího příkazu:
kubectl získat uzlyMěli byste vidět následující výstup:
jméno stav role věk verzemaster ready master 25m v1.15.3slave ready 2m v1.15.3Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Nasazení NGINX na clusteru Kubernetes
Kubernetes cluster je nyní nainstalován, nakonfigurován a funguje správně. Je čas nasadit Nginx na cluster Kubernetes.
Přejděte na hlavní server a vytvořte nasazení Nginx pomocí následujícího příkazu:
kubectl vytvořit nasazení nginx --image=nginxNyní můžete vypsat rozmístění Nginx pomocí následujícího příkazu:
kubectl získat nasazeníMěli byste vidět následující výstup:
JMÉNO PŘIPRAVENO AKTUÁLNĚ DOSTUPNÉ AGEnginx 1/1 1 1 99sPo nasazení Nginx lze aplikaci zpřístupnit pomocí následujícího příkazu:
kubectl vytvořit servisní nodeport nginx --tcp=80:80Nyní můžete vidět novou adresu Service a ClusterIP přiřazenou následujícím příkazem:
kubectl získat svcMěli byste vidět následující výstup:
NAME TYP CLUSTER-IP EXTERNÍ-IP PORT(Y) AGEkubernetes ClusterIP 10.152.183.1 <žádný> 443/TCP 15mnginx ClusterIP 10.152.183.199 <žádný> 80:32450sGratulujeme! úspěšně jste nasadili Nginx na clusteru Kubernetes. Do clusteru Kubernetes můžete také snadno přidat další uzel. Další informace najdete v oficiálním dokumentu Kubernetes na adrese Kubernetes Doc. Neváhejte se mě zeptat, pokud máte nějaké otázky.
Jak nainstalovat Strider Continuous Integration Server na Ubuntu 18.04 LTS Nainstalujte Automad CMS s Nginx a Lets Encrypt SSL na Ubuntu 18.04Ubuntu