Kubernetes (k8s) je bezplatný nástroj pro orchestraci kontejnerů s otevřeným zdrojovým kódem. Používá se pro nasazení, škálování a správu aplikací založených na kontejnerech. V tomto článku si ukážeme, jak nainstalovat Kubernetes Cluster na Ubuntu 20.04 LTS Server (Focal Fossa) pomocí kubeadm . V nastavení mé laboratoře jsem použil tři serverové stroje Ubuntu 20.04 LTS. Níže jsou uvedeny systémové požadavky na každý systém Ubuntu.
- Minimálně 2 GB RAM
- 2 jádra (2 vCPU)
- 15 GB volného místa na /var
- Privilegovaný uživatel s právy sudo
- Stabilní připojení k internetu
Níže jsou uvedeny podrobnosti o nastavení mé laboratoře:
- Machine 1 (Ubuntu 20.04 LTS Server) – K8s-master – 192.168.1.40
- Machine 2 (Ubuntu 20.04 LTS Server) – K8s-node-0 – 192.168.1.41
- Machine 3 (Ubuntu 20.04 LTS Server) – K8s-node-1 – 192.168.1.42
Nyní přejdeme k instalačním krokům Kubernetes
Krok 1) Nastavte název hostitele a přidejte položky do souboru /etc/hosts
Použijte příkaz hostnamectl k nastavení názvu hostitele na každém uzlu, příklad je uveden níže:
$ sudo hostnamectl set-hostname "k8s-master" // Spusťte tento příkaz na hlavním uzlu$ sudo hostnamectl set-hostname "k8s-node-0" // Spusťte tento příkaz na node-0$ sudo hostnamectl set-hostname "k8s-node-1" // Spusťte tento příkaz na node-1
Přidejte následující položky do souborů /etc/hosts na každý uzel,
192.168.1.40 k8s-master192.168.1.41 k8s-node-0192.168.1.42 k8s-node-1
Krok 2) Nainstalujte Docker (Container Runtime) na všechny 3 uzly
Přihlaste se ke každému uzlu a spusťte následující příkazy pro instalaci dockeru,
$ sudo apt update$ sudo apt install -y docker.io
Nyní spusťte a povolte službu docker na každém uzlu pomocí příkazu systemctl,
$ sudo systemctl povolit docker.service --now
Spuštěním následujícího příkazu ověřte stav služby docker a její verzi,
$ systemctl status docker$ docker --version
Krok 3) Zakažte swap a povolte předávání IP na všech uzlech
Chcete-li zakázat swap, upravte soubor /etc/fstab a zakomentujte řádek, který obsahuje položku buď odkládací oddíl nebo odkládací soubor.
$ sudo vi /etc/fstab
Uložte a ukončete soubor
Spusťte příkaz swapoff a zakažte výměnu za běhu
$ sudo swapoff -a
Chcete-li trvale povolit předávání IP adres, upravte soubor „/etc/sysctl.conf“ a vyhledejte řádek „net.ipv4.ip_forward=1 “ a zrušte jeho komentář. Po provedení změn v souboru proveďte následující příkaz
$ sudo sysctl -pnet.ipv4.ip_forward =1 $
Krok 4) Nainstalujte Kubectl, kubelet a kubeadm na všechny uzly
Spuštěním následujících příkazů na všech 3 uzlech nainstalujte nástroj kubectl , kubelet a kubeadm
$ sudo apt install -y apt-transport-https curl$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"$ sudo apt update$ sudo apt install -y kubelet kubeadm kubectl
Poznámka: V době psaní tohoto článku bylo úložiště Kubernetes Ubuntu 16.04 (Xenial Xerus) dostupné, ale v budoucnu, až bude úložiště kubernetes dostupné pro Ubuntu 20.04, nahraďte xenial ústředním slovem ve výše uvedeném příkazu „apt-add-repository“.
Krok 4) Inicializujte Kubernetes Cluster pomocí kubeadm (z hlavního uzlu)
Přihlaste se ke svému hlavnímu uzlu (k8s-master) a spusťte pod příkazem „kubeadm init“ inicializaci clusteru Kubernetes,
$ sudo kubeadm init
Jakmile je cluster úspěšně inicializován, získáme následující výstup
Chcete-li začít používat cluster jako běžný uživatel, spusťte následující příkazy, příkazy jsou již ve výstupu, stačí je zkopírovat a vložit.
[e-mail chráněný]:~$ mkdir -p $HOME/.kube[e-mail chráněný]:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[chráněný e-mail]:~ $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
Nyní připojte pracovní uzly (k8s-node-0/1) do clusteru, příkaz pro připojení ke clusteru je již ve výstupu. Zkopírujte příkaz „kubeadm join“ a vložte jej na oba uzly (pracovní uzly).
Přihlaste se k Node-0 a spusťte následující příkaz,
[e-mail chráněný]:~$ sudo kubeadm připojit se 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b1578078c5b151bf239588c9afa4c8080
Přihlaste se k Node-1 a spusťte následující příkaz pro připojení ke clusteru,
[e-mail chráněný]:~$ sudo kubeadm připojit se 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b1578078c5b151bf239588c9afa4c8080
Z hlavního uzlu spusťte příkaz „kubectl get nodes“ pro ověření stavu uzlů
[Pre> [Ochránce e-mailů]:~ $ KuBectl Získejte stavový název NODESNAME ROLES AGE VERSIONK8S-MASTER NOTREADY MASTER 27M V1.18.3K8S-UDE-0 NOTREADIACE 8M3S V1.18.3K8S-NODE-1 NOTRACE 7M19S V1. 18.3[e-mail chráněný]:~$ Jak vidíme, jak pracovní uzly, tak hlavní uzel se připojily ke clusteru, ale stav každého uzlu je „NotReady “. Chcete-li nastavit stav „Připraveno ” musíme nasadit síťové doplňky na platformě Container Network Interface (CNI), jako je calico , kube-router a weave-net . Jak název napovídá, síťové doplňky modulů umožňují modulům komunikovat mezi sebou.
Krok 5) Nasaďte síťový doplněk Calico Pod (hlavní uzel)
Z hlavního uzlu spusťte následující příkaz k instalaci síťového doplňku Calico pod,
[e-mail chráněný]:~$ použít kubectl -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
Jakmile bude úspěšně nasazen, stav uzlů bude připraven, spusťte znovu příkaz kubectl a ověřte stav uzlů
[email protected]:~$ kubectl get nodesNAME STAV ROLE VĚK VERZE k8s-master Připraveno master 39 m v1.18.3k8s-node-0 Připraveno 18 m- 1 18 m-1 18.3[e-mail chráněný]:~$Spusťte níže uvedený příkaz a ověřte stav podů ze všech jmenných prostorů
Perfektní, výše potvrzuje, že všechny lusky běží a jsou ve zdravém stavu. Zkusme nasadit moduly, službu a nasazení, abychom zjistili, zda náš cluster Kubernetes funguje dobře nebo ne.
Poznámka: Chcete-li povolit funkci dokončování bash na vašem hlavním uzlu, proveďte následující
[e-mail chráněný]:~$ echo 'zdroj <(kubectl dokončení bash)'>>~/.bashrc[e-mail chráněný]:~$ zdroj .bashrcKrok 6) Otestujte a ověřte Kubernetes Cluster
Pojďme vytvořit nasazení s názvem nginx-web s obrázkem kontejneru nginx ve výchozím jmenném prostoru, spusťte následující příkaz kubectl z hlavního uzlu,
[chráněno e-mailem]:~$ vytvoření nasazení kubectl nginx-web --image=nginxdeployment.apps/nginx-web vytvořeno[chráněno e-mailem]:~$Spuštěním níže uvedeného příkazu ověřte stav nasazení
[email protected]:~$ kubectl get deployments.appsNAME PŘIPRAVENO AKTUALIZOVANÉ DOSTUPNÉ AGEnginx-web 1/1 1 1 $ - -Date dostupné věkové kontejnery Obrázky SelectOrngonx-Web 1/1 1 1 56s nginx nginx app =nginx-web [chráněno e-mailem]:~ $ [chráněno e-mailem]:~ $ kubectl Získat podsname připravit Stav restartování agenginx-web-7748f7f7f7f7-nk8b2 1 /1 Běží 0 2 m50 s[e-mail chráněno]:~$Jak vidíme, nasazení bylo úspěšně vytvořeno s výchozí replikou.
Zvětšeme nasazení, nastavte repliky jako 4. Spusťte následující příkaz
[chráněno e-mailem]:~$ kubectl scale --replicas=4 nasazení nginx-webdeployment.apps/nginx-web scaled[e-mailem chráněno]:~$Nyní ověřte stav svého nasazení pomocí následujících příkazů
[e-mail protected]:~$ kubectl get deployments.apps nginx-webNAME PŘIPRAVENO AKTUÁLNĚ K DISPOZICI AGEnginx-web 4/4 4 $ 4 $ chráněno 4 1 [e-mail bec t protect ] deployments.apps nginx-web
Výše uvedené potvrzuje, že nasazení založené na nginx bylo úspěšně škálováno.
Provedeme ještě jeden test, vytvoříme pod s názvem „http-web“ a vystavíme jej prostřednictvím služby s názvem „http-service“ s portem 80 a typem NodePort.
Spuštěním následujícího příkazu vytvořte modul
[e-mail chráněn]:~$ kubectl spustit http-web --image=httpd --port=80pod/http-web created[e-mail protected]:~$Vytvořte službu pomocí příkazu beneath a vystavte výše vytvořený modul na portu 80,
[e-mail chráněný]:~$ kubectl expose pod http-web --name=http-service --port=80 --type=NodePortservice/http-service vystaven[e-mail chráněn]:~$[e-mail chráněn]:~$ kubectl získat službu http-serviceNAME TYP CLUSTER-IP EXTERNÍ-IP PORT(S) AGEhttp-service NodePort 10.101.152.138 8 s:8 TC 8 p:8 TC
Získejte IP adresu uzlu nebo název hostitele, na kterém je nasazený http-web pod, a poté přejděte na webový server přes NodePort (31098)
[chráněn e-mailem]:~$[chráněn e-mailem]:~$ curl http://k8s-node-0:31098 Funguje to!
[e-mail chráněn]:~$Perfektní, funguje podle očekávání. Toto uzavírá článek a potvrzuje, že jsme úspěšně nastavili cluster Kubernetes na serveru Ubuntu 20.04 LTS.
Přečtěte si také :Jak nastavit NGINX Ingress Controller v Kubernetes
Přečtěte si také : Jak nastavit soukromý registr dockerů v Kubernetes (k8s)
Jak nainstalovat a nakonfigurovat Nginx na Ubuntu 18.04 / Debian 9 Jak nainstalovat KVM na Ubuntu 20.04 LTS Server (Focal Fossa)Ubuntu