Kubernetesi klastri installimine CentOS 8-le


Centern 8-sse installitud Kubernetes-klastri protsess on peaaegu sarnane CentOS 7-ga (mida saate siin läbi käia), kuid siin on mõned muudatused. Need muudatused pöörlevad enamasti Dockeri installimise ümber.

Alates CentOS 8-st (ja laiendusega RHEL 8) on docker nüüd looduslikult asendatud Podhani ja buildahiga, mis on Redhati tööriistad. Tegelikult on nüüd dokkeri pakett vaikepaketi hoidlast eemaldatud.

Selle käiguga soovib Redhat meeskond lihtsustada konteinerite loomise ja kasutamise protsessi, ilma et selleks oleks vaja spetsiaalseid õigusi, säilitades samal ajal ühilduvuse dokkipiltidega ja opereerides neid deemonit vajamata. Podman lubab Kubernetes keskkondades töötades pakkuda rohkem paindlikkust, kuid žürii jääb sinna välja.

Selle artikli jaoks tutvustame Kubernetese installimist CentOS 8 platvormile, mis töötab Docker-CE-l (kogukondlik väljaanne). Hilisemas artiklis käime läbi ka sarnase installi, kasutades konteinerite jaoks Podmani.

  1. Kolm CentOS 8 töötavat serverit - 1 põhisõlm ja 2 töölissõlme.
  2. Soovitatav on, et teie sõlmedel oleks masina kohta vähemalt 2 protsessorit 2 GB RAM-iga või rohkem. See ei ole range nõue, vaid on suuresti tingitud rakenduse vajadustest, mida kavatsete käivitada.
  3. Interneti-ühendus kõigis teie sõlmedes. Toome hoidlast Kubernetese ja dokkeri pakette. Samamoodi peate veenduma, et DNF-i paketihaldur on vaikimisi installitud ja suudab pakette kaugtõmmata.
  4. Kõik teie sõlmed peaksid samuti olema võimelised üksteisega ühendust võtma, kas era- või avalikus võrgus, olenevalt sellest, kumb on saadaval.
  5. Teil on vaja juurdepääsu ka sudo või root õigustega kontole. Selles õpetuses kasutan oma juurkontot.

Enamikul sõlmedest on tavaliselt unikaalsed MAC-aadressid, kuid mõnel unikaalsel juhul võivad mõnel virtuaalsel masinal olla identsed MAC-aadressid. Seetõttu on soovitatav kinnitada, et Product_UUID ja MAC-aadress ei ole üheski sõlmes identsed.

Kubernetes kasutab neid väärtusi klastri sõlmede unikaalseks tuvastamiseks. Kui need väärtused pole iga sõlme jaoks ainulaadsed, võib installiprotsess ebaõnnestuda.

Võrguliidese MAC-aadressi kontrollimiseks ja selle võrdlemiseks.

# ip link

Product_uuidi kontrollimiseks ja võrdlemiseks käivitage järgmine käsk.

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

Meie install on loodud selleks, et Master-Node kontrolliks töötajate sõlmi. Selle installi lõpus näeb meie loogiline arhitektuur välja umbes selline.

Põhisõlm - see masin toimib tavaliselt juhtimistasandina ning juhib klastri andmebaasi ja API-serverit (millega kubectli CLI suhtleb).

Meie kolmesõlmeline Kubernetes klaster näeb välja umbes selline:

Kubernetes klastri installimine Master-Node'ile

Kubernetese töötamiseks vajate konteinerimootorit. Nagu mainitud, kasutame Docker-CE-d.

Järgmised asutused tehakse CentOS 8 Master-Node'is.

CentOS 8 Master-Node'is määrake süsteemi hostinimi ja värskendage DNS-i failis/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

Järgmisena pingutage oma töötaja-sõlm-1 ja töötaja-sõlm-2, et kontrollida, kas teie värskendatud hostifail töötab ping-käsu abil õigesti.

# ping 192.168.0.48
# ping 192.168.0.49

Järgmisena keelake Selinux, kuna see on vajalik konteinerite juurdepääsuks hosti failisüsteemile, mida pod-võrgud ja muud teenused vajavad.

# setenforce 0

Setenforce'i määramine väärtusele 0 seab SELinuksi tõhusaks, mis keelab SELinuksi järgmise taaskäivitamiseni. Selle täielikuks keelamiseks kasutage allolevat käsku ja taaskäivitage.

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

Kubernetes kasutab suhtlemiseks ja juurdepääsuks mitmesuguseid porte ning need pordid peavad olema Kubernetesele ligipääsetavad ja neid ei tohi piirata tulemüür.

Konfigureerige portide tulemüüri reeglid.

# 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

Kõigepealt peate lisama Dockeri hoidla, kuna see pole enam vaikepakettide loendis, kasutades järgmist käsku dnf config-manager.

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

Samuti installige pakett containerd.io, mis on saadaval deemonina, mis haldab kogu hosti süsteemi kogu konteineri elutsüklit, alates piltide edastamisest ja salvestamisest kuni konteinerite täitmise ja järelevalveni kuni madala taseme salvestusruumideni kuni võrgumahutiteni.

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

Nüüd installige uusim pakett docker-ce.

# dnf install docker-ce

Nüüd saate dokkimisteenuse lubada ja käivitada.

# systemctl enable docker
# systemctl start docker

Järgmisena peate Kubernetese hoidlad käsitsi lisama, kuna neid pole CentOS 8-s vaikimisi installitud.

# 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 aitab teil käivitada minimaalse elujõulise Kubernetese klastri, mis vastab parimatele tavadele. Kubeadmiga peaks teie klaster läbima Kubernetese vastavustestid.

Kubeadm toetab ka muid klastri elutsükli funktsioone, nagu täiendamine, alandamine ja alglaadimismärkide haldamine. Kubeadm on integreerimissõbralik ka teiste orkestreerimisvahenditega, nagu Ansible ja Terraform.

Kui pakettide repo on nüüd valmis, saate minna ja installida paketi kubeadm.

# dnf install kubeadm -y 

Kui installimine on edukalt lõpule jõudnud, lubage ja käivitage teenus.

# systemctl enable kubelet
# systemctl start kubelet

Klastri juhtimistasandina toimiv Kubernetes-meister haldab mõnda klastri jaoks vajalikku kriitilist teenust. Sellisena teeb lähtestusprotsess rea eelkontrolle, et tagada masina valmisolek Kubernetese käitamiseks. Need eelkontrollid näitavad hoiatusi ja vigadest väljumist. Seejärel laadib kubeadm init alla ja installib klastri juhtimistasandi komponendid.

Nüüd on aeg Kubernetes master käivitada, kuid enne seda peate käsu "kubeadm init" käivitamiseks keelama vahetamise.

# swapoff -a

Kubernetes master'i lähtestamine on täielikult automatiseeritud protsess, mida juhib käsk “kubeadm init”, nagu näidatud.

# kubeadm init

Järgmisena kopeerige järgmine käsk ja salvestage see kuhugi, kuna pidime selle käsu hiljem töötaja sõlmedes käivitama.

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

Näpunäide: Mõnikord võib ülaltoodud käsk põhjustada tõrkeid edastatud argumentide osas, nii et vigade vältimiseks peate eemaldama märgi ’\’ ja teie viimane käsk näeb välja selline.

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

Kui Kubernetes on edukalt lähtestatud, peate lubama kasutajal klastri kasutamise alustama. Oma stsenaariumi korral kasutame juurkasutajat. Klastrit saab käivitada ka sudo kasutaja abil, nagu näidatud.

Juure kasutamiseks käivitage:

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

Sudo-toega kasutaja kasutamiseks käivitage:

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

Nüüd kinnitage, et käsk kubectl on aktiveeritud.

# kubectl get nodes

Sel hetkel näete põhisõlme olekut ‘NotReady’. Seda seetõttu, et meil pole veel pod-võrku klastrisse juurutatud.

Pod-võrk on klastri ülekattevõrk, mis on paigutatud praeguse sõlmevõrgu peale. See on loodud ühendamiseks kogu kaussi ulatuses.

Võrguklastri juurutamine on teie vajadustest sõltuvalt väga paindlik protsess ja saadaval on palju võimalusi. Kuna soovime oma installi võimalikult lihtsana hoida, kasutame Weaveneti pistikprogrammi, mis ei vaja konfigureerimist ega lisakoodi ja pakub ühe IP-aadressi ühe kauna kohta, mis on meie jaoks suurepärane. Kui soovite näha rohkem võimalusi, kontrollige siin.

Need käsud on pod-võrgu seadistamise jaoks olulised.

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

Kui kontrollite nüüd oma põhisõlme olekut, peaks see olema ‘Valmis’.

# kubectl get nodes

Järgmisena lisame klastrisse töötaja sõlmed.

Töötajate sõlmede lisamine Kubernetes klastrisse

Kubernetes klastriga liitumisel tehakse iga töösõlme jaoks järgmised juhised.

Esmalt määrake hostinimi oma töötaja-sõlm-1 ja töötaja-sõlm-2-le ning lisage seejärel hostikirjed faili/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

Järgmisena pingige oma töösõlmedest oma põhisõlm, et veenduda, et teie värskendatud hostifail töötab ping-käsu abil.

# 192.168.0.47

Järgmisena keelake SElinux ja värskendage oma tulemüüri reegleid.

# 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

Esmalt lisage Dockeri hoidla, kasutades DNF-i konfiguratsioonihaldurit.

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

Järgmisena lisage pakend 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

Kui need kaks paketti on installitud, installige uusim versioon docker-ce.

# dnf install docker-ce

Dokkeriteenuse lubamine ja käivitamine.

# systemctl enable docker
# systemctl start docker

Peate Kubernetese hoidlad käsitsi lisama, kuna need pole CentOS 8-sse eelinstallitud.

# 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

Kui pakettide repo on nüüd valmis, saate minna ja installida kubeadmi.

# dnf install kubeadm -y 

Käivitage ja lubage teenus.

# systemctl enable kubelet
# systemctl start kubelet

Nüüd vajame klastriga liitumiseks kubeadm init loodud luba. Võite selle kopeerida ja kleepida oma sõlme-1 ja sõlme-2, kui olete selle kuhugi kopeerinud.

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

Nagu viimasel real soovitatud, minge tagasi oma põhisõlme juurde ja kontrollige, kas töötaja sõlm 1 ja töötaja sõlm 2 on klastriga liitunud järgmise käsu abil.

# kubectl get nodes

Kui kõik etapid õnnestuvad edukalt, peaksite nägema põhisõlmes sõlme 1 ja sõlme 2 valmisolekus. Siinkohal olete nüüd Kubernetesi klastri CentOS 8 edukalt juurutanud.

Soovitatav lugemine: Nginxi juurutamine Kubernetese klastrisse

Siin loodud klastril on üks põhisõlm ja sellisena võib põhisõlme ebaõnnestumisel teie klaster andmeid kaotada ja võib-olla tuleb see nullist taastada.

Sel põhjusel soovitan ülimalt kättesaadavat seadistust.