Si të instaloni një grup Kubernetes në CentOS 8


Procesi i instalimit të një grupi Kubernetes në CentOS 8 është pothuajse i ngjashëm me atë të CentOS 7 (të cilin mund ta kaloni këtu), por procesi këtu ka disa ndryshime. Këto ndryshime, kryesisht sillen rreth instalimit të Docker.

Duke filluar nga CentOS 8 (dhe me zgjerimin RHEL 8), docker tani është zëvendësuar nga podman dhe buildah që janë mjete nga Redhat. Në fakt, paketa docker tani është hequr nga depoja e paracaktuar e paketave.

Me këtë lëvizje, ekipi i Redhat synon të thjeshtojë procesin e krijimit dhe përdorimit të kontejnerëve, pa pasur nevojë për leje të veçanta, duke ruajtur në të njëjtën kohë përputhshmërinë me imazhet e dokerit dhe përdorimin e tyre pa pasur nevojë për një demon. Podman premton të ofrojë më shumë fleksibilitet kur kandidon në mjediset e Kubernetes, por juria mbetet atje.

Për këtë artikull, ne do të kalojmë procesin e instalimit të Kubernetes në një platformë CentOS 8, që funksionon në Docker-CE (Edicioni i Komunitetit). Në një artikull të mëvonshëm, ne do të kryejmë gjithashtu një instalim të ngjashëm, duke përdorur podman për kontejnerët tanë.

  1. Tre serverë që ekzekutojnë CentOS 8 – 1 nyje kryesore dhe 2 nyje punëtore.
  2. Rekomandohet që nyjet tuaja të kenë të paktën 2 CPU me 2 GB RAM ose më shumë për makinë. Kjo nuk është një kërkesë strikte, por kryesisht drejtohet nga nevojat e aplikacionit që keni ndërmend të ekzekutoni.
  3. Lidhja me internetin në të gjitha nyjet tuaja. Ne do të marrim Kubernetes dhe paketat docker nga depoja. Njëlloj, do t'ju duhet të siguroheni që menaxheri i paketave DNF është i instaluar si parazgjedhje dhe mund të marrë paketat nga distanca.
  4. Të gjitha nyjet tuaja duhet gjithashtu të jenë në gjendje të lidhen me njëri-tjetrin, qoftë në një rrjet privat ose publik, cilido që është i disponueshëm.
  5. Do t'ju duhet gjithashtu qasje në një llogari me privilegje sudo ose root. Në këtë tutorial, unë do të përdor llogarinë time rrënjësore.

Shumica e nyjeve përgjithësisht vijnë me adresa MAC unike, megjithatë, në disa raste unike, disa Makina Virtuale mund të kenë adresa MAC identike. Prandaj rekomandohet që të konfirmoni që Product_UUID dhe adresa MAC nuk janë identike në asnjë nga nyjet.

Kubernetes përdor këto vlera për të identifikuar në mënyrë unike nyjet në grup. Nëse këto vlera nuk janë unike për secilën nyje, procesi i instalimit mund të dështojë.

Për të kontrolluar adresën MAC të ndërfaqes së rrjetit dhe për ta krahasuar atë.

# ip link

Për të kontrolluar product_uuid dhe për të krahasuar, ekzekutoni komandën e mëposhtme.

# cat /sys/class/dmi/id/product_uuid 

Instalimi ynë është projektuar që të ketë Master-Node që kontrollon nyjet e punës. Në fund të këtij instalimi, arkitektura jonë logjike do të duket diçka si kjo.

Nyja kryesore – Kjo makinë në përgjithësi vepron si plani i kontrollit dhe drejton bazën e të dhënave të grupimit dhe serverin API (me të cilin komunikon kubectl CLI).

Grupi ynë Kubernetes me 3 nyje do të duket diçka si kjo:

Instalimi i Kubernetes Cluster në Master-Node

Që Kubernetes të funksionojë, do t'ju duhet një motor kontejnerizimi. Siç u përmend, ne do të përdorim Docker-CE.

Institucionet e mëposhtme do të kryhen në CentOS 8 Master-Node.

Në CentOS 8 Master-Node, vendosni emrin e hostit të sistemit dhe përditësoni DNS në skedarin tuaj /etc/hosts.

# hostnamectl set-hostname master-node
# cat <<EOF>> /etc/hosts
192.168.0.47 master-node
192.168.0.48 node-1 worker-node-1
192.168.0.49 node-2 worker-node-2
EOF

Më pas, shkruani ping tuajin worker-node-1 dhe worker-node-2 për të kontrolluar nëse skedari juaj i përditësuar i hostit po funksionon siç duhet duke përdorur komandën ping.

# ping 192.168.0.48
# ping 192.168.0.49

Më pas, çaktivizoni Selinux-in, pasi kjo kërkohet për të lejuar që kontejnerët të hyjnë në sistemin e skedarëve pritës, i cili nevojitet nga rrjetet e pod dhe shërbimet e tjera.

# setenforce 0

Vendosja e setenforce në 0 e vendos në mënyrë efektive SELinux në lejuese, e cila në mënyrë efektive çaktivizon SELinux deri në rindezjen tjetër. Për ta çaktivizuar plotësisht, përdorni komandën e mëposhtme dhe rindizni.

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

Kubernetes përdor porte të ndryshme për komunikim dhe akses dhe këto porte duhet të jenë të aksesueshme për Kubernetes dhe të mos kufizohen nga muri i zjarrit.

Konfiguro rregullat e murit të zjarrit në porte.

# 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

Së pari do t'ju duhet të shtoni depon e Docker pasi nuk është më në listën e paracaktuar të paketave duke përdorur komandën e mëposhtme dnf config-manager.

# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Instaloni gjithashtu paketën containerd.io, e cila është e disponueshme si një demon që menaxhon ciklin e plotë të jetës së kontejnerit të sistemit të tij pritës, nga transferimi dhe ruajtja e imazheve deri te ekzekutimi dhe mbikëqyrja e kontejnerit, te ruajtja e nivelit të ulët te bashkëngjitjet e rrjetit dhe më gjerë.

# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Tani instaloni versionin më të fundit të një pakete docker-ce.

# dnf install docker-ce

Tani mund të aktivizoni dhe nisni shërbimin docker.

# systemctl enable docker
# systemctl start docker

Më pas, do t'ju duhet të shtoni manualisht depot e Kubernetes pasi ato nuk janë të instaluara si parazgjedhje në CentOS 8.

# 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

Kubeadm ju ndihmon të krijoni një grup minimal të zbatueshëm Kubernetes që përputhet me praktikat më të mira. Me kubeadm, grupi juaj duhet të kalojë testet e konformitetit të Kubernetes.

Kubeadm gjithashtu mbështet funksione të tjera të ciklit jetësor të grupimeve, të tilla si përmirësimet, zvogëlimi dhe menaxhimi i shenjave të bootstrap. Kubeadm është gjithashtu miqësor ndaj integrimit me mjete të tjera orkestrimi si Ansible dhe Terraform.

Me repon e paketave tani gati, mund të vazhdoni dhe të instaloni paketën kubeadm.

# dnf install kubeadm -y 

Kur instalimi të përfundojë me sukses, aktivizoni dhe filloni shërbimin.

# systemctl enable kubelet
# systemctl start kubelet

Masteri Kubernetes, i cili vepron si rrafshi i kontrollit për grupimin ekzekuton disa shërbime kritike të nevojshme për grupimin. Si i tillë, procesi i inicializimit do të bëjë një sërë kontrollesh paraprake për të siguruar që makina është gati për të ekzekutuar Kubernetes. Këto kontrolle paraprake ekspozojnë paralajmërimet dhe dalin nga gabimet. kubeadm init më pas shkarkon dhe instalon komponentët e planit të kontrollit të grupimit.

Tani është koha për të inicializuar masterin Kubernetes, por përpara kësaj, duhet të çaktivizoni shkëmbimin në mënyrë që të ekzekutoni komandën \kubeadm init\.

# swapoff -a

Inicializimi i masterit të Kubernetes është një proces plotësisht i automatizuar që kontrollohet nga komanda \kubeadm init\ siç tregohet.

# kubeadm init

Më pas, kopjoni komandën e mëposhtme dhe ruajeni atë diku, pasi ne kërkojmë ta ekzekutojmë këtë komandë në nyjet e punës më vonë.

kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash ha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7

Këshillë: Ndonjëherë komanda e mësipërme mund të shkaktojë gabime në lidhje me argumentet e kaluara, kështu që për të shmangur gabimet, duhet të hiqni karakterin ‘\’ dhe komanda juaj përfundimtare do të duket kështu.

# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 –discovery token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7

Pasi Kubernetes inicializohet me sukses, duhet t'i mundësoni përdoruesit tuaj të fillojë të përdorë grupin. Në skenarin tonë, ne do të përdorim përdoruesin rrënjë. Ju gjithashtu mund të filloni grupin duke përdorur përdoruesin sudo siç tregohet.

Për të përdorur root, ekzekutoni:

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

Për të përdorur një përdorues të aktivizuar sudo, ekzekutoni:

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

Tani konfirmoni që komanda kubectl është aktivizuar.

# kubectl get nodes

Në këtë moment, do të shihni se statusi i nyjes master është Jo gati. Kjo është për shkak se ne ende nuk kemi vendosur rrjetin e pod në grup.

Rrjeti i pod është rrjeti i mbivendosjes për grupin, i cili vendoset në krye të rrjetit aktual të nyjeve. Është projektuar për të lejuar lidhjen në të gjithë podin.

Vendosja e grupit të rrjetit është një proces shumë fleksibël në varësi të nevojave tuaja dhe ka shumë opsione në dispozicion. Meqenëse ne duam ta mbajmë instalimin tonë sa më të thjeshtë të jetë e mundur, ne do të përdorim shtojcën Weavenet e cila nuk kërkon ndonjë konfigurim ose kod shtesë dhe ofron një adresë IP për pod, e cila është e mrekullueshme për ne. Nëse dëshironi të shihni më shumë opsione, ju lutemi kontrolloni këtu.

Këto komanda do të jenë të rëndësishme për të marrë konfigurimin e rrjetit pod.

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

Tani nëse kontrolloni statusin e nyjes suaj master, ajo duhet të jetë 'Gati'.

# kubectl get nodes

Më pas, ne shtojmë nyjet punëtore në grup.

Shtimi i nyjeve të punëtorëve në grupin Kubernetes

Udhëzimet e mëposhtme do të kryhen në çdo nyje punëtore kur bashkohen me grupin Kubernetes.

Vendosni fillimisht emrin e hostit në worker-node-1 dhe worker-node-2, dhe më pas shtoni hyrjet e hostit në skedarin /etc/hosts.

# hostnamectl set-hostname 'node-1'
# cat <<EOF>> /etc/hosts
192.168.0.47 master-node
192.168.0.48 node-1 worker-node-1
192.168.0.49 node-2 worker-node-2
EOF

Më pas, bëni ping nyjen tuaj kryesore nga nyjet tuaja të punës për të konfirmuar që skedari juaj i përditësuar i hostit po funksionon mirë duke përdorur komandën ping.

# 192.168.0.47

Më pas, çaktivizoni SElinux dhe përditësoni rregullat e murit tuaj të zjarrit.

# setenforce 0
# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# 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

Shtoni së pari depon e Docker duke përdorur DNF config-manager.

# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Më pas, shtoni paketën containerd.io.

# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Me këto dy paketa të instaluara, instaloni versionin më të fundit të docker-ce.

# dnf install docker-ce

Aktivizo dhe nis shërbimin docker.

# systemctl enable docker
# systemctl start docker

Do t'ju duhet të shtoni manualisht depot e Kubernetes pasi ato nuk janë të para-instaluara në CentOS 8.

# 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

Me repon e paketës tashmë gati, mund të vazhdoni dhe të instaloni kubeadm.

# dnf install kubeadm -y 

Filloni dhe aktivizoni shërbimin.

# systemctl enable kubelet
# systemctl start kubelet

Tani kërkojmë tokenin që gjeneroi kubeadm init, për t'u bashkuar me grupin. Mund ta kopjoni dhe ngjisni në nyjen tuaj-1 dhe nyjen-2 nëse e keni kopjuar diku.

# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf78

Siç sugjerohet në rreshtin e fundit, kthehuni në nyjen tuaj master dhe verifikoni nëse nyja e punës-1 dhe nyja e punës-2 janë bashkuar me grupin duke përdorur komandën e mëposhtme.

# kubectl get nodes

Nëse të gjithë hapat ekzekutohen me sukses, atëherë, duhet të shihni nyjen-1 dhe nyjen-2 në status gati në nyjen master. Në këtë pikë, tani keni vendosur me sukses një grup Kubernetes në CentOS 8.

Leximi i rekomanduar: Si të vendosni Nginx në një grupim Kubernetes

Grupimi që kemi krijuar këtu ka një nyje të vetme Master, dhe si i tillë, nëse nyja Master dështon, grupi juaj mund të humbasë të dhënat dhe mund të duhet të rikrijohet nga e para.

Për këtë arsye, unë rekomandoj një konfigurim shumë të disponueshëm.