Kubernetes-klusterin asentaminen CentOS 8:aan


Kubernetes Clusterin asennusprosessi CentOS 8:aan on lähes samanlainen kuin CentOS 7 (jotka voit käydä läpi täältä), mutta Tässä prosessissa on muutamia muutoksia. Nämä muutokset liittyvät enimmäkseen Dockerin asennukseen.

CentOS 8:sta (ja laajennuksesta RHEL 8) alkaen docker on nyt korvattu alkuperäisellä versiolla podman ja buildah, jotka ovat Redhatin työkaluja. Itse asiassa docker-paketti on nyt poistettu oletuspakettivarastosta.

Tällä siirrolla Redhat-tiimi pyrkii yksinkertaistamaan säilöjen luonti- ja käyttöprosessia ilman erityislupia, säilyttäen samalla yhteensopivuuden docker-kuvien kanssa ja käyttämättä niitä ilman demonia. Podman lupaa tarjota enemmän joustavuutta Kubernetes-ympäristöissä, mutta tuomaristo pysyy paikallaan.

Tässä artikkelissa käymme läpi Kubernetesin asennuksen CentOS 8 -alustalle, joka toimii Docker-CE:llä (Community painos). Myöhemmässä artikkelissa käymme läpi myös samanlaisen asennuksen käyttämällä podmania säilöissämme.

Edellytykset

  1. Kolme palvelinta, joissa on käytössä CentOS 8 – 1 pääsolmu ja 2 työntekijäsolmua.
  2. On suositeltavaa, että solmuissasi on vähintään 2 CPU:ta, joissa on vähintään 2 Gt RAM-muistia konetta kohden. Tämä ei ole tiukka vaatimus, mutta se perustuu suurelta osin käytettävän sovelluksen tarpeisiin.
  3. Internet-yhteys kaikissa solmuissasi. Haemme Kubernetes- ja docker-paketit arkistosta. Samoin sinun on varmistettava, että DNF-paketinhallinta on asennettu oletusarvoisesti ja että se voi hakea paketteja etänä.
  4. Kaikkien solmujen pitäisi myös pystyä muodostamaan yhteys toisiinsa joko yksityisessä tai julkisessa verkossa sen mukaan, kumpi on käytettävissä.
  5. Tarvitset myös pääsyn tilille, jolla on sudo- tai root-oikeudet. Tässä opetusohjelmassa käytän root-tiliäni.

Varotoimet

Useimmissa solmuissa on yleensä yksilölliset MAC--osoitteet, mutta joissakin ainutlaatuisissa tapauksissa joillakin virtuaalisilla koneilla voi olla identtiset MAC-osoitteet. Siksi on suositeltavaa varmistaa, että Product_UUID- ja MAC-osoite eivät ole identtisiä missään solmussa.

Kubernetes käyttää näitä arvoja tunnistaakseen yksilöllisesti klusterin solmut. Jos nämä arvot eivät ole yksilöllisiä jokaiselle solmulle, asennusprosessi saattaa epäonnistua.

Tarkistaaksesi verkkoliitännän MAC-osoitteen ja vertaillaksesi sitä.

ip link

Tarkista product_uuid ja vertaa sitä suorittamalla seuraava komento.

cat /sys/class/dmi/id/product_uuid 

Looginen arkkitehtuuri

Asennuksessamme on Master-Node, joka ohjaa työntekijäsolmuja. Tämän asennuksen lopussa looginen arkkitehtuurimme näyttää suunnilleen tältä.

Pääsolmu – Tämä kone toimii yleensä ohjaustasona ja käyttää klusteritietokantaa ja API-palvelinta (jonka kubectl CLI kommunikoi).

3-solmun Kubernetes-klusterimme näyttää suunnilleen tältä:

Kubernetes-klusterin asennus Master-Nodeen

Jotta Kubernetes toimii, tarvitset konttimoottorin. Kuten mainittiin, käytämme Docker-CE:tä.

Seuraavat laitokset suoritetaan CentOS 8 Master-Nodella.

Vaihe 1: Valmistele isäntänimi, palomuuri ja SELinux

Aseta CentOS 8 Master-Nodessa järjestelmän isäntänimi ja päivitä DNS /etc/hosts-tiedostossa.

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

Ping-komentoa seuraavaksi worker-node-1 ja worker-node-2 tarkistaaksesi, toimiiko päivitetty isäntätiedostosi oikein ping-komennolla.

ping 192.168.0.48
ping 192.168.0.49

Poista seuraavaksi Selinux käytöstä, koska sitä tarvitaan, jotta säilöt voivat käyttää isäntätiedostojärjestelmää, jota pod-verkot ja muut palvelut tarvitsevat.

setenforce 0

Kun setenforce asetetaan arvoon 0, SELinux asetetaan käytännössä sallivaksi, mikä poistaa SELinuxin käytöstä seuraavaan uudelleenkäynnistykseen asti. Poistaaksesi sen kokonaan käytöstä, käytä alla olevaa komentoa ja käynnistä se uudelleen.

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

Kubernetes käyttää erilaisia portteja viestintään ja pääsyyn, ja näiden porttien on oltava Kubernetesin käytettävissä, eikä niitä saa rajoittaa palomuurilla.

Määritä porttien palomuurisäännöt.

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

Vaihe 2: Asenna Docker-CE CentOS 8:aan

Sinun on ensin lisättävä Docker-arkisto, koska se ei enää ole oletuspakettiluettelossa käyttämällä seuraavaa dnf config-manager -komentoa.

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

Asenna myös paketti containerd.io, joka on saatavilla demonina, joka hallitsee isäntäjärjestelmänsä koko säilön elinkaarta kuvansiirrosta ja tallentamisesta säilön suorittamiseen ja valvontaan, matalan tason tallennustilaan verkkoliitteisiin ja muuhun. .

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

Asenna nyt docker-ce-paketin uusin versio.

dnf install docker-ce

Voit nyt ottaa telakointipalvelun käyttöön ja käynnistää sen.

systemctl enable docker
systemctl start docker

Vaihe 3: Asenna Kubernetes (Kubeadm) CentOS 8:aan

Seuraavaksi sinun on lisättävä Kubernetes-tietovarastot manuaalisesti, koska niitä ei asenneta oletuksena CentOS 8:aan.

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 auttaa käynnistämään mahdollisimman hyvän Kubernetes-klusterin, joka noudattaa parhaita käytäntöjä. Kun kubeadm on käytössä, klusterin pitäisi läpäistä Kubernetes-yhteensopivuustestit.

Kubeadm tukee myös muita klusterin elinkaaren toimintoja, kuten päivityksiä, alenemista ja bootstrap-tunnisteiden hallintaa. Kubeadm on myös helppo integroida muihin orkestrointityökaluihin, kuten Ansible ja Terraform.

Kun pakettivarasto on nyt valmis, voit jatkaa ja asentaa kubeadm-paketin.

dnf install kubeadm -y 

Kun asennus on valmis, ota palvelu käyttöön ja käynnistä se.

systemctl enable kubelet
systemctl start kubelet

Vaihe 4: Luo ohjaustason Master kubeadm-ohjelmalla

Kubernetes-isäntä, joka toimii klusterin ohjaustasona, suorittaa muutamia klusterin kannalta tärkeitä palveluita. Sellaisenaan alustusprosessi tekee sarjan esitarkistuksia varmistaakseen, että kone on valmis käyttämään Kubernetesia. Nämä esitarkastukset paljastavat varoitukset ja poistuvat virheistä. kubeadm init lataa ja asentaa sitten klusterin ohjaustason komponentit.

Nyt on aika alustaa Kubernetes-master, mutta ennen sitä sinun on poistettava swap käytöstä, jotta voit suorittaa kubeadm init-komennon.

swapoff -a

Kubernetes-masterin alustaminen on täysin automatisoitu prosessi, jota ohjataan kubeadm init -komennolla kuvan mukaisesti.

kubeadm init

Kopioi seuraavaksi seuraava komento ja tallenna se jonnekin, koska vaadimme tämän komennon suorittamista työntekijäsolmuissa myöhemmin.

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

Vinkki: Joskus yllä oleva komento saattaa aiheuttaa virheitä välitetyistä argumenteista, joten virheiden välttämiseksi sinun on poistettava '\'-merkki. ja viimeinen komentosi näyttää tältä.

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

Kun Kubernetes on alustettu onnistuneesti, sinun on sallittava käyttäjän aloittaa klusterin käyttö. Skenaariossamme käytämme pääkäyttäjää. Voit myös käynnistää klusterin käyttämällä sudo useriä kuvan mukaisesti.

Käytä roota suorittamalla:

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

Jos haluat käyttää sudoa käyttävää käyttäjää, suorita:

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

Varmista nyt, että kubectl-komento on aktivoitu.

kubectl get nodes

Tällä hetkellä näet pääsolmun tilana Ei valmis. Tämä johtuu siitä, että emme ole vielä ottaneet pod-verkkoa käyttöön klusteriin.

Pod-verkko on klusterin peittoverkko, joka on otettu käyttöön nykyisen solmuverkon päällä. Se on suunniteltu mahdollistamaan liitännät kotelon yli.

Vaihe 5: Määritä Pod-verkkosi

Verkkoklusterin käyttöönotto on erittäin joustava prosessi tarpeidesi mukaan, ja vaihtoehtoja on monia. Koska haluamme pitää asennuksemme mahdollisimman yksinkertaisena, käytämme Weavenet-laajennusta, joka ei vaadi konfigurointia tai ylimääräistä koodia ja joka tarjoaa yhden IP-osoitteen per pod, mikä sopii meille erinomaisesti. Jos haluat nähdä lisää vaihtoehtoja, tarkista tämä.

Nämä komennot ovat tärkeitä pod-verkkoasetusten saamiseksi.

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

Jos nyt tarkistat pääsolmusi tilan, sen pitäisi olla Valmis.

kubectl get nodes

Seuraavaksi lisäämme työntekijäsolmut klusteriin.

Työntekijöiden solmujen lisääminen Kubernetes-klusteriin

Seuraavat ohjeet suoritetaan jokaiselle työntekijäsolmulle, kun liitetään Kubernetes-klusteriin.

Vaihe 1: Valmistele isäntänimi, palomuuri ja SELinux

Aseta ensin isäntänimi kohdille worker-node-1 ja worker-node-2 ja lisää sitten isäntämerkinnät kansioon /etc/hosts. > tiedosto.

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

Ping-komentoa seuraavaksi pääsolmuasi työntekijäsolmuistasi varmistaaksesi, että päivitetty isäntätiedostosi toimii hyvin.

192.168.0.47

Poista seuraavaksi SElinux käytöstä ja päivitä palomuurisäännöt.

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

Vaihe 2: Asenna Docker-CE ja Kubernetes Repo

Lisää Docker-arkisto ensin DNF config-managerilla.

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

Lisää seuraavaksi paketti 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

Kun nämä kaksi pakettia on asennettu, asenna docker-ce:n uusin versio.

dnf install docker-ce

Ota käyttöön ja käynnistä telakointipalvelu.

systemctl enable docker
systemctl start docker

Sinun on lisättävä Kubernetes-tietovarastot manuaalisesti, koska niitä ei ole esiasennettu CentOS 8:aan.

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

Vaihe 3: Asenna Kubeadm CentOS 8:aan

Kun pakettivarasto on nyt valmis, voit asentaa kubeadmin.

dnf install kubeadm -y 

Käynnistä ja ota palvelu käyttöön.

systemctl enable kubelet
systemctl start kubelet

Vaihe 4: Liity Worker Node Kubernetes-klusteriin

Vaadimme nyt kubeadm init:n luoman tunnuksen liittyäksesi klusteriin. Voit kopioida ja liittää sen solmuun 1 ja solmuun 2, jos olet kopioinut sen jonnekin.

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

Kuten viimeisellä rivillä ehdotetaan, palaa pääsolmuun ja tarkista, ovatko työntekijät node-1 ja worker node-2 liittyneet klusterin käyttämällä seuraavaa komentoa.

kubectl get nodes

Jos kaikki vaiheet suoritetaan onnistuneesti, sinun pitäisi nähdä solmu-1 ja solmu-2 valmiina pääsolmussa. Tässä vaiheessa olet nyt onnistuneesti ottanut käyttöön Kubernetes-klusterin CentOS 8:ssa.

Suositeltu luku: Nginxin käyttöönotto Kubernetes-klusterissa

Jotkut rajoitukset

Tässä luomassamme klusterissa on yksi pääsolmu, ja jos pääsolmu epäonnistuu, klusterisi saattaa menettää tietoja ja se on ehkä luotava uudelleen alusta.

Tästä syystä suosittelen Highly Available -asetusta.