Het proces van het installeren van een Kubernetes-cluster Aan CentOS 8 is bijna gelijk aan die van CentOS 7 (waar je doorheen kunt gaan) hier), maar het proces hier heeft een paar wijzigingen. Deze veranderingen, meestal draaien rond de installatie van Docker.
Beginnend vanaf CentOS 8 (en bij uitbreiding RHEL 8), havenarbeider is nu standaard vervangen door podman en buildah wat zijn tools van? Rode Hoed. In feite is het docker-pakket nu verwijderd uit de standaard pakketrepository.
Met deze beweging is de Rode Hoed team streeft naar het vereenvoudigen van het proces van het maken en gebruiken van containers, zonder speciale machtigingen, terwijl tegelijkertijd de compatibiliteit met docker-images behouden blijft en ze worden bediend zonder dat er een demon. Podman belooft meer flexibiliteit te bieden bij het hardlopen Kubernetes omgevingen, maar de jury blijft daarbuiten.
Voor dit artikel zullen we het installatieproces doorlopen Kubernetes op een CentOS 8 platform, draaiend op Docker-CE (
Community-editie). In een later artikel zullen we ook een soortgelijke installatie doornemen, met behulp van podman voor onze containers.De meeste knooppunten worden over het algemeen geleverd met unique MAC adressen, maar in sommige unieke gevallen, sommige Virtuele machines kunnen identieke MAC-adressen hebben. Het wordt daarom aanbevolen om te bevestigen dat de Product_UUID en de MAC adres zijn niet identiek in een van de knooppunten.
Kubernetes gebruikt deze waarden om de knoop punten in het cluster op unieke wijze te identificeren. Als deze waarden niet uniek zijn voor elk knooppunt, kan het installatieproces mislukken.
Om het MAC-adres van de netwerkinterface te controleren en te vergelijken.
#ip-link.
Om de. te controleren product_uuid en vergelijk, voer de volgende opdracht uit.
# cat /sys/class/dmi/id/product_uuid
Onze installatie is ontworpen om de Hoofdknooppunt de controle over Werkknooppunten. Aan het einde van deze installatie ziet onze logische architectuur er ongeveer zo uit.
Hoofdknooppunt – Deze machine fungeert over het algemeen als het besturingsvlak en voert de clusterdatabase en de API-server uit (waarmee de kubectl CLI communiceert).
Onze 3-knooppunten Kubernetes-cluster zal er ongeveer zo uitzien:
Voor Kubernetes om te werken, heb je een containerisatiemotor nodig. Zoals vermeld, zullen we gebruiken Docker-CE.
De volgende instellingen worden uitgevoerd op: CentOS 8 Master-Node.
Op je CentOS 8 Master-Node, stel de systeemhostnaam in en update DNS in uw /etc/hosts het dossier.
# hostnamectl set-hostname master-node. # kat <> /etc/hosts. 192.168.0.47 hoofdknooppunt. 192.168.0.48 node-1 worker-node-1. 192.168.0.49 node-2 worker-node-2. EOF.
Ping vervolgens uw worker-node-1 en worker-node-2 om te controleren of uw bijgewerkte hostbestand correct werkt met behulp van de ping commando.
# 192.168.0.48 pingen. # 192.168.0.49 pingen.
Schakel vervolgens uit Selinux, omdat dit nodig is om containers toegang te geven tot het hostbestandssysteem, wat nodig is voor pod-netwerken en andere services.
# setenforce 0.
Instelling setenforce tot 0
zet SELinux effectief op permissief, wat SELinux effectief uitschakelt tot de volgende herstart. Om het volledig uit te schakelen, gebruikt u de onderstaande opdracht en start u opnieuw op.
# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux. # opnieuw opstarten.
Kubernetes maakt gebruik van verschillende poorten voor communicatie en toegang en deze poorten moeten toegankelijk zijn voor Kubernetes en niet beperkt worden door de firewall.
Configureer de firewallregels op de poorten.
# 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.
U moet de. toevoegen Docker repository eerst omdat het niet langer in de standaard pakketlijst staat met behulp van het volgende: dnf config-manager opdracht.
# dnf config-manager --add-repo= https://download.docker.com/linux/centos/docker-ce.repo.
Ook installeren containerd.io pakket dat beschikbaar is als een daemon die de volledige containerlevenscyclus van zijn hostsysteem beheert, vanaf beeldoverdracht en opslag tot uitvoering van containers en supervisie tot opslag op laag niveau naar netwerkbijlagen en voorbij.
# dnf installeren https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
Installeer nu de nieuwste versie van a docker-ce pakket.
# dnf installeer docker-ce.
U kunt nu de docker-service inschakelen en starten.
# systemctl docker inschakelen. # systemctl start docker.
Vervolgens moet u toevoegen Kubernetes repositories handmatig omdat ze niet standaard geïnstalleerd zijn op CentOS 8.
# kat </etc/yum.repos.d/kubernetes.repo. [kubernetes] name=Kubernetes. baseurl= https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64. ingeschakeld=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 helpt u bij het opstarten van een minimaal levensvatbaar Kubernetes-cluster dat voldoet aan best practices. Met kubeadm, moet uw cluster de Kubernetes-conformiteitstests doorstaan.
Kubeadm ondersteunt ook andere clusterlevenscyclusfuncties, zoals upgrades, downgrades en het beheren van bootstrap-tokens. Kubeadm is ook integratievriendelijk met andere orkestratietools zoals Ansible en Terraform.
Nu de pakketrepo klaar is, kunt u doorgaan en installeren kubeadm pakket.
# dnf installeer kubeadm -y
Wanneer de installatie met succes is voltooid, schakelt u de service in en start u deze.
# systemctl schakel kubelet in. # systemctl start kubelet.
De Kubernetes-meester die fungeert als de controle vliegtuig voor het cluster worden enkele kritieke services uitgevoerd die nodig zijn voor het cluster. Als zodanig voert het initialisatieproces een reeks pre-checks uit om ervoor te zorgen dat de machine klaar is om Kubernetes uit te voeren. Deze prechecks geven waarschuwingen weer en sluiten af bij fouten. kubeadm init downloadt en installeert vervolgens de componenten van het clusterbesturingsvlak.
Nu is het tijd om Kubernetes-master te initialiseren, maar daarvoor moet u swap uitschakelen om te kunnen uitvoeren "kubeadm init" opdracht.
# swap-off -a.
Initialiseren Kubernetes master is een volledig geautomatiseerd proces dat wordt aangestuurd door de “kubeadm init" commando zoals getoond.
#kubeadm init.
Kopieer vervolgens de volgende opdracht en sla deze ergens op, omdat we deze opdracht later op de werkknooppunten moesten uitvoeren.
kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 \ --discovery-token-ca-cert-hash ha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314783478h
Tip: Soms kan de bovenstaande opdracht fouten veroorzaken over de doorgegeven argumenten, dus om fouten te voorkomen, moet u de. verwijderen ‘\’
karakter en je uiteindelijke commando ziet er als volgt uit.
# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 –discovery token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314783478h.
Eenmaal Kubernetes is geïnitialiseerd, moet u uw gebruiker inschakelen om het cluster te gaan gebruiken. In ons scenario gebruiken we de rootgebruiker. U kunt het cluster ook starten met sudo-gebruiker, zoals weergegeven.
Gebruiken wortel, loop:
# mkdir -p $HOME/.kube. # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config. # chown $(id -u):$(id -g) $HOME/.kube/config.
om een te gebruiken sudo ingeschakelde gebruiker, loop:
$ mkdir -p $HOME/.kube. $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config. $ sudo chown $(id -u):$(id -g) $HOME/.kube/config.
Bevestig nu dat de kubectl-opdracht is geactiveerd.
# kubectl krijgt knooppunten.
Op dit moment ziet u dat de status van de master-node is 'Niet klaar’. Dit komt omdat we het pod-netwerk nog moeten implementeren in het cluster.
Het pod-netwerk is het overlay-netwerk voor het cluster, dat bovenop het huidige node-netwerk wordt geïmplementeerd. Het is ontworpen om connectiviteit over de pod mogelijk te maken.
Het implementeren van het netwerkcluster is een zeer flexibel proces, afhankelijk van uw behoeften en er zijn veel opties beschikbaar. Omdat we onze installatie zo eenvoudig mogelijk willen houden, gebruiken we Weavenet plug-in die geen configuratie of extra code vereist en die één IP-adres per pod biedt, wat geweldig is voor ons. Als je meer opties wilt zien, kijk dan op hier.
Deze opdrachten zijn belangrijk om de pod-netwerkconfiguratie te krijgen.
# export kubever=$(kubectl-versie | base64 | tr -d '\n') # kubectl toepassen -f " https://cloud.weave.works/k8s/net? k8s-version=$kubever"
Als u nu de status van uw master-node controleert, moet deze 'Klaar’.
# kubectl krijgt knooppunten.
Vervolgens voegen we de werkknooppunten naar het cluster.
De volgende instructies worden op elk uitgevoerd: werkknooppunt wanneer u lid wordt van het Kubernetes-cluster.
Stel eerst de hostnaam in op uw worker-node-1 en worker-node-2en voeg vervolgens de hostvermeldingen toe aan de /etc/hosts het dossier.
# hostnamectl set-hostname 'node-1' # kat <> /etc/hosts. 192.168.0.47 hoofdknooppunt. 192.168.0.48 node-1 worker-node-1. 192.168.0.49 node-2 worker-node-2. EOF.
Ping vervolgens uw hoofdknooppunt van jouw werkknooppunten om te bevestigen dat uw bijgewerkte hostbestand goed werkt met behulp van de ping commando.
# 192.168.0.47.
Schakel vervolgens uit SElinux en werk uw firewallregels bij.
# 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.
Voeg eerst de Docker-repository toe met behulp van DNF config-manager.
# dnf config-manager --add-repo= https://download.docker.com/linux/centos/docker-ce.repo.
Voeg vervolgens de. toe containerd.io pakket.
# dnf installeren https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
Met deze twee pakketten geïnstalleerd, installeert u de nieuwste versie van docker-ce.
# dnf installeer docker-ce.
Schakel de docker-service in en start deze.
# systemctl docker inschakelen. # systemctl start docker.
U moet toevoegen Kubernetes repositories handmatig omdat ze niet vooraf zijn geïnstalleerd CentOS 8.
# kat </etc/yum.repos.d/kubernetes.repo. [kubernetes] name=Kubernetes. baseurl= https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64. ingeschakeld=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.
Nu de pakketrepo klaar is, kunt u doorgaan en installeren kubeadm.
# dnf installeer kubeadm -y
Start en schakel de service in.
# systemctl schakel kubelet in. # systemctl start kubelet.
We hebben nu het token nodig dat kubeadm init gegenereerd, om zich bij het cluster aan te sluiten. U kunt het kopiëren en plakken naar uw knoop-1 en knoop-2 als je het ergens had gekopieerd.
# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc823147834.
Zoals gesuggereerd op de laatste regel, ga terug naar je hoofdknooppunt en controleer of werknemer knoop-1 en werknemer knooppunt-2 zijn lid geworden van het cluster met behulp van de volgende opdracht.
# kubectl krijgt knooppunten.
Als alle stappen met succes zijn uitgevoerd, zou u moeten zien: knoop-1 en knoop-2 in gereedstatus op de hoofdknooppunt. Op dit moment hebt u nu een Kubernetes-cluster geïmplementeerd op CentOS 8.
Aanbevolen lezen: Nginx implementeren op een Kubernetes-cluster
Het cluster dat we hier hebben gemaakt, heeft een enkele Hoofdknooppunt, en als zodanig, als de Hoofdknooppunt mislukt, kan uw cluster gegevens verliezen en moet deze mogelijk helemaal opnieuw worden gemaakt.
Om deze reden raad ik een zeer beschikbare setup aan.