Procesul de instalare a Clusterul Kubernetes pe CentOS 8 este aproape similar cu cel al CentOS 7 (prin care poți trece Aici), dar procesul de aici are câteva modificări. Aceste modificări se învârt în cea mai mare parte în jurul instalării Docher.
Începând de la CentOS 8 (și prin extensie RHEL 8), docher a fost acum înlocuit nativ de podman și buildah care sunt instrumente din Palarie rosie. De fapt, pachetul de andocare a fost acum eliminat din depozitul de pachete implicit.
Cu această mișcare, Palarie rosie echipa își propune să simplifice procesul de creare și utilizare a containerelor, fără a avea nevoie de permisiuni speciale, în același timp, menținerea compatibilității cu imaginile de andocare și operarea acestora fără a fi nevoie de un daemon. Podman promite să ofere mai multă flexibilitate atunci când rulează mai departe Kubernetes medii, dar juriul rămâne acolo.
Pentru acest articol, vom trece prin procesul de instalare Kubernetes pe o CentOS 8 platformă, care rulează pe Docker-CE
(Ediție comunitară). Într-un articol ulterior, vom rula, de asemenea, printr-o instalare similară, folosind podman pentru containerele noastre.Majoritatea nodurilor vin, în general, cu caracteristici unice MAC adresează, totuși, în unele cazuri unice, unele Mașini virtuale poate avea adrese MAC identice. Prin urmare, se recomandă să confirmați că Product_UUID si MAC adresa nu este identică în niciunul dintre noduri.
Kubernetes folosește aceste valori pentru a identifica în mod unic nodurile din cluster. Dacă aceste valori nu sunt unice pentru fiecare nod, procesul de instalare poate eșua.
Pentru a verifica adresa MAC a interfeței de rețea și a o compara.
link # ip.
Pentru a verifica product_uuid și comparați, executați următoarea comandă.
# cat / sys / class / dmi / id / product_uuid
Instalarea noastră este concepută pentru a avea Master-Node controlând Noduri lucrătoare. La sfârșitul acestei instalări, arhitectura noastră logică va arăta cam așa.
Nod Maestru - Această mașină acționează în general ca plan de control și rulează baza de date cluster și serverul API (cu care comunică CLI kubectl).
Nodul nostru cu 3 noduri Clusterul Kubernetes va arăta cam așa:
Pentru Kubernetes pentru a funcționa, veți avea nevoie de un motor de containerizare. După cum am menționat, vom folosi Docker-CE.
Următoarele instituții vor fi efectuate pe CentOS 8 Master-Node.
Pe dumneavoastră CentOS 8 Master-Node, setați numele de gazdă al sistemului și actualizați DNS în /etc/hosts fişier.
# hostnamectl set-hostname master-nod. # pisică <> / etc / hosts. 192.168.0.47 master-nod. 192.168.0.48 nod-1 lucrător-nod-1. 192.168.0.49 nod-2 lucrător-nod-2. EOF.
Apoi, faceți ping lucrător-nod-1 și muncitor-nod-2 pentru a verifica dacă fișierul gazdă actualizat funcționează corect folosind comanda ping.
# ping 192.168.0.48. # ping 192.168.0.49.
Apoi, dezactivați Selinux, deoarece acest lucru este necesar pentru a permite containerelor să acceseze sistemul de fișiere gazdă, de care sunt necesare rețelele pod și alte servicii.
# setenforce 0.
Setare setenforce la 0
setează în mod eficient SELinux la permisiv, ceea ce dezactivează efectiv SELinux până la următoarea repornire. Pentru a o dezactiva complet, utilizați comanda de mai jos și reporniți.
# sed -i --follow-symlinks 's / SELINUX = enforcing / SELINUX = disabled / g' / etc / sysconfig / selinux. # reporniți.
Kubernetes folosește diverse porturi pentru comunicare și acces, iar aceste porturi trebuie să fie accesibile Kubernetes și nu limitate de firewall.
Configurați regulile firewall-ului pe porturi.
# 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.
Va trebui să adăugați fișierul Docher mai întâi, deoarece nu mai este în lista de pachete implicită folosind următoarele dnf config-manager comanda.
# dnf config-manager --add-repo = https://download.docker.com/linux/centos/docker-ce.repo.
Instalați și containerd.io pachet care este disponibil ca un demon care gestionează ciclul de viață complet al containerului sistemului său gazdă, de la transferul de imagini și stocarea la executarea containerului și supravegherea la stocarea la nivel scăzut la atașamentele de rețea și dincolo.
# instalare dnf https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
Acum instalați cea mai recentă versiune a docker-ce pachet.
# dnf instalează docker-ce.
Acum puteți activa și porni serviciul de andocare.
# systemctl activate docker. # systemctl start docker.
Apoi, va trebui să adăugați Kubernetes depozite manual, deoarece acestea nu sunt instalate implicit pe CentOS 8.
# pisică </etc/yum.repos.d/kubernetes.repo. [kubernetes] nume = Kubernetes. baseurl = https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64. activat = 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 vă ajută să încărcați un cluster Kubernetes minim viabil care să respecte cele mai bune practici. Cu kubeadm, clusterul dvs. ar trebui să treacă testele de conformitate Kubernetes.
Kubeadm acceptă, de asemenea, alte funcții ale ciclului de viață ale clusterelor, cum ar fi upgrade-uri, downgrade și gestionarea jetoanelor bootstrap. Kubeadm este, de asemenea, compatibil cu integrarea cu alte instrumente de orchestrație, cum ar fi Ansible și Terraform.
Cu pachetul repo acum gata, puteți continua și instala kubeadm pachet.
# dnf instalează kubeadm -y
Când instalarea se finalizează cu succes, activați și porniți serviciul.
# systemctl activa kubelet. # systemctl pornește kubelet.
Maestrul Kubernetes care acționează ca planul de control pentru cluster rulează câteva servicii critice necesare pentru cluster. Ca atare, procesul de inițializare va face o serie de verificări prealabile pentru a se asigura că mașina este gata să ruleze Kubernetes. Aceste verificări prealabile expun avertismente și ies la erori. kubeadm init apoi descarcă și instalează componentele planului de control al clusterului.
Acum este timpul să inițializăm masterul Kubernetes, dar înainte de asta, trebuie să dezactivați swap-ul pentru a rula „kubeadm init„Poruncă.
# swapoff -a.
Inițializare Kubernetes master este un proces complet automatizat care este controlat de „kubeadm init„Comanda așa cum se arată.
# kubeadm init.
Apoi, copiați următoarea comandă și stocați-o undeva, deoarece am cerut să executăm această comandă pe nodurile lucrătorului mai târziu.
kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 \ --discovery-token-ca-cert-hash ha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc823146878
Bacsis: Uneori comanda de mai sus ar putea genera erori cu privire la argumentele transmise, deci pentru a evita erorile, trebuie să eliminați fișierul ‘\’
personajul și comanda finală vor arăta astfel.
# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 –discovery token-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478
O singura data Kubernetes inițializat cu succes, trebuie să permiteți utilizatorului dvs. să înceapă să utilizeze clusterul. În scenariul nostru, vom folosi utilizatorul root. De asemenea, puteți porni clusterul utilizând sudo user așa cum se arată.
A folosi rădăcină, alerga:
# mkdir -p $ HOME / .kube. # cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config. # chown $ (id -u): $ (id -g) $ HOME / .kube / config.
Pentru a utiliza un utilizator activat sudo, alerga:
$ mkdir -p $ HOME / .kube. $ sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config. $ sudo chown $ (id -u): $ (id -g) $ HOME / .kube / config.
Acum confirmați că comanda kubectl este activat.
# kubectl obține noduri.
În acest moment, veți vedea că starea nodului master este „Nu e gata’. Acest lucru se datorează faptului că încă nu am implementat rețeaua pod în cluster.
Rețeaua pod este rețeaua suprapusă pentru cluster, care este desfășurată deasupra rețelei nodului actual. Este proiectat pentru a permite conectivitatea pe pod.
Implementarea clusterului de rețea este un proces extrem de flexibil în funcție de nevoile dvs. și există multe opțiuni disponibile. Întrucât dorim să menținem instalarea cât mai simplă posibil, vom folosi Țesătură plugin care nu necesită nicio configurație sau cod suplimentar și oferă o adresă IP per pod, ceea ce este minunat pentru noi. Dacă doriți să vedeți mai multe opțiuni, vă rugăm să verificați Aici.
Aceste comenzi vor fi importante pentru configurarea rețelei pod.
# export kubever = $ (versiunea kubectl | base64 | tr -d '\ n') # kubectl apply -f " https://cloud.weave.works/k8s/net? k8s-version = $ kubever "
Acum, dacă verificați starea nodului dvs. master, ar trebui să fie „Gata’.
# kubectl obține noduri.
Apoi, adăugăm noduri lucrătoare la cluster.
Următoarele instrucțiuni vor fi efectuate pe fiecare nod muncitor la aderarea la clusterul Kubernetes.
Mai întâi setați numele gazdei pe lucrător-nod-1 și muncitor-nod-2, apoi adăugați intrările gazdă la /etc/hosts fişier.
# hostnamectl set-hostname 'nod-1' # pisică <> / etc / hosts. 192.168.0.47 master-nod. 192.168.0.48 nod-1 lucrător-nod-1. 192.168.0.49 nod-2 lucrător-nod-2. EOF.
Apoi, faceți ping nodul master de la tine noduri lucrătoare pentru a confirma că fișierul gazdă actualizat funcționează bine folosind comanda ping.
# 192.168.0.47.
Apoi, dezactivați SElinux și actualizați regulile firewall-ului.
# 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.
Adăugați mai întâi depozitul Docker folosind DNF config-manager.
# dnf config-manager --add-repo = https://download.docker.com/linux/centos/docker-ce.repo.
Apoi, adăugați containerd.io pachet.
# instalare dnf https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
Cu aceste două pachete instalate, instalați cea mai recentă versiune de docker-ce.
# dnf instalează docker-ce.
Activați și porniți serviciul de andocare.
# systemctl activate docker. # systemctl start docker.
Va trebui să adăugați Kubernetes depozite manual, deoarece nu sunt preinstalate CentOS 8.
# pisică </etc/yum.repos.d/kubernetes.repo. [kubernetes] nume = Kubernetes. baseurl = https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64. activat = 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.
Cu pachetul repo acum gata, puteți continua și instala kubeadm.
# dnf instalează kubeadm -y
Porniți și activați serviciul.
# systemctl activa kubelet. # systemctl pornește kubelet.
Acum avem nevoie de simbolul asta kubeadm init generat, pentru a vă alătura clusterului. Puteți să-l copiați și să-l inserați în nod-1 și nod-2 dacă l-ai fi copiat undeva.
# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc823146878.
După cum a fost sugerat pe ultima linie, reveniți la dvs. master-nod și verificați dacă lucrător nod-1 și nod muncitor-2 s-au alăturat clusterului folosind următoarea comandă.
# kubectl obține noduri.
Dacă toți pașii rulează cu succes, atunci ar trebui să vedeți nod-1 și nod-2 în stare gata pe master-nod. În acest moment, ați implementat cu succes un cluster Kubernetes pe CentOS 8.
Citiți recomandat: Cum să implementați Nginx pe un cluster Kubernetes
Clusterul pe care l-am creat aici are un singur Nodul principal, și ca atare, dacă Nodul principal eșuează, clusterul dvs. poate pierde date și poate fi necesar să fie recreat de la zero.
Din acest motiv, recomand o configurare foarte disponibilă.