Kubernetes-klusterin asentaminen CentOS 8: een


Kubernetes-klusterin asentaminen CentOS 8: een on melkein samanlainen kuin CentOS 7: n (jonka voit käydä läpi täällä), mutta tässä prosessissa on muutamia muutoksia. Nämä muutokset kiertävät lähinnä Dockerin asennuksen ympärillä.

CentOS 8: sta (ja laajennuksella RHEL 8) alkaen, docker on nyt luonnollisesti korvattu podmanilla ja buildahilla, jotka ovat Redhatin työkaluja. Itse asiassa telakointipaketti on nyt poistettu oletuspakettivarastosta.

Tällä liikkeellä Redhat-tiimi pyrkii yksinkertaistamaan konttien luomisen ja käytön prosessia tarvitsematta erityisiä käyttöoikeuksia ja samalla säilyttämään yhteensopivuuden telakointikuvien kanssa ja käyttämään niitä ilman demonia. Podman lupaa tarjota enemmän joustavuutta juostaessa Kubernetes-ympäristöissä, mutta tuomaristo pysyy siellä.

Tätä artikkelia varten käymme läpi Kubernetesin asennuksen CentOS 8 -alustalle, joka toimii Docker-CE: llä (Community Edition). Myöhemmässä artikkelissa käymme läpi myös samanlaisen asennuksen käyttämällä podmania kontteihimme.

  1. Kolme palvelinta, joissa on CentOS 8 - 1 pääsolmu ja 2 työntekijäsolmua.
  2. On suositeltavaa, että solmuissasi on vähintään 2 keskusyksikköä, joissa on vähintään 2 Gt RAM-muistia per kone. Tämä ei ole tiukka vaatimus, mutta se johtuu suurelta osin aiotun sovelluksen tarpeista.
  3. Internet-yhteys kaikissa solmuissasi. Haemme Kubernetes- ja docker-paketteja arkistosta. Samoin sinun on varmistettava, että DNF-paketinhallinta on asennettu oletuksena ja että se voi noutaa paketteja etänä.
  4. Kaikkien solmujen tulisi myös pystyä muodostamaan yhteys toisiinsa joko yksityisessä tai julkisessa verkossa, kumpi on käytettävissä.
  5. Tarvitset myös pääsyn tiliin, jolla on sudo- tai root-oikeudet. Tässä opetusohjelmassa käytän juuritiliäni.

Useimmilla solmuilla on yleensä ainutlaatuiset MAC-osoitteet, mutta joissakin ainutlaatuisissa tapauksissa joillakin virtuaalikoneilla voi olla identtiset MAC-osoitteet. Siksi on suositeltavaa vahvistaa, että Product_UUID ja MAC-osoite eivät ole samat missään solmuissa.

Kubernetes käyttää näitä arvoja yksilöimään klusterin solmut. Jos nämä arvot eivät ole kullekin solmulle yksilöllisiä, asennusprosessi voi epäonnistua.

Voit tarkistaa verkkoliitännän MAC-osoitteen ja verrata sitä.

# ip link

Tarkista product_uuid ja vertaa suorittamalla seuraava komento.

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

Asennuksemme on suunniteltu siten, että pääsolmu ohjaa työntekijäsolmuja. Tämän asennuksen lopussa looginen arkkitehtuurimme näyttää tältä.

Pääsolmu - Tämä kone toimii yleensä ohjaustasona ja suorittaa klusteritietokannan ja API-palvelimen (joiden kanssa kubectl CLI kommunikoi).

Kolmen solmun Kubernetes-klusteri näyttää tältä:

Kubernetes-klusterin asennus Master-Nodeen

Tarvitset konttikoneen, jotta Kubernetes toimisi. Kuten mainittiin, käytämme Docker-CE: tä.

Seuraavat laitokset suoritetaan CentOS 8 Master-Node -palvelussa.

Määritä CentOS 8 Master-Node -järjestelmässä järjestelmän isäntänimi ja päivitä DNS tiedostoon/etc/hosts.

# 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

Seuraavaksi pingaa työntekijä-solmu-1 ja työntekijä-solmu-2 tarkistaaksesi, toimiiko päivitetty isäntätiedosto oikein ping-komennolla.

# ping 192.168.0.48
# ping 192.168.0.49

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

# setenforce 0

Setenforcen asettaminen arvoon 0 asettaa SELinuxin tosiasiallisesti sallivaksi, mikä poistaa SELinuxin tehokkaasti käytöstä seuraavaan uudelleenkäynnistykseen asti. Poista se kokonaan käytöstä käyttämällä seuraavaa komentoa ja käynnistämällä 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ä palomuuri saa rajoittaa niitä.

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

Sinun on ensin lisättävä Docker-arkisto, koska se ei ole enää 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 containerd.io-paketti, joka on saatavana daemonina, joka hallinnoi isäntäjärjestelmänsä koko säilön elinkaarta kuvan siirrosta ja tallennuksesta säilön suorittamiseen ja valvontaan matalan tason tallennukseen verkkoliitteisiin ja muualle.

# 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 uusin versio docker-ce-paketista.

# dnf install docker-ce

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

# systemctl enable docker
# systemctl start docker

Seuraavaksi sinun on lisättävä Kubernetes-arkistot manuaalisesti, koska niitä ei ole asennettu oletuksena CentOS 8: een.

# 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 vähintään elinkelpoisen Kubernetes-klusterin, joka noudattaa parhaita käytäntöjä. Kun kubeadm, klusterisi tulisi läpäistä Kubernetes-yhteensopivuustestit.

Kubeadm tukee myös muita klusterin elinkaaritoimintoja, kuten päivityksiä, päivityksiä ja käynnistysvyöhykkeiden hallintaa. Kubeadm on myös integrointiystävällinen muiden orkestrointityökalujen, kuten Ansible ja Terraform, kanssa.

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

# dnf install kubeadm -y 

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

# systemctl enable kubelet
# systemctl start kubelet

Klusterin ohjaustasona toimiva Kubernetes-isäntä suorittaa muutamia klusterille tarvittavia kriittisiä palveluita. Sellaisena alustusprosessi tekee sarjan ennakkotarkastuksia varmistaakseen, että kone on valmis käyttämään Kubernetesia. Nämä ennakkotarkistukset paljastavat varoitukset ja virheistä poistumisen. Tämän jälkeen kubeadm init lataa ja asentaa klusterin ohjaustason komponentit.

Nyt on aika alustaa Kubernetes-isäntä, mutta ennen sitä sinun on poistettava vaihto käytöstä kubeadm init -komennon suorittamiseksi.

# swapoff -a

Kubernetes master -alustan 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 heittää virheitä välitetyissä argumenteissa, joten virheiden välttämiseksi sinun on poistettava merkki ’\’ ja lopullinen 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ö. Skenaariossa käytämme pääkäyttäjää. Voit myös käynnistää klusterin sudo-käyttäjällä kuvan osoittamalla tavalla.

Jos haluat käyttää rootia, suorita:

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

Voit käyttää sudo-yhteensopivaa käyttäjää suorittamalla:

$ 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, että pääsolmun tila on ”NotReady”. Tämä johtuu siitä, että emme ole vielä ottaneet pod-verkkoa käyttöön klusterissa.

Pod-verkko on klusterin päällekkäisverkko, joka on asennettu nykyisen solmuverkon päälle. Se on suunniteltu mahdollistamaan yhteydet koko podin välillä.

Verkkoklusterin käyttöönotto on erittäin joustava prosessi tarpeistasi riippuen, ja käytettävissä on monia vaihtoehtoja. Koska haluamme pitää asennuksen mahdollisimman yksinkertaisena, käytämme Weavenet-laajennusta, joka ei vaadi kokoonpanoa tai ylimääräistä koodia ja tarjoaa yhden IP-osoitteen podia kohti, mikä on meille upea. Jos haluat nähdä lisää vaihtoehtoja, tarkista tästä.

Nämä komennot ovat tärkeitä pod-verkon asetusten saamiseksi.

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

Jos nyt tarkistat isäntäsolmun tilan, sen pitäisi olla ”Valmiina”.

# kubectl get nodes

Seuraavaksi lisätään työntekijän solmut klusteriin.

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

Seuraavat ohjeet suoritetaan jokaiselle työntekijäsolmulle liittyessäsi Kubernetes-klusteriin.

Aseta ensin isäntänimi työntekijä-solmu-1: ssä ja työntekijä-solmu-2: ssä ja lisää sitten isäntämerkinnät tiedostoon/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

Seuraavaksi pingaa pääsolmu työntekijäsi solmuista varmistaaksesi, että päivitetty isäntätiedosto toimii hyvin ping-komennolla.

# 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

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

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

Lisää seuraavaksi containerd.io-paketti.

# 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 uusin Docker-ce-versio.

# dnf install docker-ce

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

# systemctl enable docker
# systemctl start docker

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

# 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

Kun pakettivaraus on nyt valmis, voit mennä eteenpäin ja asentaa kubeadmin.

# dnf install kubeadm -y 

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

# systemctl enable kubelet
# systemctl start kubelet

Vaadimme nyt kubeadm initin luoman tunnuksen liittymään klusteriin. Voit kopioida ja liittää sen solmuusi 1 ja solmu 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ä ehdotettiin, palaa takaisin pääsolmuusi ja tarkista, ovatko työntekijän solmu 1 ja työntekijän solmu 2 liittyneet klusteriin seuraavan komennon avulla.

# kubectl get nodes

Jos kaikki vaiheet suoritetaan onnistuneesti, sinun pitäisi nähdä solmu 1 ja solmu 2 valmiustilassa pääsolmussa. Tässä vaiheessa olet nyt asentanut Kubernetes-klusterin onnistuneesti CentOS 8: een.

Suositeltava luku: Nginxin asentaminen Kubernetes-klusteriin

Tässä luomallamme klusterilla on yksi pääsolmu, ja sellaisenaan, jos pääsolmu epäonnistuu, klusterisi saattaa menettää tietoja ja se on ehkä luotava uudestaan alusta alkaen.

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