Vyhledávání na webu

Jak nainstalovat Kubernetes Cluster na CentOS 7


Kubernetes, který daroval Google komunitě Opensource, se nyní stal oblíbeným nástrojem pro správu kontejnerů. Dokáže spravovat a organizovat nejen běhové prostředí dockeru, ale také běhové prostředí kontejnerů a Rkt.

Typický cluster Kubernetes by měl obecně mít hlavní uzel a několik pracovních uzlů nebo přisluhovačů. Pracovní uzly jsou pak spravovány z hlavního uzlu, čímž je zajištěno, že cluster je spravován z centrálního bodu.

Je také důležité zmínit, že můžete také nasadit jednouzlový cluster Kubernetes, který se obecně doporučuje pro velmi lehké neprodukční úlohy. K tomu můžete použít Minikube, což je nástroj, který spouští jednouzlový cluster Kubernetes na virtuálním počítači ve vašem uzlu.

Doporučená četba: Jak nainstalovat cluster Kubernetes na CentOS 8

V tomto tutoriálu si projdeme víceuzlovou instalaci clusteru Kubernetes v systému CentOS 7 Linux. Tento tutoriál je založen na příkazovém řádku, takže budete potřebovat přístup k oknu svého terminálu.

Předpoklady

  1. Více serverů se systémem Centos 7 (1 hlavní uzel, 2 pracovní uzly). Doporučuje se, aby váš Hlavní uzel měl alespoň 2 CPU, i když to není striktní požadavek.
  2. Připojení k internetu na všech vašich uzlech. Budeme načítat balíčky Kubernetes a docker z úložiště. Stejně tak se budete muset ujistit, že je ve výchozím nastavení nainstalován správce balíčků yum a může načítat balíčky na dálku.
  3. Budete také potřebovat přístup k účtu s právy sudo nebo root. V tomto tutoriálu budu používat svůj root účet.

Náš 3-uzlový cluster bude vypadat nějak takto:

Instalace Kubernetes Cluster na Master-Node

Aby Kubernetes fungovalo, budete potřebovat kontejnerizační modul. Pro tuto instalaci použijeme docker, protože je nejoblíbenější.

Následující kroky poběží na hlavním uzlu.

Krok 1: Připravte název hostitele, bránu firewall a SELinux

Na hlavním uzlu nastavte název hostitele a pokud nemáte server DNS, aktualizujte také soubor /etc/hosts.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Pomocí příkazu ping můžete otestovat pomocí příkazu ping worker-node-1 a worker-node-2, zda je váš aktualizovaný soubor hostitele v pořádku.

ping 10.128.0.29
ping 10.128.0.30

Dále vypněte SElinux a aktualizujte pravidla brány firewall.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

Nastavte pro porty následující pravidla brány firewall. Ujistěte se, že každý příkaz firewall-cmd vrátí úspěšný.

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd –reload
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Krok 2: Nastavte Kubernetes Repo

Úložiště Kubernetes budete muset přidat ručně, protože se ve výchozím nastavení na CentOS 7 nenainstalují.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

Krok 3: Nainstalujte Kubeadm a Docker

Když je úložiště balíčků nyní připraveno, můžete pokračovat a nainstalovat balíčky kubeadm a docker.

yum install kubeadm docker -y 

Po úspěšném dokončení instalace povolte a spusťte obě služby.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

Krok 4: Inicializujte Kubernetes Master a nastavte výchozího uživatele

Nyní jsme připraveni inicializovat kubernetes master, ale předtím musíte zakázat swap, abyste mohli spustit příkaz „kubeadm init“.

swapoff -a

Inicializace Kubernetes master je plně automatizovaný proces, který je řízen příkazem „kubeadm init“, který spustíte.

kubeadm init

Možná budete chtít zkopírovat poslední řádek a někam ho uložit, protože jej budete muset spustit na pracovních uzlech.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Tip: Někdy si tento příkaz může stěžovat na předané argumenty (argumenty), proto jej upravte, abyste se vyhnuli chyby. Vymažete tedy znak ‘\’ doprovázející --token a váš konečný příkaz bude vypadat takto.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Po úspěšné inicializaci Kubernetes budete muset svému uživateli umožnit začít cluster používat. V našem případě chceme tuto instalaci spustit jako root uživatel, proto budeme pokračovat a spustíme tyto příkazy jako root. Můžete se změnit na uživatele s povoleným sudo, kterému dáváte přednost, a spustit níže uvedený postup pomocí sudo.

Chcete-li použít root, spusťte:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

Chcete-li použít uživatele s povoleným sudo, spusťte:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Nyní zkontrolujte, zda je aktivován příkaz kubectl.

kubectl get nodes

V tomto okamžiku si také všimnete, že stav master-node je „NotReady“. Je to proto, že jsme teprve nasadili síť pod do clusteru.

Síť pod je překryvná síť pro cluster, která je nasazena nad aktuální sítí uzlu. Je navržen tak, aby umožňoval připojení přes modul.

Krok 5: Nastavte síť podu

Nasazení síťového clusteru je vysoce flexibilní proces v závislosti na vašich potřebách a k dispozici je mnoho možností. Protože chceme, aby byla naše instalace co nejjednodušší, použijeme plugin Weavenet, který nevyžaduje žádnou konfiguraci ani extra kód a poskytuje jednu IP adresu na pod, což je pro nás skvělé. Pokud chcete vidět více možností, podívejte se sem.

Tyto příkazy budou důležité pro nastavení sítě pod.

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Pokud nyní zkontrolujete stav vašeho master-node, měl by být „Připraven“.

kubectl get nodes

Dále do clusteru přidáme pracovní uzly.

Nastavení pracovních uzlů pro připojení ke clusteru Kubernetes

Následující kroky poběží na pracovních uzlech. Tyto kroky by měly být spuštěny na každém pracovním uzlu při připojování ke clusteru Kubernetes.

Krok 1: Připravte název hostitele, bránu firewall a SELinux

Na svém pracovním-uzlu-1 a pracovním-uzlu-2 nastavte název hostitele a v případě, že nemáte server DNS, aktualizujte také svého hlavního a pracovního uzly v souboru /etc/hosts.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Můžete pingnout master-node a otestovat, zda je váš aktualizovaný soubor hostitele v pořádku.

Dále vypněte SElinux a aktualizujte pravidla brány firewall.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Nastavte pro porty následující pravidla brány firewall. Ujistěte se, že všechny příkazy firewall-cmd vrátí úspěch.

firewall-cmd --permanent --add-port=6783/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd  --reload
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Krok 2: Nastavte Kubernetes Repo

Úložiště Kubernetes budete muset přidat ručně, protože nejsou předinstalovaná na CentOS 7.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

Krok 3: Nainstalujte Kubeadm a Docker

Když je úložiště balíčků nyní připraveno, můžete pokračovat a nainstalovat balíčky kubeadm a docker.

yum install kubeadm docker -y 

Spusťte a povolte obě služby.

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

Krok 4: Připojte pracovní uzel ke clusteru Kubernetes

Pro připojení ke clusteru nyní potřebujeme token, který kubeadm init vygeneroval. Pokud jste jej někde zkopírovali, můžete jej zkopírovat a vložit do svého uzlu-1 a uzlu-2.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Jak je navrženo na posledním řádku, vraťte se do master-node a zkontrolujte, zda se pracovní uzel-1 a pracovní uzel-2 připojily k cluster pomocí následujícího příkazu.

kubectl get nodes

Pokud všechny kroky proběhnou úspěšně, měli byste vidět node-1 a node-2 ve stavu připravenosti na master-node.

Doporučená četba: Jak nasadit Nginx na clusteru Kubernetes

V tuto chvíli jsme úspěšně dokončili instalaci clusteru Kubernetes na Centos 7 a úspěšně jsme začlenili dva pracovní uzly. Nyní můžete začít vytvářet své moduly a nasazovat své služby.