Kā instalēt Kubernetes kopu CentOS 8


Kubernetes kopas instalēšanas process CentOS 8 ir gandrīz līdzīgs CentOS 7 procesam (kuru jūs varat iziet šeit), taču šeit notiekošajam procesam ir dažas izmaiņas. Šīs izmaiņas galvenokārt ir saistītas ar Docker instalēšanu.

Sākot ar CentOS 8 (un ar paplašinājumu RHEL 8), dokeris tagad ir dabiski aizstāts ar Podman un buildah, kas ir Redhat rīki. Faktiski dokstacijas pakotne tagad ir noņemta no noklusējuma pakotņu krātuves.

Ar šo soli Redhat komandas mērķis ir vienkāršot konteineru izveidošanas un izmantošanas procesu, neprasot īpašas atļaujas, tajā pašā laikā saglabājot saderību ar dokeru attēliem un tos darbinot bez dēmona. Podmans sola piedāvāt lielāku elastību, darbojoties Kubernetes vidēs, taču žūrija joprojām nav tur.

Šajā rakstā mēs veiksim Kubernetes instalēšanas procesu CentOS 8 platformā, kas darbojas Docker-CE (Kopienas izdevums). Vēlākā rakstā mēs veiksim arī līdzīgu instalāciju, konteineriem izmantojot podman.

  1. Trīs serveri, kuros darbojas CentOS 8 - 1 galvenais mezgls un 2 strādnieku mezgli.
  2. Ieteicams, lai jūsu mezglos būtu vismaz 2 procesori ar 2 GB RAM vai vairāk vienā mašīnā. Šī nav stingra prasība, bet to lielā mērā nosaka tās lietojumprogrammas vajadzības, kuru plānojat palaist.
  3. Interneta savienojamība visos jūsu mezglos. Mēs no krātuves ienesīsim Kubernetes un docker paketes. Tāpat jums būs jāpārliecinās, vai DNF pakotņu pārvaldnieks ir instalēts pēc noklusējuma un var pakotnes ienest attālināti.
  4. Visiem jūsu mezgliem arī vajadzētu būt iespējai izveidot savienojumu savā starpā privātā vai publiskā tīklā, atkarībā no tā, kurš ir pieejams.
  5. Jums būs nepieciešama arī piekļuve kontam ar sudo vai root tiesībām. Šajā apmācībā es izmantošu savu saknes kontu.

Lielākajai daļai mezglu parasti ir unikālas MAC adreses, tomēr dažos unikālos gadījumos dažām virtuālajām mašīnām var būt identiskas MAC adreses. Tāpēc ieteicams apstiprināt, ka Product_UUID un MAC adrese nav identiski nevienā no mezgliem.

Kubernetes izmanto šīs vērtības, lai unikāli identificētu mezglus klasterī. Ja šīs vērtības nav unikālas katram mezglam, instalēšanas process var neizdoties.

Lai pārbaudītu tīkla saskarnes MAC adresi un salīdzinātu to.

# ip link

Lai pārbaudītu product_uuid un salīdzinātu, izpildiet šo komandu.

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

Mūsu instalācija ir izstrādāta tā, lai galvenais mezgls kontrolētu strādnieku mezglus. Šīs instalācijas beigās mūsu loģiskā arhitektūra izskatīsies apmēram tā.

Galvenais mezgls - šī mašīna parasti darbojas kā vadības plakne un vada klastera datu bāzi un API serveri (ar kuriem sazinās kubectl CLI).

Mūsu 3 mezglu Kubernetes kopa izskatīsies apmēram šādi:

Kubernetes klastera instalēšana Master-Node

Lai Kubernetes darbotos, jums būs nepieciešams konteineru dzinējs. Kā jau minēts, mēs izmantosim Docker-CE.

CentOS 8 Master-Node tiks veiktas šādas iestādes.

CentOS 8 Master-Node iestatiet sistēmas resursdatora nosaukumu un atjauniniet DNS failā/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

Pēc tam veiciet ping jūsu darbinieks-mezgls-1 un darbinieks-mezgls-2, lai pārbaudītu, vai atjauninātais resursdatora fails darbojas pareizi, izmantojot komandu ping.

# ping 192.168.0.48
# ping 192.168.0.49

Pēc tam atspējojiet Selinux, jo tas ir nepieciešams, lai konteineri varētu piekļūt resursdatora failu sistēmai, kas nepieciešama pod tīkliem un citiem pakalpojumiem.

# setenforce 0

Iestatot setenforce uz 0 , SELinux tiek efektīvi iestatīts uz visatļautību, kas efektīvi atspējo SELinux līdz nākamajai pārstartēšanai. Lai to pilnībā atspējotu, izmantojiet zemāk esošo komandu un restartējiet.

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

Kubernetes saziņai un piekļuvei izmanto dažādas ostas, un šīm ostām jābūt pieejamām Kubernetes, un tās neierobežo ugunsmūris.

Konfigurējiet ugunsmūra kārtulas ostās.

# 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

Vispirms jums būs jāpievieno Docker krātuve, jo tā vairs nav noklusējuma pakotņu sarakstā, izmantojot šādu komandu dnf config-manager.

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

Instalējiet arī containerd.io pakotni, kas ir pieejama kā dēmons, kas pārvalda visu tās resursdatora sistēmas konteinera dzīves ciklu, sākot no attēlu pārsūtīšanas un glabāšanas līdz konteineru izpildei un uzraudzībai līdz zema līmeņa krātuvei līdz tīkla pielikumiem un tālāk.

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

Tagad instalējiet jaunāko pakotnes Docker-ce versiju.

# dnf install docker-ce

Tagad jūs varat iespējot un sākt dokstacijas pakalpojumu.

# systemctl enable docker
# systemctl start docker

Pēc tam Kubernetes krātuves būs jāpievieno manuāli, jo tās pēc noklusējuma nav instalētas 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 palīdz bootstrap minimālu dzīvotspējīgu Kubernetes kopu, kas atbilst paraugpraksei. Izmantojot kubeadm, jūsu kopai jānokārto Kubernetes atbilstības testi.

Kubeadm atbalsta arī citas klastera dzīves cikla funkcijas, piemēram, jaunināšanu, pazemināšanu un sāknēšanas sūtījuma marķieru pārvaldību. Kubeadm ir integrācijai draudzīgs arī ar citiem orķestrēšanas rīkiem, piemēram, Ansible un Terraform.

Kad paketes repo tagad ir gatavs, varat turpināt instalēt paketi kubeadm.

# dnf install kubeadm -y 

Kad instalēšana ir veiksmīgi pabeigta, iespējojiet un sāciet pakalpojumu.

# systemctl enable kubelet
# systemctl start kubelet

Kubernetes meistars, kas darbojas kā klastera vadības plakne , vada dažus klasterim nepieciešamos kritiskos pakalpojumus. Inicializācijas procesā tiks veiktas vairākas iepriekšējas pārbaudes, lai pārliecinātos, ka mašīna ir gatava darbināt Kubernetes. Šīs iepriekšējās pārbaudes atklāj brīdinājumus un kļūdu iziešanu. Pēc tam kubeadm init lejupielādē un instalē klastera vadības plaknes komponentus.

Ir pienācis laiks inicializēt Kubernetes master, taču pirms tam jums jāatspējo mijmaiņa, lai palaistu komandu “kubeadm init”.

# swapoff -a

Kubernetes master inicializēšana ir pilnīgi automatizēts process, kuru kontrolē komanda “kubeadm init”, kā parādīts.

# kubeadm init

Pēc tam nokopējiet šo komandu un saglabājiet to kaut kur, jo mums vēlāk vajadzēja palaist šo komandu darba mezglos.

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

Padoms. Dažreiz iepriekš minētā komanda var kļūdīties par nodotajiem argumentiem, tāpēc, lai izvairītos no kļūdām, jums ir jānoņem rakstzīme ‘\’ , un jūsu galīgā komanda izskatīsies šādi.

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

Kad Kubernetes ir veiksmīgi inicializēts, jums jāļauj lietotājam sākt izmantot kopu. Mūsu scenārijā mēs izmantosim saknes lietotāju. Jūs varat arī sākt klasteri, izmantojot sudo lietotāju, kā parādīts.

Lai izmantotu sakni, palaidiet:

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

Lai izmantotu sudo iespējotu lietotāju, palaidiet:

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

Tagad apstipriniet, ka ir aktivizēta komanda kubectl.

# kubectl get nodes

Šajā brīdī jūs redzēsiet galvenā mezgla statusu “NotReady”. Tas ir tāpēc, ka mums vēl nav jāizvieto pod tīkls klasterī.

Pod tīkls ir klastera pārklājuma tīkls, kas izvietots virs pašreizējā mezglu tīkla. Tas ir paredzēts, lai ļautu savienot pāri pākstim.

Tīkla kopas izvietošana ir ļoti elastīgs process atkarībā no jūsu vajadzībām, un ir pieejamas daudzas iespējas. Tā kā mēs vēlamies, lai mūsu instalēšana būtu pēc iespējas vienkāršāka, mēs izmantosim Weavenet spraudni, kuram nav nepieciešama nekāda konfigurācija vai papildu kods, un tas katram podam nodrošina vienu IP adresi, kas mums ir lieliski. Ja vēlaties redzēt vairāk iespēju, lūdzu, pārbaudiet šeit.

Šīs komandas būs svarīgas, lai iegūtu pod tīkla iestatīšanu.

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

Tagad, ja pārbaudāt galvenā mezgla statusu, tam jābūt “Gatavs”.

# kubectl get nodes

Pēc tam mēs kopai pievienojam darba ņēmēja mezglus.

Darbinieku mezglu pievienošana Kubernetes kopai

Pievienojoties Kubernetes kopai, katram darba ņēmēja mezglam tiks izpildītas šādas instrukcijas.

Vispirms iestatiet resursdatora nosaukumu darbinieks-mezgls-1 un darbinieks-mezgls-2 un pēc tam pievienojiet resursdatora ierakstus failā/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

Pēc tam veiciet ping galveno mezglu no darba mezgliem, lai apstiprinātu, ka atjauninātais resursdatora fails darbojas labi, izmantojot ping komandu.

# 192.168.0.47

Pēc tam atspējojiet SElinux un atjauniniet ugunsmūra noteikumus.

# 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

Vispirms pievienojiet Docker krātuvi, izmantojot DNF config-manager.

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

Pēc tam pievienojiet containerd.io pakotni.

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

Kad šīs divas pakotnes ir instalētas, instalējiet jaunāko docker-ce versiju.

# dnf install docker-ce

Iespējojiet un palaidiet dokstacijas pakalpojumu.

# systemctl enable docker
# systemctl start docker

Jums Kubernetes krātuves būs jāpievieno manuāli, jo tās nav iepriekš instalētas 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

Kad paketes repo tagad ir gatavs, varat turpināt instalēt kubeadm.

# dnf install kubeadm -y 

Sāciet un iespējojiet pakalpojumu.

# systemctl enable kubelet
# systemctl start kubelet

Tagad mums ir nepieciešams kubeadm init ģenerētais marķieris, lai pievienotos kopai. Varat to nokopēt un ielīmēt mezglā-1 un mezglā-2, ja esat to kaut kur nokopējis.

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

Kā ieteikts pēdējā rindā, atgriezieties pie galvenā mezgla un pārbaudiet, vai strādājošais mezgls-1 un darbinieka mezgls-2 ir pievienojies kopai, izmantojot šādu komandu.

# kubectl get nodes

Ja visas darbības tiek veiksmīgi izpildītas, galvenajā mezglā jums vajadzētu redzēt mezglu 1 un mezglu 2 gatavībā. Šajā brīdī CentOS 8 tagad esat veiksmīgi izvietojis Kubernetes kopu.

Ieteicams lasīt: Kā izvietot Nginx Kubernetes kopā

Šeit izveidotajam klasterim ir viens galvenais mezgls, un tādējādi, ja galvenais mezgls neizdodas, jūsu kopa var zaudēt datus un, iespējams, būs jāatjauno no jauna.

Šī iemesla dēļ es iesaku iestatīt ļoti pieejamu iestatījumu.