Kontejnery jsou dobrou volbou pro seskupování a provozování našich vlastních aplikací. Když se počet kontejnerů rychle zvyšuje a je třeba je spravovat pohodlným způsobem. To je důvod, proč přichází Kubernetes. Kubernetes (K8s) je open-source systém pro automatizaci nasazení, škálování a správu kontejnerových aplikací a služeb.
Cluster Kubernetes obsahuje hlavní a pracovní uzly. Hlavní uzel řídí a spravuje skupinu pracovních uzlů. Pro clustery s vysokou dostupností můžete mít více hlavních uzlů.
Tento kurz ukazuje, jak nainstalovat klastr Kubernetes s kubeadm na Ubuntu 20.04.
Příprava prostředí
- Použijte 2 hostitele Linux se systémem Ubuntu 20.04
Nastavení statických IP adres pro hlavní uzel a pracovní uzel
- Hlavní uzel:192.168.1.11
- Pracovní uzel:192.168.1.12
- Nakonfigurujte název hostitele pro každý počítač
Použijeme uzel-1 jako hlavní a uzel-2 jako pracovní uzel.
$ sudo hostnamectl set-hostname node-1
$ sudo hostnamectl set-hostname node-2
- Zakažte odkládací paměť na každém uzlu ubuntu
$ sudo swapoff -a
Přidat úložiště Kubernetes
Kubernetes není k dispozici ve výchozím úložišti Ubuntu, takže jej musíte přidat ručně.
Na hlavním i pracovním uzlu proveďte následující:
Přidání podpisového klíče Kubernetes takto:
$ sudo -i
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
Poté přidejte repo Kubernetes, spusťte:
$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" >> ~/kubernetes.list
$ sudo mv ~/kubernetes.list /etc/apt/sources.list.d
$ sudo apt update
Instalace nástrojů Kubernetes
V této sekci nainstalujeme Kubeadm, cri-o, Kubelet a Kubernetes-cni. Všechny tyto nástroje je třeba nainstalovat na hlavní i pracovní uzly .
Ujistěte se, že jste nainstalovali doporučenou a podporovanou verzi. Zde instalujeme verzi 1.18 Kubernetes a crio.
Nainstalujte Kubeadm
Kubeadm je nástroj, který je součástí projektu Kubernetes, který pomáhá inicializovat cluster Kubernetes.
V tomto tutoriálu nainstalujeme kubeadm verze 1.18.0-00, zadejte:
$ sudo apt install -y kubeadm=1.18.0-00 --allow-unauthenticated
Poznámka :konkrétní verzi najdete pomocí následujícího příkazu:
$ curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'
Nainstalujte Kubectl
Kubectl
je nástroj příkazového řádku Kubernetes. Umožňuje vám spouštět příkazy v clusterech Kubernetes. Kubectl můžete použít k nasazení aplikací, správě prostředků clusteru a zobrazení protokolů.
Nainstalujte kubectl v1.18.0-00 následujícím příkazem:
$ sudo apt install -y kubectl=1.18.0-00 --allow-unauthenticated
Nainstalovat CRI-O
CRI-O je kontejnerové runtime rozhraní (CRI) kompatibilní s OCI. Nejčastěji používaným runtimem je Docker. Od vydání Kubernetes 1.20 je shim kontejnerového runtime rozhraní (CRI) pro Docker zastaralý. Docker vytváří obrázky, které nejsou obrázky OCI (Open Container Initiative).
K stahování a spouštění obrazů OCI bychom měli používat modul runtime kontejneru kompatibilní s OCI, zvláště pokud používáte služby Kubernetes jako GKE, EKS nebo AKS.
Stále můžete používat docker a poté nainstalovat pomocí sudo apt-get install docker.io
Zde použiji cri-o což je vyhovující runtime. Udržujte verzi cri-o odpovídající verzi Kubernetes.
Ujistěte se, že jste nainstalovali podporovanou verzi.
Nejprve použijte modprobe
příkaz k načtení překryvné vrstvy a br_netfilter moduly v uzlu Master i Worker:
$ sudo modprobe overlay
$ sudo modprobe br_netfilter
Poté vytvořte konfigurační soubor sysctl, abyste povolili přesměrování IP a nastavení síťového filtru během restartování vložením následujících řádků do /etc/sysctl.d/99-kubernetes-cri.conf
soubor v uzlu Master and Worker:
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
Použijte konfigurační soubor spuštěním:
$ sudo sysctl --system
Nyní specifikujeme Ubuntu OS a verzi cri-o následovně:
$ sudo -i
# export OS=xUbuntu_20.04
# export VERSION=1.18
Poté spusťte následující příkazy jako root
uživatel:
# echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
# echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
# curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
# curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -
# apt update
# apt install cri-o cri-o-runc
Po dokončení instalace se zobrazí časté Byl nainstalován nástroj (Container Monitoring). Najděte společnou cestu:
$ which conmon
/usr/bin/conmon
Upravte /etc/crio/crio.conf
soubor takto:
...
# Path to the conmon binary, used for monitoring the OCI runtime.
conmon = "/usr/bin/conmon" #<-- Edit this line. Around line 108
...
registries = [ #<-- Edit and add registries. Around line 351
"docker.io",
"quay.io",
]
....
Povolte cri-o a ujistěte se, že běží:
$ sudo systemctl daemon-reload
$ sudo systemctl enable crio
$ sudo systemctl start crio
$ sudo systemctl status crio
Výstup:
● crio.service - Container Runtime Interface for OCI (CRI-O)
Loaded: loaded (/usr/lib/systemd/system/crio.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-12-10 15:46:37 UTC; 3 days ago
Docs: https://github.com/cri-o/cri-o
...
Nainstalovat Kubelet
Kubelet je agent běžící na každém uzlu a je zodpovědný za komunikaci se serverem API na hlavním uzlu a řízení běhového prostředí kontejneru pro spouštění pracovních zátěží.
Nakonfigurujte kubelet
abyste pochopili, jak interagovat s cri-o, vložte následující řádek do /etc/default/kubelet
soubor:
KUBELET_EXTRA_ARGS=--feature-gates="AllAlpha=false,RunAsGroup=true" --container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock' --runtime-request-timeout=5m
Na hlavním i pracovním uzlu spusťte následující příkaz k instalaci kubelet
:
$ sudo apt install -y kubelet=1.18.0-00 --allow-unauthenticated
Nainstalujte Kubernetes-cni
Abychom povolili síťování kontejnerů v clusteru, musíme nainstalovat kubernetes-cni
.
Spusťte následující příkaz:
$ sudo apt-get install -y kubernetes-cni --allow-unauthenticated
Nasazení clusteru Kubernetes
Nasazení clusteru Kubernetes zahrnuje 2 kroky. Prvním krokem by byla inicializace hlavního uzlu a druhým krokem připojení pracovního uzlu ke clusteru.
Inicializovat hlavní uzel
Inicializace Kubernetes na hlavním uzlu , zadejte:
$ sudo kubeadm init --apiserver-advertise-address=192.168.1.11 --pod-network-cidr=10.244.0.0/16
Dokončení bude trvat několik minut. Po dokončení inicializace terminál zobrazí výstup následovně:
Poznamenejte si čáru pro připojení ke clusteru označenou výše, použije se v dalším kroku k připojení pracovního uzlu ke clusteru.
Nyní spusťte následující příkaz k vytvoření konfiguračního adresáře Kubernetes v hlavním uzlu:
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
Dále nasaďte síť pod do clusteru:
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Ověření, že všechny komponenty Control-plane byly úspěšně nainstalovány:
$ kubectl get pod --all-namespaces
Připojit pracovní uzel ke clusteru
Nyní se přihlaste k pracovnímu uzlu a připojte se k pracovnímu uzlu ke clusteru.
Na počítači pracovního uzlu spusťte následující příkaz:
$ sudo kubeadm join 192.168.1.11:6443 --token 9ii02d.nsmrmu1asascv2yg \
--discovery-token-ca-cert-hash sha256:1104bf70b03a2d030ffc0a462f9dbcbcdd9975393e9a9ac2a1f18500f1b6b74e
Po dokončení procesu připojení se vraťte do hlavního uzlu a spusťte:
$ kubectl get node
NAME STATUS ROLES AGE VERSION
node-1 Ready master 2m37s v1.18.0
node-2 Ready none 22s v1.18.0
Chcete-li získat další informace o uzlu, zadejte:
$ kubectl get node -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
node-1 Ready master 9h v1.18.0 10.2.0.4 Ubuntu 20.04.1 LTS 5.4.0-1029-gcp cri-o://1.18.4
node-2 Ready none 9h v1.18.0 10.2.0.5 Ubuntu 20.04.1 LTS 5.4.0-1029-gcp cri-o://1.18.4
Výstupy zobrazují podrobnosti hlavního uzlu a uzlů, které se připojily ke clusteru.
Přečtěte si také:Jak nainstalovat Kubernetes lokálně pomocí Vagrant/Minikube
Závěr
Vzhledem k tomu, že kontejnerizace je stále oblíbenější, je Kubernetes tak populární díky potřebě spravovat kontejnerizované pracovní zatížení a služby. Všichni hlavní poskytovatelé cloudu začali podporovat spravované Kubernetes, což usnadňuje život.
Kubernetes je zcela zdarma a lze jej kdykoli stáhnout z jeho úložiště. Doufám, že se vám instalace Kubernetes na Ubuntu líbila. Můžete zkusit nasadit aplikace jako MySQL nebo WordPress na clusteru K8.
Děkujeme za přečtení a zanechte prosím svůj návrh v sekci komentářů níže.