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.
- Tliet servers li jħaddmu CentOS 8 – 1 Master Node u 2 Worker Nodes.
- 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.
- 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.
- In-nodi kollha tiegħek għandhom ukoll ikunu jistgħu jikkonnettjaw ma' xulxin, jew fuq netwerk privat jew pubbliku, skont liema jkun disponibbli.
- 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.