Kubernetes, také známý jako k8s, je opensource a přenosná platforma pro orchestraci kontejnerů pro automatizaci nasazení a správy kontejnerových aplikací. Kubernetes byl původně vytvořen společností Google v programovacím jazyce Go. V současnosti jej spravuje Cloud Native Computing Foundation.
V této příručce vás krok za krokem provedeme, jak nainstalovat cluster Kubernetes na RHEL 8. Předvedeme si to pomocí jednoho hlavního a jednoho pracovního uzlu, které přidáme do našeho clusteru.
Nastavení laboratoře
- Hlavní uzel: master-node-k8 10.128.15.228
- Worker node: worker-node-1-k8 10.128.15.230
POZNÁMKA:Kroky 1 až 6 by měly být aplikovány na hlavní i pracovní uzel.
Krok 1) Zakažte odkládací prostor
Pro nejlepší výkon vyžaduje Kubernetes deaktivaci swapu na hostitelském systému. Je to proto, že swapování paměti může výrazně vést k nestabilitě a snížení výkonu.
Chcete-li zakázat odkládací prostor, spusťte příkaz:
$ sudo swapoff -a
Aby byly změny trvalé, upravte soubor /etc/fstab a odstraňte nebo okomentujte řádek s položkou swap a uložte změny.
Krok 2) Zakažte SELinux
Navíc musíme deaktivovat SELinux a nastavit jej na „povolující“, abychom umožnili hladkou komunikaci mezi uzly a moduly.
Chcete-li toho dosáhnout, otevřete konfigurační soubor SELinux.
$ sudo vi /etc/selinux/config
Změňte hodnotu SELINUX z vynucování na permisivní.
SELINUX=permisivní
Případně můžete použít příkaz sed následovně.
$ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Krok 3) Nakonfigurujte síť v hlavním a pracovním uzlu
Aby vaše hlavní a pracovní uzly mohly efektivně komunikovat, je vyžadována určitá další konfigurace sítě. Na každém uzlu upravte soubor /etc/hosts.
$ sudo vi /etc/hosts
Dále aktualizujte položky podle obrázku
10.128.15.228 master-node-k8 // Pro hlavní uzel10.128.15.230 worker-node-1-k8 // Pro uzel Worker
Uložte a ukončete konfigurační soubor. Dále nainstalujte balíček obslužného programu pro řízení provozu:
$ sudo dnf install -y iproute-tc
Krok 4) Povolte pravidla brány firewall pro k8
Pro bezproblémovou komunikaci mezi hlavním a pracovním uzlem musíte nakonfigurovat bránu firewall a povolit některé příslušné porty a služby, jak je uvedeno níže.
Na hlavním uzlu povolte následující porty,
$ sudo firewall-cmd --permanent --add-port=6443/tcp$ sudo firewall-cmd --permanent --add-port=2379-2380/tcp$ sudo firewall-cmd --permanent --add -port=10250/tcp$ sudo firewall-cmd --permanent --add-port=10251/tcp$ sudo firewall-cmd --permanent --add-port=10252/tcp$ sudo firewall-cmd --reloadV uzlu Worker povolte následující porty,
$ sudo firewall-cmd --permanent --add-port=10250/tcp$ sudo firewall-cmd --permanent --add-port=30000-32767/tcp znovu znovu>Krok 5) Nainstalujte runtime kontejneru CRI-O
Kubernetes vyžaduje pro běh modulů kontejnerové běhové prostředí. Kubernetes 1.23 a novější verze vyžadují instalaci modulu runtime kontejneru, který se potvrdí pomocí rozhraní Container Runtime Interface.
Container Runtime je aplikace, která podporuje spouštění kontejnerů. Kubernetes podporuje následující Container Runtime:
- Kontejner
- CRI-O
- Docker Engine
- Mirantis Container Runtime
V této příručce nainstalujeme CRI-O, což je běhový modul kontejneru na vysoké úrovni. Abychom tak učinili, musíme povolit dva klíčové moduly jádra – moduly překryv a br_netfilter.
Abychom toho dosáhli, musíme nakonfigurovat předpoklady takto:
Nejprve vytvořte konfigurační soubor modulů pro Kubernetes.
$ sudo vi /etc/modules-load.d/k8s.conf
Přidejte tyto řádky a uložte změny
overlaybr_netfilter
Poté načtěte oba moduly pomocí příkazu modprobe.
$ sudo modprobe overlay$ sudo modprobe br_netfilter
Dále nakonfigurujte požadované parametry sysctl následovně
$ sudo vi /etc/sysctl.d/k8s.conf
Přidejte následující řádky:
net.bridge.bridge-nf-call-iptables =1net.ipv4.ip_forward =1net.bridge.bridge-nf-call-ip6tables =1
Uložte změny a ukončete. Chcete-li potvrdit, že změny byly použity, spusťte příkaz:
$ sudo sysctl --system
Chcete-li nainstalovat CRI-O, nastavte proměnnou prostředí $VERSION tak, aby odpovídala vaší verzi CRI-O. Chcete-li například nainstalovat CRI-O verze 1.21, nastavte $VERSION podle obrázku:
$ export VERSION=1.21
Dále spusťte následující příkazy:
$ sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable /CentOS_8/devel:kubic:libcontainers:stable.repo
$ sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo https://download.opensuse.org/repositories/devel:kubic :libcontainers:stable:cri-o:$VERSION/CentOS_8/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo
Poté pomocí správce balíčků DNF nainstalujte CRI-O:
$ sudo dnf install cri-o
Dále povolte CRI-O při spouštění a spusťte jej:
$ sudo systemctl povolit cri-o$ sudo systemctl spustit cri-o
Krok 6) Nainstalujte balíčky Kubernetes
Když máme nainstalované vše potřebné pro fungování Kubernetes, pojďme do toho a nainstalujme balíčky Kubernetes jako kubelet, kubeadm a kubectl. Vytvořte soubor úložiště Kubernetes.
$ sudo vi /etc/yum.repos.d/kubernetes.repo
A přidejte následující řádky.
[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/ yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgexclude=kubelet kubeadm kubectl
Uložte změny a ukončete. Nakonec nainstalujte balíček k8s následovně.
$ sudo dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
Po instalaci nezapomeňte povolit a spustit službu Kubelet.
$ sudo systemctl povolit kubelet$ sudo systemctl spustit kubelet
V tomto okamžiku jsme všichni připraveni nainstalovat cluster Kubernetes.
Krok 7) Vytvořte cluster Kubernetes
Chystáme se inicializovat cluster Kubernetes pomocí příkazu kubeadm následovně. Tím se inicializuje řídicí rovina v hlavním uzlu.
$ sudo kubeadm init --pod-network-cidr=192.168.10.0/16
Jakmile je vytvořena řídicí rovina, budete muset provést některé další příkazy, abyste mohli začít používat cluster.
Proto spouštějte příkazy postupně.
$ mkdir -p $HOME/.kube$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config$ sudo chown $(id -u):$(id -g) $HOME /.kube/config
Na samém konci výstupu dostanete příkaz ke spuštění na pracovních uzlech pro připojení ke clusteru. K tomu se dostaneme později v dalším kroku.
Nezapomeňte také odstranit skvrny z hlavního uzlu:
$ kubectl taint nodes –all node-role.kubernetes.io/master-
Krok 8) Nainstalujte síťový doplněk Calico Pod
Dalším krokem je instalace Calico CNI (Container Network Interface). Jedná se o opensource projekt používaný k poskytování kontejnerových sítí a zabezpečení. Po instalaci Calico CNI se stav uzlů změní na stav Připraveno, služba DNS uvnitř clusteru bude funkční a kontejnery mohou začít mezi sebou komunikovat.
Calico poskytuje škálovatelnost, vysoký výkon a interoperabilitu se stávajícími pracovními zátěžemi Kubernetes. Lze jej nasadit lokálně a na populárních cloudových technologiích, jako jsou Google Cloud, AWS a Azure.
Chcete-li nainstalovat Calico CNI, spusťte následující příkaz z hlavního uzlu
$ kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
Po dokončení spusťte tento.
$ kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml
Chcete-li potvrdit, zda moduly začaly, spusťte příkaz:
$ watch kubectl get pods -n calico-system
Měli byste vidět, že každý modul je „READY“ a má stav „RUNNING“, jak je znázorněno ve třetím sloupci.
Chcete-li ověřit dostupnost hlavního uzlu v clusteru, spusťte příkaz:
$ kubectl získat uzly
Kromě toho můžete získat další informace pomocí voleb -o wide.
$ kubectl get nodes -o wide
Výše uvedený výstup potvrzuje, že hlavní uzel je připraven. Navíc můžete zkontrolovat jmenné prostory pod:
$ kubectl získat pody --all-namespaces
Krok 9) Přidání pracovního uzlu do clusteru
Chcete-li přidat pracovní uzel do clusteru Kubernetes, postupujte podle kroku 1 až do kroku 6. Až budete hotovi, spusťte příkaz vygenerovaný hlavním uzlem pro připojení pracovního uzlu ke clusteru. V našem případě to bude:
$ sudo kubeadm připojit se 10.128.15.228:6443 --token cqb8vy.iicmmqrb1m8u9cob --discovery-token-ca-cert-hash sha256:79748a56f603e6cc57b87759e6cc57b7759bf90600087545aed90600Pokud vše půjde dobře, měli byste dostat oznámení, že se uzel připojil ke clusteru. V případě, že máte více pracovních uzlů
, opakujte stejný postup pro další uzly
Nyní se vraťte do hlavního uzlu a znovu ověřte uzly ve vašem clusteru. Tentokrát se pracovní uzel objeví v seznamu uzlů v clusteru,
$ kubectl získat uzly
Závěr
To byla procházka, jak můžete nainstalovat Kubernetes Cluster na RHEL 8. Vaše zpětná vazba k této příručce je vítána.
Jak používat značky v Ansible Playbook (příklady) Jak zabezpečit webový server Apache pomocí Let's Encrypt na RHEL 8Linux