Kaip įdiegti „Kubernetes“ sankaupą „CentOS 8“


„Kubernetes“ sankaupos diegimo procesas „CentOS 8“ yra beveik panašus į „CentOS 7“ procesą (kurį galite atlikti čia), tačiau procesas čia turi keletą pakeitimų. Šie pokyčiai dažniausiai siejasi su „Docker“ diegimu.

Pradedant nuo „CentOS 8“ (ir pratęsiant „RHEL 8“), doką dabar natūraliai pakeitė „Podman“ ir „buildah“, kurie yra „Redhat“ įrankiai. Tiesą sakant, doko paketas dabar buvo pašalintas iš numatytosios paketų saugyklos.

Šiuo žingsniu „Redhat“ komanda siekia supaprastinti talpyklų kūrimo ir naudojimo procesą, nereikalaujant specialių leidimų, tuo pačiu išlaikant suderinamumą su doko vaizdais ir valdant juos nereikalaujant demono. Podmanas žada pasiūlyti daugiau lankstumo bėgant „Kubernetes“ aplinkoje, tačiau žiuri lieka ten.

Šiame straipsnyje mes atliksime „Kubernetes“ diegimo procesą „CentOS 8“ platformoje, veikiančioje „Docker-CE“ („Community Edition“). Vėlesniame straipsnyje mes taip pat atliksime panašų diegimą, savo konteineriams naudodami „Podman“.

  1. Trys serveriai, kuriuose veikia „CentOS 8“ - 1 pagrindinis mazgas ir 2 darbininkų mazgai.
  2. Rekomenduojama, kad jūsų mazguose būtų bent 2 procesoriai su 2 GB RAM ar daugiau vienoje mašinoje. Tai nėra griežtas reikalavimas, tačiau daugiausia lemia programos, kurią ketinate paleisti, poreikiai.
  3. interneto ryšys visuose jūsų mazguose. Iš saugyklos parsinešime „Kubernetes“ ir „Docker“ paketus. Jūs taip pat turėsite įsitikinti, kad DNF paketų tvarkyklė yra įdiegta pagal numatytuosius nustatymus ir gali paketus gauti nuotoliniu būdu.
  4. Visi jūsų mazgai taip pat turėtų galėti prisijungti vienas prie kito privačiame arba viešajame tinkle, atsižvelgiant į tai, kas yra prieinama.
  5. Jums taip pat reikės prieigos prie paskyros, turinčios „sudo“ arba „root“ teises. Šioje pamokoje naudosiu savo šakninę paskyrą.

Dauguma mazgų paprastai turi unikalius MAC adresus, tačiau kai kuriais unikaliais atvejais kai kurios virtualios mašinos gali turėti identiškus MAC adresus. Todėl rekomenduojama patvirtinti, kad „Product_UUID“ ir MAC adresas nėra identiški nė viename mazge.

„Kubernetes“ naudoja šias reikšmes, kad unikaliai nustatytų klasterio mazgus. Jei šios vertės nėra unikalios kiekvienam mazgui, diegimo procesas gali nepavykti.

Norėdami patikrinti tinklo sąsajos MAC adresą ir jį palyginti.

# ip link

Norėdami patikrinti product_uuid ir palyginti, vykdykite šią komandą.

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

Mūsų diegimas sukurtas taip, kad pagrindinis mazgas valdytų darbuotojų mazgus. Šios instaliacijos pabaigoje mūsų loginė architektūra atrodys maždaug taip.

Pagrindinis mazgas - ši mašina paprastai veikia kaip valdymo plokštuma ir valdo sankaupos duomenų bazę ir API serverį (su kuriais bendrauja kubectl CLI).

Mūsų trijų mazgų „Kubernetes“ klasteris atrodys maždaug taip:

„Kubernetes“ klasterio diegimas „Master-Node“

Kad „Kubernetes“ veiktų, jums reikės konteinerių variklio. Kaip minėta, naudosime „Docker-CE“.

„CentOS 8 Master-Node“ bus atliekamos šios institucijos.

„CentOS 8 Master-Node“ nustatykite sistemos pagrindinio kompiuterio pavadinimą ir atnaujinkite DNS faile/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

Tada atlikite komandą ping-ping jūsų darbuotojas-mazgas-1 ir darbuotojas-mazgas-2 ir patikrinkite, ar atnaujintas pagrindinio kompiuterio failas veikia tinkamai.

# ping 192.168.0.48
# ping 192.168.0.49

Tada išjunkite „Selinux“, nes to reikia, kad konteineriai galėtų pasiekti pagrindinę failų sistemą, kurios reikia „pod“ tinklams ir kitoms tarnyboms.

# setenforce 0

Nustačius „setenforce“ į 0 , „SELinux“ efektyviai nustatomas kaip leidžiantis, o tai iš tikrųjų išjungia „SELinux“ iki kito perkrovimo. Norėdami visiškai jį išjungti, naudokite žemiau esančią komandą ir paleiskite iš naujo.

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

Bendravimui ir prieigai „Kubernetes“ naudoja įvairius prievadus, o šie prievadai turi būti prieinami „Kubernetes“ ir neapsiriboti užkarda.

Konfigūruokite ugniasienės taisykles uostuose.

# 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

Pirmiausia turėsite pridėti „Docker“ saugyklą, nes jos nebėra numatytame paketų sąraše, naudodami šią komandą „dnf config-manager“.

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

Taip pat įdiekite „containerd.io“ paketą, kurį galima įsigyti kaip deemoną, kuris valdo visą pagrindinės sistemos konteinerio gyvavimo ciklą, pradedant vaizdų perdavimu ir saugojimu, baigiant konteinerio vykdymu ir priežiūra, baigiant žemo lygio saugykla, prie tinklo priedų ir dar daugiau.

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

Dabar įdiekite naujausią „docker-ce“ paketo versiją.

# dnf install docker-ce

Dabar galite įjungti ir paleisti doko tarnybą.

# systemctl enable docker
# systemctl start docker

Tada turėsite rankiniu būdu pridėti „Kubernetes“ saugyklas, nes pagal numatytuosius nustatymus jos nėra įdiegtos „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“ padeda jums paleisti minimalų perspektyvų „Kubernetes“ klasterį, kuris atitinka geriausią praktiką. Naudojant „kubeadm“, jūsų klasteris turėtų išlaikyti „Kubernetes“ atitikties testus.

„Kubeadm“ taip pat palaiko kitas grupių gyvavimo ciklo funkcijas, tokias kaip naujovinimas, naujinimas ir įkrovos žetonų valdymas. „Kubeadm“ taip pat yra integruotas su kitais orkestro įrankiais, tokiais kaip „Ansible“ ir „Terraform“.

Kai paketo atpirkimas jau paruoštas, galite tęsti ir įdiegti paketą „kubeadm“.

# dnf install kubeadm -y 

Kai diegimas bus sėkmingai baigtas, įjunkite ir paleiskite paslaugą.

# systemctl enable kubelet
# systemctl start kubelet

„Kubernetes“ meistras, veikiantis kaip klasterio valdymo plokštuma , vykdo keletą klasteriui būtinų paslaugų. Inicializavimo procesas atliks keletą išankstinių patikrinimų, kad mašina būtų pasirengusi paleisti „Kubernetes“. Šios išankstinės patikros rodo įspėjimus ir klaidas. Tada „kubeadm init“ atsisiunčia ir įdiegia klasterio valdymo plokštumos komponentus.

Dabar atėjo laikas inicijuoti „Kubernetes master“, bet prieš tai turite išjungti apsikeitimą, kad paleistumėte komandą „kubeadm init“.

# swapoff -a

„Kubernetes master“ inicijavimas yra visiškai automatizuotas procesas, kurį valdo komanda „kubeadm init“, kaip parodyta.

# kubeadm init

Tada nukopijuokite šią komandą ir išsaugokite ją kažkur, nes vėliau mums reikėjo paleisti šią komandą darbininkų mazguose.

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

Patarimas: Kartais aukščiau pateikta komanda gali sukelti klaidų dėl perduotų argumentų, todėl, kad išvengtumėte klaidų, turite pašalinti simbolį ‘\’ ir jūsų paskutinė komanda atrodys taip.

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

Kai „Kubernetes“ bus sėkmingai inicijuota, turite įgalinti savo vartotoją pradėti naudoti grupę. Pagal savo scenarijų mes naudosime šakninį vartotoją. Taip pat galite pradėti klasterį naudodami sudo vartotoją, kaip parodyta.

Norėdami naudoti root, paleiskite:

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

Norėdami naudoti „sudo“ įgalintą vartotoją, paleiskite:

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

Dabar patvirtinkite, kad komanda kubectl yra suaktyvinta.

# kubectl get nodes

Šiuo metu pamatysite pagrindinio mazgo būseną „NotReady“. Taip yra todėl, kad mes dar neturime įdiegti „Pod“ tinklo į klasterį.

„Pod Network“ yra klasterio perdangos tinklas, kuris yra dislokuotas dabartinio mazgo tinklo viršuje. Jis sukurtas taip, kad būtų galima jungtis visoje dėžutėje.

Tinklo klasterio diegimas yra labai lankstus procesas, atsižvelgiant į jūsų poreikius, ir yra daug galimybių. Kadangi mes norime, kad mūsų diegimas būtų kuo paprastesnis, naudosime „Weavenet“ papildinį, kuriam nereikia jokios konfigūracijos ar papildomo kodo, o kiekviename skyriuje jis pateikia vieną IP adresą, kuris mums yra puikus. Jei norite pamatyti daugiau galimybių, patikrinkite čia.

Šios komandos bus svarbios norint nustatyti „Pod“ tinklo sąranką.

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

Dabar, jei patikrinsite pagrindinio mazgo būseną, jis turėtų būti „Parengtas“.

# kubectl get nodes

Tada prie klasterio pridedame darbininkų mazgus.

Darbuotojų mazgų pridėjimas prie „Kubernetes“ klasterio

Šios instrukcijos bus atliekamos kiekviename darbiniame mazge, prisijungiant prie „Kubernetes“ sankaupos.

Pirmiausia nustatykite pagrindinio kompiuterio pavadinimą savo darbuotojo mazge-1 ir darbuotojo mazge-2, tada pridėkite pagrindinio kompiuterio įrašus į/etc/hosts failą.

# 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

Tada, atlikdami komandą ping, patikrinkite, ar jūsų atnaujintas pagrindinio failo veikimas yra puikus, atlikite darbinio mazgo pagrindinį mazgą.

# 192.168.0.47

Tada išjunkite „SElinux“ ir atnaujinkite užkardos taisykles.

# 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

Pirmiausia pridėkite „Docker“ saugyklą naudodami „DNF config-manager“.

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

Tada pridėkite „containerd.io“ paketą.

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

Įdiegę šiuos du paketus, įdiekite naujausią „docker-ce“ versiją.

# dnf install docker-ce

Įjunkite ir paleiskite doko tarnybą.

# systemctl enable docker
# systemctl start docker

Turėsite rankiniu būdu pridėti „Kubernetes“ saugyklas, nes jos nėra iš anksto įdiegtos „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

Kai paketo atpirkimas jau paruoštas, galite tęsti ir įdiegti kubeadm.

# dnf install kubeadm -y 

Paleiskite ir įjunkite paslaugą.

# systemctl enable kubelet
# systemctl start kubelet

Dabar mums reikia prieigos prie klasterio, kurį sugeneravo kubeadm init. Galite nukopijuoti ir įklijuoti į savo mazgą-1 ir mazgą-2, jei jį kažkur nukopijavote.

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

Kaip siūloma paskutinėje eilutėje, grįžkite į pagrindinį mazgą ir patikrinkite, ar darbuotojo mazgas-1 ir darbuotojo mazgas-2 prisijungė prie grupės naudodami šią komandą.

# kubectl get nodes

Jei visi veiksmai vykdomi sėkmingai, tada pagrindiniame mazge turėtumėte pamatyti būseną „1“ ir „2“. Šiuo metu jūs sėkmingai įdiegėte „Kubernetes“ sankaupą „CentOS 8“.

Rekomenduojama perskaityti: Kaip įdiegti „Nginx“ „Kubernetes“ klasteryje

Čia sukurtas klasteris turi vieną pagrindinį mazgą ir todėl, jei pagrindinis mazgas sugenda, jūsų klasteris gali prarasti duomenis ir gali tekti atkurti nuo nulio.

Dėl šios priežasties aš rekomenduoju „Highly Available“ sąranką.