Kako instalirati Kubernetes klaster na CentOS 7


Doniran od Google Opensource zajednici, Kubernetes je sada postao alat za upravljanje kontejnerima. Može upravljati i orkestrirati ne samo docker runtimes, već i Containers i Rkt runtimes.

Tipičan Kubernetes klaster bi generalno imao glavni čvor i nekoliko radnih čvorova ili Miniona. Radnim čvorovima se tada upravlja iz glavnog čvora, čime se osigurava da se klasterom upravlja iz centralne točke.

Također je važno napomenuti da također možete implementirati Kubernetes klaster s jednim čvorom koji se općenito preporučuje za vrlo lagana, neprodukcijska radna opterećenja. Za ovo možete koristiti Minikube, koji je alat koji pokreće Kubernetes klaster sa jednim čvorom u virtuelnoj mašini na vašem čvoru.

Preporučeno čitanje: Kako instalirati Kubernetes klaster na CentOS 8

Za ovaj vodič, proći ćemo kroz instalaciju klastera Kubernetes s više čvorova na CentOS 7 Linuxu. Ovaj vodič je baziran na komandnoj liniji tako da će vam trebati pristup prozoru vašeg terminala.

Preduvjeti

  1. Više servera koji koriste Centos 7 (1 glavni čvor, 2 radna čvora). Preporučuje se da vaš Master čvor ima najmanje 2 CPU-a, iako to nije strog zahtjev.
  2. Internet konekcija na svim vašim čvorovima. Dohvatit ćemo Kubernetes i docker pakete iz spremišta. Jednako tako, morat ćete se uvjeriti da je yum menadžer paketa instaliran prema zadanim postavkama i da može daljinski preuzimati pakete.
  3. Također će vam trebati pristup računu sa sudo ili root privilegijama. U ovom vodiču koristiću svoj root nalog.

Naš klaster sa 3 čvora će izgledati otprilike ovako:

Instalacija Kubernetes klastera na Master-Node

Da bi Kubernetes radio, trebat će vam mehanizam za kontejnerizaciju. Za ovu instalaciju koristit ćemo docker jer je najpopularniji.

Sljedeći koraci će se izvoditi na Master-Node.

Korak 1: Pripremite ime hosta, zaštitni zid i SELinux

Na svom glavnom čvoru postavite ime hosta i ako nemate DNS server, ažurirajte i datoteku /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

Možete pingovati worker-node-1 i worker-node-2 da testirate da li je vaš ažurirani host fajl u redu pomoću ping komande.

ping 10.128.0.29
ping 10.128.0.30

Zatim onemogućite SElinux i ažurirajte pravila zaštitnog zida.

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

Postavite sljedeća pravila zaštitnog zida na portovima. Uvjerite se da svaka naredba firewall-cmd daje uspjeh.

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

Korak 2: Postavite Kubernetes Repo

Morat ćete ručno dodati Kubernetes spremišta jer ona nisu standardno instalirana 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

Korak 3: Instalirajte Kubeadm i Docker

Pošto je repo paketa sada spreman, možete nastaviti i instalirati kubeadm i docker pakete.

yum install kubeadm docker -y 

Kada se instalacija uspješno završi, omogućite i pokrenite obje usluge.

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

Korak 4: Inicijalizirajte Kubernetes Master i Postavite zadanog korisnika

Sada smo spremni da inicijaliziramo kubernetes master, ali prije toga morate onemogućiti swap kako biste pokrenuli naredbu “kubeadm init“.

swapoff -a

Inicijalizacija Kubernetes mastera je potpuno automatizovan proces kojim upravlja naredba „kubeadm init“ koju ćete pokrenuti.

kubeadm init

Možda ćete htjeti kopirati posljednju liniju i sačuvati je negdje jer ćete je morati pokrenuti na worker čvorovima.

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

Savjet: Ponekad se ova komanda može žaliti na proslijeđene argumente (args), stoga je uredite kako biste izbjegli bilo kakve greške. Dakle, obrisati ćete znak ‘\’ koji prati --token i vaša konačna komanda će izgledati ovako.

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

Nakon što ste uspješno inicijalizirali Kubernetes, morat ćete dozvoliti vašem korisniku da počne koristiti klaster. U našem slučaju, želimo pokrenuti ovu instalaciju kao root korisnik, stoga ćemo pokrenuti ove komande kao root. Možete se promijeniti u korisnika s omogućenim sudoom koji želite i pokrenuti dolje koristeći sudo.

Da koristite root, pokrenite:

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

Za korištenje sudo omogućenog korisnika, pokrenite:

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

Sada provjerite da li je komanda kubectl aktivirana.

kubectl get nodes

U ovom trenutku, također ćete primijetiti da je status glavnog čvoraNije spreman”. To je zato što tek treba da implementiramo pod mrežu u klaster.

Pod mreža je mreža preklapanja za klaster, koja je raspoređena na vrhu trenutne mreže čvorova. Dizajniran je tako da omogući povezivanje preko modula.

Korak 5: Postavite svoju mrežu pod

Postavljanje mrežnog klastera je vrlo fleksibilan proces ovisno o vašim potrebama i na raspolaganju je mnogo opcija. Budući da želimo da naša instalacija bude što jednostavnija, koristit ćemo Weavenet dodatak koji ne zahtijeva nikakvu konfiguraciju ili dodatni kod i daje jednu IP adresu po pod-u što je odlično za nas. Ako želite vidjeti više opcija, provjerite ovdje.

Ove naredbe će biti važne za postavljanje pod mreže.

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

Sada, ako provjerite status vašeg glavnog čvora, trebao bi biti „Spreman”.

kubectl get nodes

Zatim dodajemo radne čvorove u klaster.

Postavljanje radnih čvorova za pridruživanje Kubernetes klasteru

Sljedeći koraci će se izvoditi na radnim čvorovima. Ove korake treba izvesti na svakom radnom čvoru kada se pridružite Kubernetes klasteru.

Korak 1: Pripremite ime hosta, zaštitni zid i SELinux

Na vašim worker-node-1 i worker-node-2, postavite ime hosta i u slučaju da nemate DNS server, ažurirajte svoj master i worker čvorovi na /etc/hosts datoteci.

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

Možete pingati master-node da provjerite je li vaš ažurirani hostfile u redu.

Zatim onemogućite SElinux i ažurirajte pravila zaštitnog zida.

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

Postavite sljedeća pravila zaštitnog zida na portovima. Uvjerite se da sve komande firewall-cmd vraćaju uspjeh.

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

Korak 2: Postavite Kubernetes Repo

Morat ćete ručno dodati Kubernetes spremišta jer nisu unaprijed instalirana 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

Korak 3: Instalirajte Kubeadm i Docker

Pošto je repo paketa sada spreman, možete nastaviti i instalirati kubeadm i docker pakete.

yum install kubeadm docker -y 

Pokrenite i omogućite obje usluge.

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

Korak 4: pridružite radni čvor Kubernetes klasteru

Sada nam je potreban token koji je kubeadm generirao, da se pridruži klasteru. Možete ga kopirati i zalijepiti u svoj čvor-1 i čvor-2 ako ste ga negdje kopirali.

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

Kao što je predloženo u zadnjem redu, vratite se na svoj master-čvor i provjerite da li su se radnički čvor-1 i radnički čvor-2 pridružili klaster koristeći sljedeću naredbu.

kubectl get nodes

Ako se svi koraci uspješno pokrenu, trebali biste vidjeti čvor-1 i čvor-2 u statusu spremnosti na glavnom čvoru.

Preporučeno čitanje: Kako implementirati Nginx na Kubernetes klaster

U ovom trenutku, uspješno smo završili instalaciju Kubernetes klastera na Centos 7 i uspješno smo uključili dva worker-noda. Sada možete početi kreirati svoje podove i implementirati svoje usluge.