Kif Tinstalla Kubernetes Cluster fuq CentOS 8


Il-proċess ta 'installazzjoni ta' Kubernetes Cluster fuq CentOS 8 huwa kważi simili għal dak ta 'CentOS 7 (li tista' tgħaddi minnu hawn), iżda l-proċess hawn għandu ftit bidliet. Dawn il-bidliet, l-aktar iduru madwar l-installazzjoni ta 'Docker.

Jibda minn CentOS 8 (u b'estensjoni RHEL 8), docker issa ġie sostitwit b'mod nattiv minn podman u buildah li huma għodod minn Redhat. Fil-fatt, il-pakkett docker issa tneħħa mir-repożitorju tal-pakkett default.

B'din il-mossa, it-tim ta 'Redhat għandu l-għan li jissimplifika l-proċess tal-ħolqien u l-użu ta' kontenituri, mingħajr il-bżonn ta' permessi speċjali, filwaqt li fl-istess ħin, iżomm il-kompatibilità mal-immaġini tad-docker u joperahom mingħajr il-bżonn ta' daemon. Podman iwiegħed li joffri aktar flessibbiltà meta jaħdem fuq ambjenti Kubernetes, iżda l-ġurija tibqa’ hemmhekk.

Għal dan l-artikolu, se ngħaddu mill-proċess ta 'installazzjoni ta' Kubernetes fuq pjattaforma CentOS 8, li taħdem fuq Docker-CE (Edizzjoni tal-Komunità). F'artiklu aktar tard, se ngħaddu wkoll minn installazzjoni simili, billi nużaw podman għall-kontenituri tagħna.

  1. Tliet servers li jħaddmu CentOS 8 – 1 Master Node u 2 Worker Nodes.
  2. Huwa rakkomandat li n-nodi tiegħek għandu jkollhom mill-inqas 2 CPUs b'2GB RAM jew aktar għal kull magna. Dan mhuwiex rekwiżit strett iżda huwa mmexxi fil-biċċa l-kbira mill-ħtiġijiet tal-applikazzjoni li biħsiebek tħaddem.
  3. Konnettività tal-internet fuq in-nodi kollha tiegħek. Se nkunu qed inġibu Kubernetes u pakketti docker mir-repożitorju. Bl-istess mod, ser ikollok bżonn tiżgura li l-maniġer tal-pakketti DNF huwa installat awtomatikament u jista 'jġib il-pakketti mill-bogħod.
  4. In-nodi kollha tiegħek għandhom ukoll ikunu jistgħu jikkonnettjaw ma' xulxin, jew fuq netwerk privat jew pubbliku, skont liema jkun disponibbli.
  5. Ikollok bżonn ukoll aċċess għal kont bi privileġġi sudo jew root. F'dan it-tutorja, se nkun qed nuża l-kont root tiegħi.

Ħafna nodi ġeneralment jiġu b'indirizzi MAC uniċi, madankollu, f'xi każijiet uniċi, xi Magni Virtwali jista 'jkollhom indirizzi MAC identiċi. Għalhekk huwa rakkomandat li tikkonferma li l-Prodott_UUID u l-indirizz MAC mhumiex identiċi fl-ebda nodi.

Kubernetes juża dawn il-valuri biex jidentifika b'mod uniku n-nodi fil-cluster. Jekk dawn il-valuri mhumiex uniċi għal kull nodu, il-proċess ta 'installazzjoni jista' jfalli.

Biex tiċċekkja l-indirizz MAC tal-interface tan-netwerk u tqabbelha.

# ip link

Biex tiċċekkja l-product_uuid u tqabbel, mexxi l-kmand li ġej.

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

L-installazzjoni tagħna hija mfassla biex ikollha l-Master-Node li jikkontrolla n-Nodi tal-Ħaddiem. Fl-aħħar ta 'din l-installazzjoni, l-arkitettura loġika tagħna tidher xi ħaġa bħal din.

Master Node - Din il-magna ġeneralment taġixxi bħala l-pjan ta 'kontroll u tmexxi d-database tal-cluster u s-server API (li l-kubectl CLI tikkomunika magħhom).

Il-Kubernetes Cluster tagħna bi 3 nodi se jidher xi ħaġa bħal din:

Installazzjoni ta' Kubernetes Cluster fuq Master-Node

Biex Kubernetes jaħdem, ser ikollok bżonn magna tal-kontejners. Kif imsemmi, se nkunu qed nużaw Docker-CE.

L-istituzzjonijiet li ġejjin se jsiru fuq CentOS 8 Master-Node.

Fuq CentOS 8 Master-Node tiegħek, issettja l-hostname tas-sistema u aġġorna d-DNS fil-fajl /etc/hosts tiegħek.

# 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

Sussegwentement, ping worker-node-1 u worker-node-2 tiegħek biex tivverifika jekk il-fajl host aġġornat tiegħek hux qed jaħdem b'mod korrett billi tuża l-kmand ping.

# ping 192.168.0.48
# ping 192.168.0.49

Sussegwentement, iddiżattiva Selinux, peress li dan huwa meħtieġ biex jippermetti lill-kontenituri jaċċessaw is-sistema tal-fajls ospitanti, li hija meħtieġa minn netwerks pod u servizzi oħra.

# setenforce 0

L-issettjar ta' setenforce għal 0 effettivament jistabbilixxi SELinux bħala permissiv, li effettivament iwaqqaf SELinux sal-reboot li jmiss. Biex tiddiżattivah kompletament, uża l-kmand hawn taħt u reboot.

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

Kubernetes jagħmel użu minn diversi portijiet għall-komunikazzjoni u l-aċċess u dawn il-portijiet jeħtieġ li jkunu aċċessibbli għal Kubernetes u mhux limitati mill-firewall.

Ikkonfigura r-regoli tal-firewall fuq il-portijiet.

# 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

Ikollok bżonn li żżid ir-repożitorju Docker l-ewwel peress li m'għadux fil-lista tal-pakketti default billi tuża l-kmand dnf config-manager li ġej.

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

Installa wkoll il-pakkett containerd.io li huwa disponibbli bħala daemon li jimmaniġġja ċ-ċiklu tal-ħajja sħiħ tal-kontenitur tas-sistema ospitanti tiegħu, mit-trasferiment u l-ħażna tal-immaġni għall-eżekuzzjoni u s-superviżjoni tal-kontejners għal ħażna ta 'livell baxx għal aċċessorji tan-netwerk u lil hinn.

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

Issa installa l-aħħar verżjoni ta 'pakkett docker-ce.

# dnf install docker-ce

Issa tista 'tippermetti u tibda s-servizz docker.

# systemctl enable docker
# systemctl start docker

Sussegwentement, ser ikollok bżonn iżżid repożitorji Kubernetes manwalment peress li ma jiġux installati awtomatikament fuq 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 jgħinek tibda raggruppament Kubernetes minimu vijabbli li jikkonforma mal-aħjar prattiki. Bil-kubeadm, il-cluster tiegħek għandu jgħaddi mit-testijiet ta' Konformità ta' Kubernetes.

Kubeadm jappoġġja wkoll funzjonijiet oħra taċ-ċiklu tal-ħajja tal-clusters, bħal titjib, downgrade, u l-ġestjoni tat-tokens bootstrap. Kubeadm huwa wkoll faċli għall-integrazzjoni ma 'għodod oħra ta' orkestrazzjoni bħal Ansible u Terraform.

Bil-pakkett repo issa lest, tista 'tkompli u tinstalla l-pakkett kubeadm.

# dnf install kubeadm -y 

Meta l-installazzjoni titlesta b'suċċess, ippermetti u ibda s-servizz.

# systemctl enable kubelet
# systemctl start kubelet

Il-kaptan ta' Kubernetes li jaġixxi bħala l-pjan ta' kontroll għall-cluster imexxi ftit servizzi kritiċi meħtieġa għall-cluster. Bħala tali, il-proċess ta 'inizjalizzazzjoni se jagħmel serje ta' kontrolli minn qabel biex jiżgura li l-magna tkun lesta biex tħaddem Kubernetes. Dawn il-kontrolli minn qabel jesponu twissijiet u ħruġ fuq żbalji. kubeadm init imbagħad iniżżel u jinstalla l-komponenti tal-pjan ta' kontroll tal-cluster.

Issa wasal iż-żmien li tibda l-Kubernetes master, iżda qabel dan, trid tiddiżattiva t-tpartit sabiex tmexxi l-kmand \kubeadm init\.

# swapoff -a

L-inizjalizzazzjoni tal-Kubernetes master huwa proċess kompletament awtomatizzat li huwa kkontrollat mill-kmand \kubeadm init\ kif muri.

# kubeadm init

Sussegwentement, ikkopja l-kmand li ġej u aħżinu x'imkien, peress li aħna rridu nħaddmu dan il-kmand fuq in-nodi tal-ħaddiema aktar tard.

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

Tip: Xi drabi l-kmand ta’ hawn fuq jista’ jarmi żbalji dwar l-argumenti mgħoddija, għalhekk biex tevita l-iżbalji, trid tneħħi l-karattru ‘\’ u l-kmand finali tiegħek jidher bħal dan.

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

Ladarba Kubernetes inizjalizza b'suċċess, trid tippermetti lill-utent tiegħek jibda juża l-cluster. Fix-xenarju tagħna, se nkunu qed nużaw l-utent għerq. Tista 'wkoll tibda l-cluster billi tuża sudo user kif muri.

Biex tuża l-għeruq, mexxi:

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

Biex tuża utent abilitat sudo, mexxi:

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

Issa ikkonferma li l-kmand kubectl huwa attivat.

# kubectl get nodes

F'dan il-mument, se tara l-istatus tal-master-node huwa 'NotReady'. Dan għaliex għadna rridu nħaddmu n-netwerk tal-pods fil-cluster.

In-Netwerk tal-pods huwa n-netwerk overlay għall-cluster, li huwa skjerat fuq in-netwerk tan-nodi preżenti. Hija mfassla biex tippermetti konnettività madwar il-pod.

L-iskjerament tal-cluster tan-netwerk huwa proċess flessibbli ħafna li jiddependi fuq il-bżonnijiet tiegħek u hemm ħafna għażliet disponibbli. Peress li rridu nżommu l-installazzjoni tagħna sempliċi kemm jista 'jkun, se nużaw il-plugin Weavenet li ma jeħtieġ ebda konfigurazzjoni jew kodiċi żejjed u jipprovdi indirizz IP wieħed għal kull pod li huwa kbir għalina. Jekk trid tara aktar għażliet, jekk jogħġbok iċċekkja hawn.

Dawn il-kmandi se jkunu importanti biex tinkiseb is-setup tan-netwerk tal-pods.

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

Issa jekk tiċċekkja l-istatus tal-master-node tiegħek, għandu jkun Let.

# kubectl get nodes

Sussegwentement, inżidu n-nodi tal-ħaddiema mal-cluster.

Żieda ta' Nodi tal-Ħaddiema mal-Kubernetes Cluster

L-istruzzjonijiet li ġejjin se jitwettqu fuq kull nodu tal-ħaddiem meta tingħaqad mal-cluster Kubernetes.

L-ewwel issettja l-isem tal-host fuq worker-node-1 u worker-node-2 tiegħek, u mbagħad żid l-entrati tal-host fil-fajl /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

Sussegwentement, ping in-node prinċipali tiegħek min-nodi tal-ħaddiema tiegħek biex tikkonferma li l-fajl host aġġornat tiegħek qed jaħdem tajjeb billi tuża l-kmand ping.

# 192.168.0.47

Sussegwentement, iddiżattiva SElinux u aġġorna r-regoli tal-firewall tiegħek.

# 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

Żid ir-repożitorju Docker l-ewwel billi tuża DNF config-manager.

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

Sussegwentement, żid il-pakkett 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

B'dawn iż-żewġ pakketti installati, installa l-aħħar verżjoni ta 'docker-ce.

# dnf install docker-ce

Ippermetti u ibda s-servizz docker.

# systemctl enable docker
# systemctl start docker

Ikollok bżonn iżżid repożitorji Kubernetes manwalment peress li ma jiġux installati minn qabel fuq 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

Bil-pakkett repo issa lest, tista 'tkompli u tinstalla kubeadm.

# dnf install kubeadm -y 

Ibda u ppermettiet is-servizz.

# systemctl enable kubelet
# systemctl start kubelet

Issa neħtieġu t-token li ġġenera kubeadm init, biex jingħaqad mal-cluster. Tista' tikkopjaha u tippejstja man-node-1 u n-node-2 tiegħek jekk kont ikkupjatha x'imkien.

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

Kif issuġġerit fl-aħħar linja, mur lura għall-master-node tiegħek u vverifika jekk ħaddiem node-1 u ħaddiem node-2 ingħaqdux mal-cluster billi tuża l-kmand li ġej.

# kubectl get nodes

Jekk il-passi kollha jimxu b'suċċess, allura, għandek tara node-1 u node-2 fi stat lest fuq il-master-node. F'dan il-punt, issa skjerajt b'suċċess cluster Kubernetes fuq CentOS 8.

Aqra Rakkomandat: Kif Tiskjera Nginx fuq Cluster Kubernetes

Il-cluster li ħloqna hawn għandu nodu Master wieħed, u bħala tali, jekk in-nodu Master ifalli, il-cluster tiegħek jista 'jitlef id-dejta u jista' jkun jeħtieġ li jiġi rikrejat mill-bidu.

Għal din ir-raġuni, nirrakkomanda setup Disponibbli Għoli.