CentOS 8-de Kubernetes klasterini nädip gurmaly


CentOS 8-de Kubernetes klasterini gurmak prosesi CentOS 7-e meňzeýär (bu ýerden geçip bilersiňiz), ýöne bu ýerdäki prosesde birnäçe üýtgeşiklik bar. Bu üýtgeşmeler, esasan, Docker-i gurmak bilen baglanyşykly.

CentOS 8-den başlap (we RHEL 8 giňeltmesi bilen) doker indi Redhatyň gurallary bolan podman we buildah bilen çalşyryldy. Aslynda, doker paketi indi adaty paket ammaryndan aýryldy.

Redhat topary bu ädim bilen konteýnerleri döretmek we ulanmak prosesini ýönekeýleşdirmegi maksat edinýär, şol bir wagtyň özünde doker şekilleri bilen sazlaşyklylygy saklaýar we daemon gerek bolmazdan işleýär. Podman Kubernetes gurşawynda işleýän mahaly has çeýeligi teklip etmegi wada berýär, ýöne eminler şol ýerde galýarlar.

Bu makala üçin, Docker-CE (Community Edition) -da işleýän CentOS 8 platformasynda Kubernetes-i gurmak prosesini geçireris. Soňraky makalada konteýnerlerimiz üçin podman ulanyp, şuňa meňzeş gurnamanyň üstünden bararys.

  1. CentOS 8 - 1 Master düwün we 2 işçi düwünini işleýän üç serwer.
  2. Düwünleriňizde her enjamda 2 Gb RAM ýa-da has köp 2 CPU bolmaly. Bu berk talap däl, esasanam işlemek isleýän programmaňyzyň zerurlyklary bilen baglanyşykly.
  3. nhli düwünleriňizde internet birikmesi. Kubernetes we doker paketlerini ammardan alarys. Şonuň bilen birlikde, DNF paket dolandyryjysynyň deslapky gurnalandygyna we paketleri uzakdan alyp biljekdigine göz ýetirmeli.
  4. nhli düwünleriňiz, haýsy elýeterli bolsa, hususy ýa-da jemgyýetçilik ulgamynda biri-birine birigip bilmeli.
  5. Şeýle hem, sudo ýa-da kök aýratynlyklary bolan hasaby açmaly bolarsyňyz. Bu gollanmada kök hasabymy ulanaryn.

Düwünleriň köpüsi, adatça, üýtgeşik MAC salgylary bilen gelýär, ýöne käbir üýtgeşik ýagdaýlarda, käbir wirtual maşynlarda birmeňzeş MAC salgylary bolup biler. Şonuň üçin önümleriň_UUID we MAC salgysynyň düwünleriň hiç birinde birmeňzeş däldigini tassyklamak maslahat berilýär.

Kubernetes, bu bahalary klasterdäki düwünleri özboluşly kesgitlemek üçin ulanýar. Bu bahalar her düwün üçin aýratyn däl bolsa, gurmak prosesi şowsuz bolup biler.

Tor interfeýsiniň MAC salgysyny barlamak we deňeşdirmek.

# ip link

Önüm_uuidini barlamak we deňeşdirmek üçin aşakdaky buýrugy işlediň.

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

Gurluşymyz, “Worker” düwünlerine gözegçilik edýän “Master-Node” üçin döredildi. Bu gurnamanyň soňunda logiki arhitekturamyz şuňa meňzeş bir zat görüner.

Master Node - Bu enjam, adatça dolandyryş tekizligi hökmünde hereket edýär we klaster maglumatlar bazasyny we API serwerini işleýär (kubectl CLI bilen aragatnaşyk saklaýar).

3 düwünli Kubernetes Klasterimiz şuňa meňzeş bir zat görüner:

Master-düwünde Kubernetes klasterini gurmak

Kubernetesiň işlemegi üçin konteýnerizasiýa motory gerek bolar. Mentionedokarda aýdylyşy ýaly, Docker-CE ulanarys.

CentOS 8 Master-Node-da aşakdaky edaralar ýerine ýetiriler.

CentOS 8 Master-Node-da ulgamyň adyny düzüň we DNS-i/etc/host faýlyňyzda täzeläň.

# 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

Ondan soň, täzelenen host faýlyňyzyň ping buýrugyny ulanyp dogry işleýändigini barlamak üçin işçi-node-1 we işçi-node-2 basyň.

# ping 192.168.0.48
# ping 192.168.0.49

Ondan soň, Selinux-y öçüriň, sebäbi konteýnerlere pod torlary we beýleki hyzmatlar zerur bolan baş faýl ulgamyna girmäge rugsat berilýär.

# setenforce 0

Gurluş güýjüni 0 düzmek SELinux-y rugsat beriji edip düzýär, bu indiki açylýança SELinux-y netijeli öçürýär. Ony doly öçürmek üçin aşakdaky buýrugy ulanyň we gaýtadan açyň.

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

Kubernetes aragatnaşyk we giriş üçin dürli portlardan peýdalanýar we bu portlara Kubernetes üçin elýeterli bolmaly we diwar diwary bilen çäklenmeli däl.

Gorag diwarlarynyň düzgünlerini portlarda düzüň.

# 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

Aşakdaky dnf config-manager buýrugyny ulanyp, deslapky paket sanawynda ýoklugy üçin ilki Docker ammaryny goşmaly bolarsyňyz.

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

Şeýle hem, kabul ediş ulgamynyň doly konteýner ömrüni dolandyrýan daemon hökmünde elýeterli konteýnerd.io paketini guruň, surat geçirmekden we saklamakdan konteýner ýerine ýetirişine we gözegçiliginden pes derejeli ammarlara, tor goşundylaryna we başga ýerlere çenli.

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

Indi docker-ce paketiniň iň soňky wersiýasyny guruň.

# dnf install docker-ce

Indi doker hyzmatyny açyp we başlap bilersiňiz.

# systemctl enable docker
# systemctl start docker

Ondan soň Kubernetes ammarlaryny el bilen goşmaly bolarsyňyz, sebäbi olar CentOS 8-de deslapky gurulmaýar.

# 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, iň oňat tejribä laýyk gelýän iň az ukyply Kubernetes toparyny ýüklemäge kömek edýär. Kubeadm bilen, toparyňyz Kubernetes laýyklyk synaglaryndan geçmeli.

Kubeadm, kämilleşdirmek, peseltmek we bootstrap belliklerini dolandyrmak ýaly beýleki klaster ömri sikl funksiýalaryny hem goldaýar. Kubeadm, Ansible we Terraform ýaly beýleki orkestr gurallary bilen hem integrasiýa üçin amatly.

Bukja repo indi taýýar bolansoň, kubeadm paketini gurup bilersiňiz.

# dnf install kubeadm -y 

Gurmak üstünlikli tamamlanandan soň, hyzmaty işlediň we başlaň.

# systemctl enable kubelet
# systemctl start kubelet

Klaster üçin dolandyryş tekizligi hökmünde çykyş edýän Kubernetes ussady, klaster üçin zerur birnäçe möhüm hyzmatlary ýerine ýetirýär. Şeýle bolansoň, başlangyç prosesi enjamyň Kubernetes işlemäge taýýardygyny üpjün etmek üçin birnäçe barlag geçirer. Bu barlaglar duýduryşlary paş edýär we ýalňyşlyklardan çykýar. kubeadm init soňra klaster dolandyryş tekiz komponentlerini göçürip alýar.

Kubernetes ussady işe girizmegiň wagty geldi, ýöne ondan ozal\kubeadm init\buýrugyny işletmek üçin çalşygy öçürmeli.

# swapoff -a

Kubernetes ussady işe girizmek, görkezilişi ýaly\kubeadm init\buýrugy bilen dolandyrylýan doly awtomatlaşdyrylan prosesdir.

# kubeadm init

Ondan soň aşakdaky buýrugy göçüriň we bir ýerde saklaň, sebäbi bu buýrugy soňrak işçi düwünlerinde işletmeli.

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

Maslahat: Käwagt ýokardaky buýruk geçen argumentler barada ýalňyşlyklary goýup biler, şonuň üçin ýalňyşlyklardan gaça durmak üçin '\' nyşanyny aýyrmaly we iň soňky buýrugyňyz şuňa meňzeýär.

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

Kubernetes üstünlikli işe başlansoň, ulanyjynyňyza klaster ulanyp başlamaga mümkinçilik bermeli. Ssenariýimizde kök ulanyjyny ulanarys. Şeýle hem, sudo ulanyjysyny görkezilişi ýaly ulanyp bilersiňiz.

Kök ulanmak üçin işlediň:

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

Sudo açyk ulanyjyny ulanmak üçin işlediň:

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

Indi kubectl buýrugynyň işjeňdigini tassyklaň.

# kubectl get nodes

Bu pursatda baş düwüniň ýagdaýynyň “NotReady” bolandygyny görersiňiz. Munuň sebäbi entek pod toruny klasterde ýerleşdirmeli däl.

Pod Network, häzirki düwün torunyň üstünde ýerleşdirilen klaster üçin örtük torudyr. Ol podwodka birikmäge mümkinçilik berýär.

Tor toparyny ýerleşdirmek, zerurlyklaryňyza baglylykda ýokary çeýe prosesdir we köp wariant bar. Gurluşymyzy mümkin boldugyça ýönekeý saklamak isleýänimiz üçin, hiç hili konfigurasiýa ýa-da goşmaça kod talap etmeýän Weavenet pluginini ulanarys we bu pod üçin bir IP adresi üpjün edýär. Has köp wariant görmek isleseňiz, şu ýere göz aýlaň.

Bu buýruklar pod toruny gurmak üçin möhümdir.

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

Indi baş düwüniňiziň ýagdaýyny barlasaňyz, “Taýýar” bolmaly.

# kubectl get nodes

Soň bolsa, topara işçi düwünlerini goşýarys.

Kubernetes toparyna işçi düwünlerini goşmak

Kubernetes toparyna goşulanda her işçi düwüninde aşakdaky görkezmeler ýerine ýetiriler.

Ilki bilen host adyny node-1-de we işçi-node-2-de belläň we soňra host ýazgylaryny/etc/host faýlyna goşuň.

# 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

Ondan soň, täzelenen host faýlyňyzyň ping buýrugyny ulanyp gowy işleýändigini tassyklamak üçin esasy düwüniňizi işçi düwünlerinden basyň.

# 192.168.0.47

Ondan soň, SElinux-y öçüriň we diwar gorag düzgünleriňizi täzeläň.

# 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

Ilki bilen DNF konfigurasiýa dolandyryjysyny ulanyp, Docker ammaryny goşuň.

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

Ondan soň konteýnerd.io paketini goşuň.

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

Bu iki paket gurlup, docker-ce-iň iň soňky wersiýasyny guruň.

# dnf install docker-ce

Doker hyzmatyny açyň we başlaň.

# systemctl enable docker
# systemctl start docker

Kubernetes ammarlaryny CentOS 8-de öňünden gurulmandygy sebäpli el bilen goşmaly bolarsyňyz.

# 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

Indi paket repo taýýar bolansoň, kubeadm gurup bilersiňiz.

# dnf install kubeadm -y 

Hyzmaty başlaň we işlediň.

# systemctl enable kubelet
# systemctl start kubelet

Indi, topara goşulmak üçin kubeadm initiň döreden nyşanyny talap edýäris. Bir ýerden göçüren bolsaňyz, düwün-1 we düwün-2-ä göçürip alyp bilersiňiz.

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

Iň soňky setirde teklip edilişi ýaly, baş düwüniňize gaýdyp, işçi düwün-1 we işçi düwün-2 aşakdaky buýrugy ulanyp topara goşulandygyny ýa-da ýokdugyny barlaň.

# kubectl get nodes

Thehli ädimler üstünlikli işleýän bolsa, baş düwünde düwün-1 we düwün-2-ni taýýar ýagdaýda görmeli. Şu wagt, CentOS 8-de Kubernetes toparyny üstünlikli ýerleşdirdiňiz.

Maslahat berilýän okaň: Kubernetes toparynda Nginx-i nädip ýerleşdirmeli

Bu ýerde döreden klasterimiziň ýekeje Master düwmesi bar we şonuň üçin Master düwün şowsuz bolsa, klasteriňiz maglumatlary ýitirip biler we başdan başlap döredilmeli bolup biler.

Şol sebäpli ýokary derejede elýeterli gurnamagy maslahat berýärin.