Úvod
Nasazení kontejnerů a orchestrace Kubernetes jsou při nasazení ve virtuálních prostředích nesmírně výkonné. Flexibilita a možnosti škálování nabízejí nekonečné možnosti.
Proč potom přidat do clusteru fyzický server s jedním tenantem? Je známo, že virtuální počítače vytvářejí problémy s latencí pro konkrétní aplikace. Přímý přístup k hardwaru může být řešením tohoto problému, zejména s možností přidání hardwarových akcelerátorů (GPU).
Vývoj v oblasti strojového učení a umělé inteligence vede organizace k implementaci clusterů Kubernetes na virtuálních počítačích i serverech Bare Metal.
Tento tutoriál vám ukáže, jak implementovat koncepty popsané v našem předchozím článku o Kubernetes Architecture.
Postupujte podle uvedených kroků a zjistěte, jak nainstalovat Kubernetes na Bare Metal Server.
Předpoklady
- Více serverů Linux
- Uživatelský účet v každém systému s funkcí sudo nebo oprávnění root
- Přístup do příkazového řádku/okna terminálu
- apt správce balíčků (Debian 10)
Příprava serveru Bare Metal pro instalaci Kubernetes
Kubernetes je vysoce automatizovaný nástroj pro orchestraci. Komunikuje mezi uzly a podniká kroky k replikaci podů, kdykoli aktuální stav klastrů neodpovídá požadovanému stavu.
Pro usnadnění tohoto procesu musí být komunikace mezi uzly neomezená. Každý uzel je třeba nakonfigurovat tak, aby standardní nastavení zabezpečení nerušilo komunikační linky.
Nastavení se liší v závislosti na distribuci a je třeba je použít na každý uzel v clusteru. V tomto příkladu je instalace provedena pomocíDebian 10.
Pokud používáte jinou distribuci, navštivte náš návod, jak nainstalovat Kubernetes na systém CentOS 7 nebo Ubuntu 18.04.
Krok 1:Zakažte SWAP
Moduly Kubernetes jsou navrženy tak, aby plně využívaly limity CPU. kubelet není navržen pro použití paměti SWAP, a proto je třeba ji deaktivovat. Chcete-li vypnout SWAP, zadejte do okna terminálu následující příkaz:
sudo swapoff -a
Krok 2:Vyřešte nftables Problém s kompatibilitou backendu
Aktuální kubeadm balíčky nejsou kompatibilní s nftables backend. Abyste předešli problémům, přepněte nástroje iptables do jejich staršího režimu:
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo update-alternatives --set arptables /usr/sbin/arptables-legacy
sudo update-alternatives --set ebtables /usr/sbin/ebtables-legacy
Krok 3:Konfigurace brány firewall
Nastavení brány firewall je třeba upravit, aby umožňovala komunikaci mezi moduly v rámci clusteru. V tomto příkladu jsme upravili porty pomocí ufw .
Chcete-li to provést, zadejte na svém hlavním uzlu následující příkazy:
sudo ufw allow 6443/tcp
sudo ufw allow 2379/tcp
sudo ufw allow 2380/tcp
sudo ufw allow 10250/tcp
sudo ufw allow 10251/tcp
sudo ufw allow 10252/tcp
sudo ufw allow 10255/tcp
sudo ufw reload
Tyto porty navíc musí být otevřené na každém pracovním uzlu:
sudo ufw allow 10251/tcp
sudo ufw allow 10255/tcp
sudo ufw reload
Krok 4:Nainstalujte Docker
Kontejnerový runtime software spravuje obrázky kontejnerů na uzlech. Bez něj nemůže Kubernetes přistupovat ke knihovnám obrázků a spouštět aplikace v kontejnerech. Za tímto účelem nainstalujeme Docker.
Nainstalujte Docker na všechny hlavní a pracovní uzly, které se účastní vašeho clusteru. To znamená, že tento proces musíte opakovat postupně na každém uzlu.
Přístup k rozhraní příkazového řádku. Následující příkaz aktualizuje úložiště Debianu a nainstaluje balíčky. Umožňuje také vašemu systému používat úložiště přes zabezpečený protokol HTTPS:
sudo apt-get update && apt-get install apt-transport-https ca-certificates curl software-properties-common
Nyní načtěte a přidejte oficiální klíč GPG společnosti Docker zadáním:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
Výstup potvrzuje, že akce byla dokončena.
Přidali jsme klíč GPG a nyní můžeme přistoupit k přidání úložiště apt Docker:
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Nezapomeňte aktualizovat své repozitáře:
sudo apt-get update
Systém je nyní připraven k instalaci Docker CE.
Nainstalujte Docker pomocí následujícího příkazu:
sudo apt-get install docker-ce
Zkontrolujte, zda je služba aktivní pomocí:
docker -v
Příkazový řádek potvrdí, že služba je aktivní.
Chcete-li zjistit, zda služba funguje správně, zavolejte na obrázek:
sudo docker run hello-world
Nyní jste obdrželi potvrzení, že Docker funguje správně.
Krok 5:Změňte ovladač cgroup
Ujistěte se, že docker-ce i Kubernetes používají stejnou „cgroup“.
Zkontrolujte aktuální cgroup docker:
sudo docker info | grep -i cgroup
Níže uvedený výsledek potvrzuje, že Docker používá „cgroupfs“ jako ovladač cgroup.
V případě potřeby změňte ovladač cgroup-driver Kubernetes na „cgroupfs“ zadáním:
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
Znovu načtěte systém systemd a restartujte službu kubelet.
systemctl daemon-reload
systemctl restart kubelet
Vybrali jsme a nainstalovali kontejnerový runtime software, v tomto případě Docker. Další část vysvětluje, jak nainstalovat Kubernetes a nástroje, které potřebujeme ke správě Kubernetes.
Nainstalujte Kubernetes na Bare Metal Server
Krok 1:Stáhněte si úložiště Kubernetes
Stáhněte si Kubernetes a přidejte podpisový klíč, abyste zajistili, že software je autentický:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add –
Obdržíme potvrzení, že je balíček dostupný.
Kubernetes není ve výchozích úložištích. Chcete-li je přidat, zadejte do každého uzlu v clusteru následující příkaz:
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Krok 2:Instalace kubelet, kubeadm a kubectl
Abychom mohli spravovat Kubernetes, musíme nainstalovat kubectl , nástroj používaný k zadávání příkazů do clusteru. Potřebujeme také nainstalovat kubelet protože je zásadní pro nasazení a ovládání modulů v rámci clusteru. Kubeadm je program, který inicializuje Kubernetes během spouštění. Chcete-li nainstalovat tyto 3 základní nástroje, zadejte následující příkazy:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
kubelet se nyní každých několik sekund restartuje, protože čeká ve smyčce selhání na kubeadm říct, co má dělat.
Krok 3:Inicializujte Kubernetes na hlavním uzlu
Zadejte následující příkaz na hlavním uzlu:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Může trvat několik minut, než výstup potvrdí, že je cluster aktivní:
Jakmile systém dokončí akci, zobrazí připojení ke kubeadm zpráva. Poznamenejte si celý záznam. Budete jej potřebovat k připojení pracovních uzlů ke clusteru.
Krok 4:Vytvořte adresář pro cluster Kubernetes
Zajistěte, aby kubectl fungoval pro uživatele bez oprávnění root spuštěním těchto příkazů, které jsou také součástí kubeadm init výstup:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Krok 5:Doplněk sítě pod (Flannel)
Nainstalujte síťový doplněk pod, aby vaše pody mohly efektivně komunikovat. Flannel je překryvná síť, která je kompatibilní s Kubernetes. Instalace typu Flanel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Krok 6:Připojte pracovní uzel ke clusteru
Zadejte kubeadm join
příkaz na každém pracovním uzlu. Klíč, který jste si poznamenali v Kroku 3 , připojí každý uzel ke clusteru:
kubeadm join 10.0.2.15:6443 –token sv3ckz.fk2yooy92ieins26 \
--discovery-token-ca-cert-hash sha256:39d4a6ecc4a526b4aaff2594b469d43691fb7468688668f55d2a37690codo7fe
Počkejte několik minut a zkontrolujte stav uzlů.
Přepněte na hlavní server a zadejte:
kubectl get nodes
Systém poté zobrazí pracovní uzly, které jste připojili ke clusteru.