Bevezetés
Kubernetes egy nyílt forráskódú eszköz, amely kulcsfontosságú a konténer-hangszerelésben. A Kubernetes klaszterek nagy léptékű hangszerelésével és kezelésével működik különböző felhőkörnyezetekben vagy akár helyszíni szervereken. A klaszter olyan gazdagépek összessége, amelyek konténerizált alkalmazások és szolgáltatások futtatására szolgálnak. Egy klaszter működéséhez legalább két csomópontra van szükség – egy master csomópontra és egy worker csomópontra. A skálázhatóságot szem előtt tartva lehetőség van a klaszter bővítésére annyi worker csomóponttal, amennyire szükség van.
A Kubernetes-ben a csomópont (node) egy szerverre utal. A master csomópont egy olyan szerver, amely a klaszter állapotát kezeli. A worker csomópontok olyan szerverek, amelyek a munkaterheléseket futtatják – ezek jellemzően konténerizált alkalmazások és szolgáltatások.
Ez az útmutató végigvezeti Önt egy két csomópontból álló Kubernetes klaszter telepítésének és üzembe helyezésének lépésein Ubuntu 20.04-en. Mint említettük, a két csomópont a legalapvetőbb konfiguráció a Kubernetes használatakor. Lehetősége van további worker csomópontok hozzáadására is, miután megértette az alapokat. A továbbiakban megmutatjuk, hogyan kapcsolhatja össze a két szervert, hogy a master csomópont vezérelhesse a worker csomópontot.
A konfiguráció teszteléséhez egy Docker konténert fogunk telepíteni, amely az Nginx webszervert futtatja a klaszteren. Ez a Kubernetes egy tipikus, valós életbeli alkalmazása. A folyamat során többet fog megtudni a Kubernetes néhány meghatározó összetevőjéről, mint például a kubectl és a kubeadm eszközökről. Javasoljuk továbbá, hogy először ismerkedjen meg a Kubernetes eszközkészlet alapjainak megismeréséről szóló útmutatónkkal, hogy képbe kerüljön a Kubernetes platform alapjaival.
Most pedig kezdjük el!
Előfeltételek
Két szervert kell biztosítania, amelyek az alábbi rendszeren futnak: Ubuntu 20.04. A legjobb teljesítmény érdekében a Kubernetes minimális rendszerkövetelménye 2 GB RAM és 2 CPU. Követheti ennek a lépésről lépésre követhető útmutatónak az 1–4. lépéseit, amely segít az Ubuntu szerver beállításában a CloudSigma-n. Az egyik szerver lesz a master csomópont, a másik pedig a worker csomópont. A két szerverünket találóan így neveztük el: kubernetes-master és kubernetes-worker. Ez megkönnyíti az útmutató követését. Ön azonban szabadon megválaszthatja a kívánt gépneveket.
-
Gondoskodjon arról, hogy mindkét csomóponton hozzáadjon egy sudo jogosultságokkal rendelkező felhasználót, akit a fenti útmutatóban leírt parancsok futtatására fogunk használni. Kövesse ezt a Linux sudoers fájl konfigurálásáról szóló útmutatót az utasításokért.
-
Hálózati kapcsolat – a klaszterben lévő szervereknek képesnek kell lenniük kommunikálni egymással. Amikor létrehozza a virtuális gépeit a CloudSigma platformon, azok alapértelmezés szerint nyilvános IP-címmel kapcsolódnak az internethez. Ha helyi hálózatról dolgozik, előfordulhat, hogy szerkesztenie kell az /etc/hosts fájlt mindegyik szerveren, és megfelelően össze kell kapcsolnia őket.
-
Telepítenie és engedélyeznie kell a Docker -t mindegyik csomóponton. A Kubernetes egy konténer-futtatókörnyezetre támaszkodik a konténerek podokban való futtatásához. Bár más konténerplatformok közül is lehet választani, ebben az útmutatóban a Dockert fogjuk használni. A Docker biztosítja az Ubuntu számára szükséges futtatókörnyezetet. Követheti a Docker telepítéséről és működtetéséről szóló útmutatónk.
1. lépés: A Kubernetes telepítése
Ebben a lépésben telepíteni fogjuk a Kubernetes-t. Csakúgy, mint a Docker esetében az előfeltételekben, a Kubernetes telepítéséhez mindkét csomóponton le kell futtatnia a parancsokat. Használja az ssh-t a mindkét csomópontba való bejelentkezéshez és a folytatáshoz. Kezdésként telepítse az apt-transport-https csomagot, amely lehetővé teszi a http és https protokollok használatát az Ubuntu tárolóiban. Telepítse a curl-t is, mivel erre szükség lesz a következő lépésekben. Futtassa a következő parancsot:
|
1 |
sudo apt install apt-transport-https curl |
Ezután adja hozzá a Kubernetes aláíró kulcsot mindkét csomóponthoz a következő parancs futtatásával:
|
1 |
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add |
Ezután adjuk hozzá a Kubernetes tárolót csomagforrásként mindkét csomóponton a következő parancs használatával:
|
1 2 |
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" >> ~/kubernetes.list sudo mv ~/kubernetes.list /etc/apt/sources.list.d |
Ezt követően frissítse a csomópontokat:
|
1 |
sudo apt update |
- Kubernetes eszközök telepítése
Amint a frissítés befejeződött, telepítjük a Kubernetes-t. Ez a Kubernetes-t alkotó különféle eszközök telepítését jelenti: kubeadm, kubelet, kubectl, és kubernetes-cni. Ezeket az eszközöket mindkét csomópontra telepíteni kell. Az alábbiakban bemutatjuk az egyes eszközöket:
-
kubelet – egy ügynök, amely minden csomóponton fut, és kezeli a fő (master) csomóponttal való kommunikációt a munkaterhelések elindításához a konténer-futtatókörnyezetben. Írja be a következő parancsot a kubelet telepítéséhez:
|
1 |
sudo apt install kubelet |
-
kubeadm – a Kubernetes projekt része, és segít a Kubernetes fürt inicializálásában. Írja be a következő parancsot a kubeadm telepítéséhez:
|
1 |
sudo apt install kubeadm |
-
kubectl – a Kubernetes parancssori eszköze, amellyel parancsokat futtathat a Kubernetes fürtökön belül. Futtassa a következő parancsot a kubectl telepítéséhez:
|
1 |
sudo apt install kubectl |
-
kubernetes-cni – lehetővé teszi a hálózatkezelést a konténereken belül, biztosítva, hogy a konténerek kommunikálhassanak és adatokat cserélhessenek. Futtassa a következő parancsot a telepítéshez:
|
1 |
sudo apt-get install -y kubernetes-cni |
Opcionálisan mind a négyet telepítheti egyetlen paranccsal:
|
1 |
sudo apt-get install -y kubelet kubeadm kubectl kubernetes-cni |
2. lépés: A swap memória letiltása
A Kubernetes nem működik olyan rendszerben, amely swap memóriát használ. Ezért le kell tiltani a fő (master) csomóponton és az összes munkavégző (worker) csomóponton. Futtassa a következő parancsot a swap memória letiltásához:
|
1 |
sudo swapoff -a |
Ez a parancs letiltja a swap memóriát a rendszer újraindításáig. Biztosítanunk kell, hogy az újraindítások után is kikapcsolva maradjon. Ezt a fő és az összes munkavégző csomóponton meg kell tenni. Ezt a fstab fájl szerkesztésével és a /swapfile sor kikommentelésével tehetjük meg egy # karakterrel. Nyissa meg a fájlt a nano szövegszerkesztővel a következő parancs beírásával:
|
1 |
sudo nano /etc/fstab |
A fájlon belül kommentelje ki a swapfile sort az alábbi képernyőképen látható módon:

Ha nem látja a swapfile sort, egyszerűen hagyja figyelmen kívül. Mentse és zárja be a fájlt, ha végzett a szerkesztéssel. Kövesse ugyanezt a folyamatot mindkét csomópont esetében. Mostantól a swap memória beállításai kikapcsolva maradnak, még a szerver újraindítása után is.
3. lépés: Egyedi gépnevek (hostnames) beállítása
A könnyebb azonosítás érdekében a csomópontoknak egyedi gépnevekkel kell rendelkezniük. Ha sok csomópontból álló fürtöt telepít, beállíthat azonosító neveket a munkavégző csomópontok számára, például node-1, node-2 stb. Ahogy korábban említettük, a mi csomópontjainkat kubernetes-master és kubernetes-worker néven neveztük el. Ezeket a szerver létrehozásakor állítottuk be. Ha azonban még nem tette meg, a parancssorból módosíthatja vagy beállíthatja a sajátját. A gépnév módosításához a fő (master) csomóponton futtassa a következő parancsot:
|
1 |
sudo hostnamectl set-hostname kubernetes-master |
A munkavégző (worker) csomóponton futtassa a következő parancsot:
|
1 |
sudo hostnamectl set-hostname kubernetes-worker |
Bezárhatja a jelenlegi terminálmunkamenetet, majd ssh-n keresztül újra beléphet a szerverre a változások megtekintéséhez.
4. lépés: Az Iptables engedélyezése a híd (bridged) forgalom megtekintésére
Ahhoz, hogy a fő és a munkavégző csomópontok megfelelően lássák a híd (bridged) forgalmat, biztosítania kell, hogy a net.bridge.bridge-nf-call-iptables értéke 1-re legyen állítva a konfigurációban. Először győződjön meg arról, hogy a br_netfilter modul be van töltve. Ezt a következő parancs kiadásával ellenőrizheti:
|
1 |
lsmod | grep br_netfilter |
Opcionálisan kifejezetten is betöltheti a következő paranccsal:
|
1 |
sudo modprobe br_netfilter |
Most futtathatja ezt a parancsot az érték 1-re állításához:
|
1 |
sudo sysctl net.bridge.bridge-nf-call-iptables=1 |
5. lépés: A Docker Cgroup illesztőprogram módosítása
Alapértelmezés szerint a Docker a következővel települ: “cgroupfs” mint cgroup illesztőprogram. A Kubernetes azt javasolja, hogy a Docker a következővel fusson, mint “systemd” illesztőprogrammal. Ha kihagyja ezt a lépést, és a következő lépésben megpróbálja inicializálni a kubeadm-et, a következő figyelmeztetést fogja kapni a terminálon:
|
1 2 |
[preflight] Running pre-flight checks [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ |
Mind a master, mind a worker csomópontokon frissítse a cgroupdriver értéket a következő parancsokkal:
|
1 2 3 4 5 6 7 8 9 |
sudo mkdir /etc/docker cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF |
Ezután futtassa a következő parancsokat a Docker újraindításához és engedélyezéséhez a rendszerindításkor:
|
1 2 3 |
sudo systemctl enable docker sudo systemctl daemon-reload sudo systemctl restart docker |
Miután ez be van állítva, rátérhetünk a szórakoztató részre, a Kubernetes fürt telepítésére!
6. lépés: A Kubernetes Master csomópont inicializálása
A Kubernetes fürt telepítésének első lépése a master csomópont elindítása. Miközben a master csomópont termináljában van, futtassa a következő parancsot a kubernetes-master:
|
1 |
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 |
Ha futtatja a fenti parancsot, és a rendszere nem felel meg az elvárt követelményeknek, például a minimális RAM-nak vagy CPU-nak, ahogy azt az Előfeltételek szakasz részletezi, figyelmeztetést fog kapni, és a fürt nem fog elindulni:

Az alábbi képernyőkép mutatja, hogy az inicializálás sikeres volt. Hozzáadtunk egy jelzőt is a pod hálózat megadásához a 10.244.0.0 IP-címmel, ez az az alapértelmezett IP-cím, amelyet a kube-flannel használ. A pod hálózatról részletesebben a következő lépésben lesz szó.

A kimenetben látható a kubeadm join parancs (az IP-címünket elrejtettük) és egy egyedi token, amelyet a worker csomóponton és minden más olyan worker csomóponton futtatnia kell, amelyet csatlakoztatni szeretne ehhez a fürthöz. Ezután másolja ki ezt a parancsot, mert később szüksége lesz rá a worker csomóponton.
A kimenetben a Kubernetes néhány további parancsot is megjelenít, amelyeket normál felhasználóként kell futtatnia a master csomóponton, mielőtt elkezdené használni a fürtöt. Futtassuk ezeket a parancsokat:
|
1 2 3 |
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config |
Most már inicializáltuk a master csomópontot. Azonban be kell állítanunk a pod hálózatot is a master csomóponton, mielőtt csatlakoztatnánk a worker csomópontokat.
7. lépés: Pod hálózat telepítése
A pod hálózat megkönnyíti a szerverek közötti kommunikációt, és szükséges a Kubernetes fürt megfelelő működéséhez. További információkat olvashat a Kubernetes fürt hálózatkezeléséről a hivatalos dokumentációban. Ebben az útmutatóban a Flannel pod hálózatot fogjuk használni. A Flannel egy egyszerű overlay hálózat, amely megfelel a Kubernetes követelményeinek.
Mielőtt telepítenénk a pod hálózatot, ellenőriznünk kell a tűzfal állapotát. Ha engedélyezte a tűzfalat az Ubuntu szerver beállításáról szóló útmutató 5. lépésének követése után, először hozzá kell adnia egy tűzfal szabályt, hogy kivételt hozzon létre a porthoz6443 (a Kubernetes alapértelmezett portja) számára. Futtassa a következő ufw parancsokat mind a master, mind a worker csomópontokon:
|
1 2 |
sudo ufw allow 6443 sudo ufw allow 6443/tcp |
Ezt követően futtathatja az alábbi két parancsot a pod hálózat telepítéséhez a master csomóponton:
|
1 2 |
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml |
Ez a környezetétől függően néhány másodperctől egy percig is eltarthat a flannel hálózat betöltéséhez. Futtassa a következő parancsot annak ellenőrzésére, hogy minden elindult-e:
|
1 |
kubectl get pods --all-namespaces |
A parancs kimenetének minden szolgáltatás állapotát futóként kell mutatnia, ha minden sikeres volt:

Megtekintheti az összetevők egészségi állapotát is a get componentstatus parancs használatával:
|
1 |
kubectl get componentstatus |

Ennek a parancsnak van egy rövid formája is, a cs:
|
1 |
kubectl get cs |

Ha nem egészséges (unhealthy) állapotot lát, módosítsa a következő fájlokat, és törölje a (spec->containers->command) résznél azt a sort, amely ezt a kifejezést tartalmazza: - --port=0 :
|
1 |
sudo nano /etc/kubernetes/manifests/kube-scheduler.yaml |
Tegye ugyanezt ezzel a fájllal is:
|
1 |
sudo nano /etc/kubernetes/manifests/kube-controller-manager.yaml |
Végül indítsa újra a Kubernetes szolgáltatást:
|
1 |
sudo systemctl restart kubelet.service |
8. lépés: Worker csomópontok csatlakoztatása a Kubernetes fürthöz
Miután a kubernetes-master csomópont elindult és a pod hálózat készen áll, csatlakoztathatjuk a worker csomópontjainkat a fürthöz. Ebben az útmutatóban csak egy worker csomópontunk van, így azzal fogunk dolgozni. Ha több worker csomópontja van, bármikor követheti az alább ismertetett lépéseket a fürthöz való csatlakozáshoz.
Először jelentkezzen be a worker csomópontjára egy külön terminál munkamenetben. A kubeadm join parancsot fogja használni, amely a termináljában jelent meg, amikor inicializáltuk a master csomópontot a 6. lépésben. Futtassa a parancsot:
|
1 |
sudo kubeadm join 127.0.0.188:6443 --token u81y02.91gqwkxx6rnhnnly --discovery-token-ca-cert-hash sha256:4482ab1c66bf17992ea02c1ba580f4af9f3ad4cc37b24f189db34d6e3fe95c2d |
A fürthöz való csatlakozás befejeztével az alábbi képernyőképhez hasonló kimenetet kell látnia:

Miután a csatlakozási folyamat befejeződött, váltson a master csomópont termináljára, és futtassa a következő parancsot annak ellenőrzésére, hogy a worker csomópont csatlakozott-e a fürthöz:
|
1 |
kubectl get nodes |
A fenti parancs kimenetéről készült képernyőképen látható, hogy a worker csomópont csatlakozott a fürthöz:

9. lépés: Alkalmazás telepítése a Kubernetes fürthöz
Ezen a ponton sikeresen beállított egy Kubernetes fürtöt. Tegyük használhatóvá a fürtöt egy szolgáltatás telepítésével. Az Nginx egy népszerű webszerver, amely hihetetlen sebességgel büszkélkedhet még több ezer kapcsolat esetén is. Telepíteni fogjuk az Nginx webszervert a fürthöz, hogy bebizonyítsuk, ezt a beállítást valós alkalmazásokban is használhatja.
Futtassa a következő parancsot a master csomóponton egy Kubernetes deployment létrehozásához az Nginx számára:
|
1 |
kubectl create deployment nginx --image=nginx |
A létrehozott deployment megtekintéséhez használja a describe deployment parancsot:
|
1 |
kubectl describe deployment nginx |

Ahhoz, hogy a(z) nginx szolgáltatás elérhető legyen az interneten keresztül, futtassa a következő parancsot:
|
1 |
kubectl create service nodeport nginx --tcp=80:80 |

A fenti parancs egy nyilvánosan elérhető szolgáltatást hoz létre az Nginx deploymenthez. Mivel ez egy nodeport típusú deployment, a Kubernetes egy portot rendel a szolgáltatáshoz a következő tartományból: 32000+.
Az aktuális szolgáltatásokat a következő parancs kiadásával kérdezheti le:
|
1 |
kubectl get svc |

Látható, hogy a hozzárendelt portunk a(z) 32264. Jegyezze fel a terminálon megjelenő portot a következő lépésben való használathoz.
Az Nginx szolgáltatás sikeres telepítésének ellenőrzéséhez futtasson egy curl hívást a worker csomópontra a masterről. Cserélje ki a worker csomópont IP-címét és a fenti parancsból kapott portot:
|
1 |
curl your-kubernetes-worker-ip:32264 |
Látnia kell az alapértelmezett Nginx index.html:

Opcionálisan meglátogathatja a worker csomópont IP-címének és portjának kombinációját a böngészőjében, és megtekintheti az alapértelmezett Nginx index oldalt:

A következőképpen törölhet egy deploymentet a nevének megadásával. Például ez a parancs törli a deploymentünket:
|
1 |
kubectl delete deployment nginx |
Sikeresen teszteltük a klaszterünket!
Összegzés
Ebben az útmutatóban megtanulta, hogyan kell telepíteni egy Kubernetes klasztert Ubuntu 20.04-en. Beállított egy master és egy worker csomópontból álló klasztert. Sikerült telepítenie a Kubernetes eszközkészletet, létrehozott egy pod hálózatot, és csatlakoztatta a worker csomópontot a master csomóponthoz. Koncepciónkat egy Nginx webszerver alapvető telepítésével is teszteltük a klaszteren. Ez alapul szolgálhat az Ubuntu-n futó Kubernetes klaszterekkel való munkához.
Bár csak egy worker csomópontot használtunk, a klasztert tetszőleges számú csomóponttal bővítheti. Ha szeretne mélyebben elmerülni a DevOps-ban olyan automatizálási eszközökkel, mint az Ansible, van egy útmutatónk, amely részletesen bemutatja a Kubernetes klaszterek telepítését az Ansible és a Kubeadm segítségével – nézze meg. Ha szeretné megtanulni, hogyan kell PHP alkalmazást telepíteni egy Kubernetes klaszteren, tekintse meg ezt az útmutatót.
Kellemes számítógépezést!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.