Zoeken op website

Hoe u een Kubernetes-cluster installeert op CentOS 7


Gedoneerd door Google aan de Opensource-gemeenschap, is Kubernetes nu de voorkeurstool voor containerbeheer geworden. Het kan niet alleen docker-runtimes beheren en orkestreren, maar ook Containers- en Rkt-runtimes.

Een typisch Kubernetes-cluster heeft over het algemeen een hoofdknooppunt en verschillende werkknooppunten of Minions. De worker-nodes worden vervolgens beheerd vanuit het master-node, waardoor het cluster vanuit een centraal punt wordt beheerd.

Het is ook belangrijk om te vermelden dat u ook een Kubernetes-cluster met één knooppunt kunt implementeren, wat over het algemeen wordt aanbevolen voor zeer lichte, niet-productiewerklasten. Hiervoor kunt u Minikube gebruiken, een tool die een Kubernetes-cluster met één knooppunt in een virtuele machine op uw knooppunt uitvoert.

Aanbevolen informatie: een Kubernetes-cluster installeren op CentOS 8

Voor deze zelfstudie doorlopen we een Kubernetes-clusterinstallatie met meerdere knooppunten op CentOS 7 Linux. Deze tutorial is gebaseerd op de opdrachtregel, dus je hebt toegang nodig tot je terminalvenster.

Vereisten

  1. Meerdere servers met Centos 7 (1 Master Node, 2 Worker Nodes). Het wordt aanbevolen dat uw Master Node minimaal 2 CPU's heeft, hoewel dit geen strikte vereiste is.
  2. Internetverbinding op al uw knooppunten. We halen Kubernetes- en docker-pakketten op uit de repository. Op dezelfde manier moet je ervoor zorgen dat de yum pakketbeheerder standaard geïnstalleerd is en pakketten op afstand kan ophalen.
  3. Je hebt ook toegang nodig tot een account met sudo- of root-rechten. In deze tutorial gebruik ik mijn root-account.

Ons cluster met 3 knooppunten ziet er ongeveer zo uit:

Installatie van Kubernetes Cluster op Master-Node

Om Kubernetes te laten werken, heb je een containerisatie-engine nodig. Voor deze installatie gebruiken we docker omdat dit het populairst is.

De volgende stappen worden uitgevoerd op de Master-Node.

Stap 1: Bereid de hostnaam, firewall en SELinux voor

Stel op uw masternode de hostnaam in en als u geen DNS-server heeft, update dan ook uw /etc/hosts-bestand.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

U kunt worker-node-1 en worker-node-2 pingen om te testen of uw bijgewerkte hostbestand in orde is met behulp van de ping-opdracht.

ping 10.128.0.29
ping 10.128.0.30

Schakel vervolgens SElinux uit en update uw firewallregels.

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

Stel de volgende firewallregels in voor poorten. Zorg ervoor dat elke firewall-cmd-opdracht een succes retourneert.

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

Stap 2: Stel de Kubernetes Repo in

U moet Kubernetes-opslagplaatsen handmatig toevoegen, aangezien deze niet standaard worden geïnstalleerd op CentOS 7.

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

Stap 3: Installeer Kubeadm en Docker

Nu de pakketopslagplaats gereed is, kunt u doorgaan en de pakketten kubeadm en docker installeren.

yum install kubeadm docker -y 

Wanneer de installatie succesvol is voltooid, schakelt u beide services in en start u deze.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

Stap 4: Initialiseer Kubernetes Master en stel de standaardgebruiker in

Nu zijn we klaar om kubernetes master te initialiseren, maar daarvoor moet je swap uitschakelen om de opdracht “kubeadm init“ uit te voeren.

swapoff -a

Het initialiseren van Kubernetes master is een volledig geautomatiseerd proces dat wordt beheerd door de opdracht “kubeadm init“ die u uitvoert.

kubeadm init

Mogelijk wilt u de laatste regel kopiëren en ergens opslaan, omdat u deze op de worker-nodes moet uitvoeren.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Tip: Soms klaagt dit commando over de argumenten (args) die zijn doorgegeven, dus bewerk het om eventuele fouten. U verwijdert dus het teken ‘\’ dat bij het --token hoort en uw laatste commando ziet er als volgt uit.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Nadat u Kubernetes succesvol heeft geïnitialiseerd, moet u uw gebruiker toestaan het cluster te gaan gebruiken. In ons geval willen we deze installatie uitvoeren als root-gebruiker, daarom zullen we doorgaan en deze opdrachten uitvoeren als root. U kunt overschakelen naar een door sudo ingeschakelde gebruiker van uw voorkeur en het onderstaande uitvoeren met sudo.

Om root te gebruiken, voer je het volgende uit:

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

Om een sudo-compatibele gebruiker te gebruiken, voert u het volgende uit:

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

Controleer nu of de opdracht kubectl is geactiveerd.

kubectl get nodes

Op dit punt zul je ook merken dat de status van de master-nodeNotReady’ is. 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 knooppuntnetwerk wordt geïmplementeerd. Het is ontworpen om connectiviteit via de pod mogelijk te maken.

Stap 5: Stel uw Pod-netwerk in

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 de Weavenet plug-in die geen configuratie of extra code vereist en die één IP-adres per pod biedt, wat geweldig voor ons is. Als je meer opties wilt zien, kijk dan hier.

Deze opdrachten zijn belangrijk om de pod-netwerkconfiguratie te krijgen.

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

Als u nu de status van uw master-node controleert, zou deze ‘Ready’ moeten zijn.

kubectl get nodes

Vervolgens voegen we de worker-nodes toe aan het cluster.

Worker-knooppunten instellen om lid te worden van het Kubernetes-cluster

De volgende stappen worden uitgevoerd op de werkknooppunten. Deze stappen moeten worden uitgevoerd op elk workerknooppunt wanneer u lid wordt van het Kubernetes-cluster.

Stap 1: Bereid de hostnaam, firewall en SELinux voor

Stel op uw worker-node-1 en worker-node-2 de hostnaam in en als u geen DNS-server heeft, update dan ook uw master en worker knooppunten in het bestand /etc/hosts.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

U kunt master-node pingen om te testen of uw bijgewerkte hostbestand in orde is.

Schakel vervolgens SElinux uit en update uw firewallregels.

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

Stel de volgende firewallregels in voor poorten. Zorg ervoor dat alle firewall-cmd-opdrachten succes opleveren.

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

Stap 2: Stel de Kubernetes Repo in

U moet Kubernetes-opslagplaatsen handmatig toevoegen, aangezien deze niet vooraf zijn geïnstalleerd op CentOS 7.

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

Stap 3: Installeer Kubeadm en Docker

Nu de pakketopslagplaats gereed is, kunt u doorgaan en de pakketten kubeadm en docker installeren.

yum install kubeadm docker -y 

Start en schakel beide services in.

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

Stap 4: Sluit het Worker-knooppunt aan bij het Kubernetes-cluster

We hebben nu het token nodig dat kubeadm init heeft gegenereerd om lid te worden van het cluster. Je kunt het kopiëren en plakken naar je node-1 en node-2 als je het ergens had gekopieerd.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Zoals voorgesteld op de laatste regel, ga terug naar je master-node en controleer of worker node-1 en worker node-2 zich bij de cluster met behulp van de volgende opdracht.

kubectl get nodes

Als alle stappen succesvol zijn uitgevoerd, zou je node-1 en node-2 in de status Gereed moeten zien op de master-node.

Aanbevolen literatuur: Nginx implementeren op een Kubernetes-cluster

Op dit moment hebben we met succes een installatie van een Kubernetes cluster op Centos 7 voltooid en hebben we met succes twee worker-nodes on-board. U kunt nu beginnen met het maken van uw pods en het implementeren van uw services.