Kako instalirati Kubernetes klaster na CentOS 7


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

Tipični Kubernetes klaster općenito bi imao glavni čvor i nekoliko radnih čvorova ili Miniona. Radničkim čvorovima se zatim upravlja iz glavnog čvora, čime se osigurava da se klasterom upravlja iz središnje točke.

Također je važno spomenuti da također možete implementirati Kubernetes klaster s jednim čvorom koji se općenito preporučuje za vrlo lagana, neproizvodna radna opterećenja. Za to možete koristiti Minikube, alat koji pokreće Kubernetes klaster s jednim čvorom u virtualnom računalu na vašem čvoru.

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

Za ovaj vodič proći ćemo kroz instalaciju Kubernetes klastera s više čvorova na CentOS 7 Linux. Ovaj vodič se temelji na naredbenom retku pa ćete trebati pristup prozoru terminala.

Preduvjeti

  1. Više poslužitelja koji pokreću Centos 7 (1 glavni čvor, 2 radna čvora). Preporuča se da vaš Glavni čvor ima najmanje 2 CPU-a, iako to nije striktan zahtjev.
  2. Internetska povezanost na svim vašim čvorovima. Dohvaćat ćemo Kubernetes i docker pakete iz repozitorija. Isto tako, morat ćete se uvjeriti da je upravitelj paketa yum instaliran prema zadanim postavkama i da može daljinski dohvaćati pakete.
  3. Također ćete trebati pristup računu sa sudo ili root privilegijama. U ovom vodiču koristit ću svoj root račun.

Naš klaster od 3 čvora izgledat će otprilike ovako:

Instalacija Kubernetes klastera na glavnom čvoru

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

Sljedeći koraci izvodit će se na glavnom čvoru.

Korak 1: Pripremite ime glavnog računala, vatrozid i SELinux

Na svom glavnom čvoru postavite naziv hosta i ako nemate DNS poslužitelj, također ažurirajte 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 pingati worker-node-1 i worker-node-2 da provjerite je li vaša ažurirana host datoteka u redu pomoću naredbe ping.

ping 10.128.0.29
ping 10.128.0.30

Zatim onemogućite SElinux i ažurirajte pravila vatrozida.

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

Postavite sljedeća pravila vatrozida na portove. Provjerite vraća li svaka naredba firewall-cmd 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 repozitorije jer se ne instaliraju prema zadanim postavkama 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

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

yum install kubeadm docker -y 

Kada 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 Setup Default User

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

swapoff -a

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

kubeadm init

Možda ćete htjeti kopirati posljednji redak i spremiti ga negdje jer ćete ga morati pokrenuti na radničkim čvorovima.

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

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

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

Nakon uspješne inicijalizacije Kubernetesa, morat ćete dopustiti svom korisniku da počne koristiti klaster. U našem slučaju, želimo pokrenuti ovu instalaciju kao root korisnik, stoga ćemo pokrenuti ove naredbe kao root. Možete promijeniti korisnika s omogućenim sudo-om i pokrenuti dolje koristeći sudo.

Da biste koristili 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 je li naredba kubectl aktivirana.

kubectl get nodes

U ovom trenutku također ćete primijetiti da je status glavnog čvoraNije spreman’. To je zato što tek trebamo implementirati pod mrežu u klaster.

Pod mreža je preklapajuća mreža za klaster, koja je raspoređena na vrhu postojeće mreže čvora. Dizajniran je da omogući povezivanje preko modula.

Korak 5: Postavite svoju Pod mrežu

Postavljanje mrežnog klastera vrlo je fleksibilan proces koji ovisi o vašim potrebama i postoje mnoge dostupne opcije. Budući da želimo održati našu instalaciju što je moguće jednostavnijom, koristit ćemo Weavenet dodatak koji ne zahtijeva nikakvu konfiguraciju ili dodatni kod i pruža jednu IP adresu po modulu što je za nas odlično. Ako želite vidjeti više opcija, provjerite ovdje.

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

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

Ako sada provjerite status svog glavnog čvora, trebao bi biti 'Spreman'.

kubectl get nodes

Zatim dodajemo radničke čvorove u klaster.

Postavljanje radnih čvorova za pridruživanje Kubernetes klasteru

Sljedeći koraci izvodit će se na radničkim čvorovima. Ove korake treba pokrenuti na svakom radnom čvoru prilikom pridruživanja Kubernetes klasteru.

Korak 1: Pripremite ime glavnog računala, vatrozid i SELinux

Na vašem worker-node-1 i worker-node-2 postavite naziv hosta i u slučaju da nemate DNS poslužitelj, također ažurirajte svoj master i worker čvorovi u datoteci /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

Možete pingati master-node da provjerite je li vaša ažurirana host datoteka u redu.

Zatim onemogućite SElinux i ažurirajte pravila vatrozida.

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

Postavite sljedeća pravila vatrozida na portove. Provjerite vraćaju li se sve naredbe firewall-cmd uspješno.

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 ne dolaze 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

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

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 init generirao kubeadm za pridruživanje klasteru. Možete ga kopirati i zalijepiti na 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 retku, vratite se na svoj glavni čvor i provjerite jesu li se radni čvor-1 i radni čvor-2 pridružili klaster pomoću sljedeće naredbe.

kubectl get nodes

Ako su svi koraci uspješno izvedeni, trebali biste vidjeti čvor-1 i čvor-2 u statusu spremni na glavnom čvoru.

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

U ovom smo trenutku uspješno dovršili instalaciju Kubernetes klastera na Centos 7 i uspješno smo uključili dva radnička čvora. Sada možete početi stvarati svoje podove i implementirati svoje usluge.