Jinsi ya Kufunga Nguzo ya Kubernetes kwenye CentOS 8


Mchakato wa kusakinisha Nguzo ya Kubernetes kwenye CentOS 8 inakaribia kufanana na ile ya CentOS 7 (ambayo unaweza kupitia hapa), lakini mchakato hapa una mabadiliko machache. Mabadiliko haya, zaidi yanahusu usakinishaji wa Docker.

Kuanzia CentOS 8 (na kwa kiendelezi cha RHEL 8), docker sasa imebadilishwa asili yake na podman na buildah ambazo ni zana kutoka Redhat. Kwa kweli, kifurushi cha docker sasa kimeondolewa kwenye hazina ya kifurushi chaguo-msingi.

Kwa hatua hii, timu ya Redhat inalenga kurahisisha mchakato wa kuunda na kutumia kontena, bila kuhitaji ruhusa maalum, na wakati huo huo, kudumisha utangamano na picha za docker na kuziendesha bila kuhitaji daemon. Podman anaahidi kutoa unyumbufu zaidi wakati wa kukimbia kwenye mazingira ya Kubernetes, lakini jury inabaki huko nje.

Kwa makala hii, tutapitia mchakato wa kusakinisha Kubernetes kwenye jukwaa la CentOS 8, linaloendeshwa kwenye Docker-CE (Toleo la Jumuiya). Katika makala ya baadaye, sisi pia kukimbia kwa njia ya ufungaji sawa, kwa kutumia podman kwa vyombo yetu.

  1. Seva tatu zinazotumia CentOS 8 - Nodi Kuu 1 na Nodi 2 za Wafanyikazi.
  2. Inapendekezwa kuwa nodi zako ziwe na angalau CPU 2 zenye RAM ya 2GB au zaidi kwa kila mashine. Hili si hitaji kali lakini kwa kiasi kikubwa linaendeshwa na mahitaji ya programu unayokusudia kutekeleza.
  3. Muunganisho wa mtandao kwenye nodi zako zote. Tutakuwa tukichukua Kubernetes na vifurushi vya docker kutoka kwa hazina. Vile vile, utahitaji kuhakikisha kuwa kidhibiti kifurushi cha DNF kimesakinishwa kwa chaguomsingi na kinaweza kuleta vifurushi kwa mbali.
  4. Nodi zako zote zinafaa pia kuwa na uwezo wa kuunganishwa, ama kwenye mtandao wa faragha au wa umma, kwa chochote kinachopatikana.
  5. Utahitaji pia ufikiaji wa akaunti iliyo na sudo au haki za mizizi. Katika somo hili, nitakuwa nikitumia akaunti yangu ya mizizi.

Nodi nyingi kwa ujumla huja na anwani za kipekee za MAC, hata hivyo, katika hali zingine za kipekee, Mashine zingine zinaweza kuwa na anwani za MAC zinazofanana. Kwa hivyo, inashauriwa uthibitishe kuwa Product_UUID na anwani ya MAC hazifanani katika nodi zozote.

Kubernetes hutumia thamani hizi kutambua kwa njia ya kipekee nodi kwenye nguzo. Ikiwa maadili haya sio ya kipekee kwa kila nodi, mchakato wa usakinishaji unaweza kushindwa.

Ili kuangalia anwani ya MAC ya kiolesura cha mtandao na kulinganisha.

# ip link

Kuangalia product_uuid na kulinganisha, endesha amri ifuatayo.

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

Usakinishaji wetu umeundwa ili kuwa na Njia Kuu inayodhibiti Nodi za Wafanyikazi. Mwishoni mwa usakinishaji huu, usanifu wetu wa kimantiki utaonekana kama hii.

Njia Kuu - Mashine hii kwa ujumla hufanya kazi kama ndege ya kudhibiti na huendesha hifadhidata ya nguzo na seva ya API (ambayo kubectl CLI inawasiliana nayo).

Nguzo yetu ya Kubernetes yenye nodi-3 itaonekana kitu kama hiki:

Ufungaji wa Kubernetes Cluster kwenye Master-Node

Ili Kubernetes ifanye kazi, utahitaji injini ya uwekaji vyombo. Kama ilivyotajwa, tutakuwa tukitumia Docker-CE.

Taasisi zifuatazo zitatekelezwa kwenye CentOS 8 Master-Node.

Kwenye CentOS 8 Master-Node yako, weka jina la mpangishi wa mfumo na usasishe DNS kwenye /etc/hosts faili yako.

# 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

Ifuatayo, ping worker-node-1 yako na worker-node-2 ili kuangalia ikiwa faili yako ya mwenyeji iliyosasishwa inafanya kazi kwa usahihi kwa kutumia ping amri.

# ping 192.168.0.48
# ping 192.168.0.49

Ifuatayo, zima Selinux, kwani hii inahitajika ili kuruhusu kontena kufikia mfumo wa faili wa mwenyeji, ambao unahitajika na mitandao ya pod na huduma zingine.

# setenforce 0

Kuweka uimarishaji wa 0 kwa ufanisi huweka SELinux ruhusu, ambayo huzima SELinux kwa ufanisi hadi iwashwe tena. Ili kuizima kabisa, tumia amri iliyo hapa chini na uwashe upya.

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

Kubernetes hutumia bandari mbalimbali kwa mawasiliano na ufikiaji na bandari hizi zinahitaji kufikiwa na Kubernetes na sio tu kwa ngome.

Sanidi sheria za ngome kwenye milango.

# 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

Utahitaji kuongeza hazina ya Docker kwanza kwani haiko tena kwenye orodha ya kifurushi chaguo-msingi kwa kutumia dnf config-manager amri ifuatayo.

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

Pia sakinisha kifurushi cha containerd.io ambacho kinapatikana kama daemoni inayodhibiti mzunguko kamili wa kontena wa mfumo wake wa seva pangishi, kutoka kwa uhamishaji wa picha na uhifadhi hadi utekelezaji na usimamizi wa kontena hadi uhifadhi wa kiwango cha chini hadi viambatisho vya mtandao na zaidi.

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

Sasa sasisha toleo la hivi karibuni la kifurushi cha docker-ce.

# dnf install docker-ce

Sasa unaweza kuwezesha na kuanza huduma ya docker.

# systemctl enable docker
# systemctl start docker

Ifuatayo, utahitaji kuongeza hazina za Kubernetes kwa mikono kwani hazijasakinishwa kwa chaguo-msingi kwenye 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 hukusaidia kuanzisha nguzo ya chini kabisa ya Kubernetes inayolingana na mbinu bora. Ukiwa na kubeadm, nguzo yako inapaswa kupita majaribio ya Ulinganifu wa Kubernetes.

Kubeadm pia inasaidia kazi zingine za mzunguko wa maisha wa nguzo, kama vile uboreshaji, kupunguza kiwango, na kudhibiti tokeni za bootstrap. Kubeadm pia ni rafiki wa kuunganishwa na zana zingine za uimbaji kama vile Ansible na Terraform.

Repo ya kifurushi ikiwa tayari, unaweza kwenda mbele na kusakinisha kifurushi cha kubeadm.

# dnf install kubeadm -y 

Wakati usakinishaji ukamilika kwa ufanisi, wezesha na uanze huduma.

# systemctl enable kubelet
# systemctl start kubelet

Kubernetes master ambayo hufanya kazi kama ndege inayodhibiti ya nguzo huendesha huduma chache muhimu zinazohitajika kwa nguzo. Kwa hivyo, mchakato wa uanzishaji utafanya mfululizo wa ukaguzi ili kuhakikisha kuwa mashine iko tayari kuendesha Kubernetes. Ukaguzi huu wa awali hufichua maonyo na kuondoka kwenye hitilafu. kubeadm init kisha kupakua na kusakinisha vijenzi vya ndege vya kudhibiti nguzo.

Sasa ni wakati wa kuanzisha Kubernetes master, lakini kabla ya hapo, lazima uzima ubadilishanaji ili kutekeleza amri ya \kubeadm init\.

# swapoff -a

Kuanzisha Kubernetes master ni mchakato wa kiotomatiki kabisa ambao unadhibitiwa na amri ya \kubeadm init\ kama inavyoonyeshwa.

# kubeadm init

Ifuatayo, nakili amri ifuatayo na uihifadhi mahali fulani, kwani tulihitaji kutekeleza amri hii kwenye nodi za mfanyakazi baadaye.

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

Kidokezo: Wakati mwingine amri iliyo hapo juu inaweza kusababisha makosa kuhusu hoja zilizopitishwa, kwa hivyo ili kuepuka makosa, unahitaji kuondoa ‘\’ herufi na amri yako ya mwisho itaonekana hivi.

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

Mara tu Kubernetes ilipoanzishwa kwa ufanisi, lazima uwezeshe mtumiaji wako kuanza kutumia nguzo. Katika hali yetu, tutakuwa tukitumia mtumiaji wa mizizi. Unaweza pia kuanza nguzo kwa kutumia mtumiaji wa sudo kama inavyoonyeshwa.

Ili kutumia mzizi, endesha:

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

Ili kutumia mtumiaji aliyewezeshwa na sudo, endesha:

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

Sasa thibitisha kuwa amri ya kubectl imeamilishwa.

# kubectl get nodes

Kwa wakati huu, utaona hali ya nodi kuu ni 'NotReady'. Hii ni kwa sababu bado hatujapeleka mtandao wa pod kwenye nguzo.

Mtandao wa ganda ni mtandao unaowekelea kwa nguzo, ambao unawekwa juu ya mtandao wa sasa wa nodi. Imeundwa ili kuruhusu muunganisho kwenye ganda.

Kupeleka kundi la mtandao ni mchakato unaonyumbulika sana kulingana na mahitaji yako na kuna chaguo nyingi zinazopatikana. Kwa kuwa tunataka kufanya usakinishaji wetu iwe rahisi iwezekanavyo, tutatumia programu-jalizi ya Weavenet ambayo haihitaji usanidi wowote au msimbo wa ziada na inatoa anwani moja ya IP kwa kila ganda ambayo ni nzuri kwetu. Ikiwa ungependa kuona chaguo zaidi, tafadhali angalia hapa.

Amri hizi zitakuwa muhimu kupata usanidi wa mtandao wa pod.

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

Sasa ukiangalia hali ya nodi yako kuu, inapaswa kuwa 'Tayari'.

# kubectl get nodes

Ifuatayo, tunaongeza nodes za mfanyakazi kwenye nguzo.

Kuongeza Nodi za Wafanyikazi kwenye Nguzo ya Kubernetes

Maagizo yafuatayo yatatekelezwa kwa kila nodi ya mfanyakazi wakati wa kujiunga na nguzo ya Kubernetes.

Kwanza weka jina la mwenyeji kwenye worker-node-1 yako na worker-node-2, na kisha ongeza maingizo ya mwenyeji kwenye /etc/hosts faili.

# 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

Ifuatayo, ping nodi yako kuu kutoka kwa nodi za wafanyikazi wako ili kudhibitisha kuwa faili yako ya mwenyeji iliyosasishwa inafanya kazi vizuri kwa kutumia amri ya ping.

# 192.168.0.47

Ifuatayo, zima SElinux na usasishe sheria zako za ngome.

# 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

Ongeza hazina ya Docker kwanza kwa kutumia meneja wa usanidi wa DNF.

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

Ifuatayo, ongeza kifurushi cha 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

Ukiwa na vifurushi hivi viwili vilivyosakinishwa, sakinisha toleo jipya zaidi la docker-ce.

# dnf install docker-ce

Wezesha na uanze huduma ya docker.

# systemctl enable docker
# systemctl start docker

Utahitaji kuongeza hazina za Kubernetes kwa mikono kwani hazijasanikishwa mapema kwenye 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

Repo ya kifurushi ikiwa tayari, unaweza kuendelea na kusakinisha kubeadm.

# dnf install kubeadm -y 

Anza na uwashe huduma.

# systemctl enable kubelet
# systemctl start kubelet

Sasa tunahitaji tokeni ambayo kubeadm init ilitengeneza, ili kujiunga na nguzo. Unaweza kunakili na kuibandika kwenye nodi-1 na nodi-2 ikiwa ulikuwa umeinakili mahali fulani.

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

Kama inavyopendekezwa kwenye mstari wa mwisho, rudi kwenye nodi yako kuu na uthibitishe ikiwa nodi ya mfanyakazi-1 na nodi ya mfanyakazi-2 wamejiunga na nguzo kwa kutumia amri ifuatayo.

# kubectl get nodes

Ikiwa hatua zote zinakwenda kwa mafanikio, basi, unapaswa kuona node-1 na node-2 katika hali tayari kwenye node-bwana. Kwa wakati huu, sasa umefanikiwa kusambaza nguzo ya Kubernetes kwenye CentOS 8.

Imependekezwa Soma: Jinsi ya Kupeleka Nginx kwenye Kundi la Kubernetes

Kundi tulilounda hapa lina nodi Kuu moja, na kwa hivyo, ikiwa nodi Kuu itashindwa, nguzo yako inaweza kupoteza data na inaweza kuhitaji kuundwa upya kuanzia mwanzo.

Kwa sababu hii, ninapendekeza usanidi Inapatikana Sana.