een Kubernetes Docker Cluster installeren op CentOS 7

Kubernetes is een open source platform voor het beheer van gecontaineriseerde toepassingen, ontwikkeld door Google. Het stelt je in staat je gecontaineriseerde toepassingen te beheren, te schalen en automatisch uit te zetten in de geclusterde omgeving. Met Kubernetes kunnen we onze containers over meerdere hosts orkestreren, de gecontaineriseerde toepassingen met alle middelen on the fly schalen, en een gecentraliseerde omgeving voor containerbeheer hebben.

In deze zelfstudie laat ik je stap-voor-stap zien hoe je Kubernetes op CentOS 7 installeert en configureert. We zullen 1 server ‘k8s-master’ gebruiken als Kubernetes Host Master, en 2 servers als Kubernetes node, ‘node01’ en ‘node02’.

Vereisten

  • 3 CentOS 7 Servers
    • 10.0.15.10 k8s-master
    • 10.0.15.21 node01
    • 10.0.15.22 node02
  • Root privileges

Wat zullen we doen?

  1. Kubernetes installatie
  2. Kubernetes Cluster Initialisatie
  3. Toevoegen van node01 en node02 aan de Cluster
  4. Testen – Eerste Pod aanmaken

Stap 1 – Kubernetes installatie

In deze eerste stap maken we die 3 servers klaar voor Kubernetes installatie, dus voer alle commando’s uit op de master en node servers.

We zullen alle servers voorbereiden op de installatie van Kubernetes door de bestaande configuratie op de servers te veranderen, en ook enkele pakketten te installeren, waaronder docker-ce en kubernetes zelf.

– Configureer hosts

Bewerk het hosts bestand op alle servers met devim editor.

vim /etc/hosts

Plak de lijst met hosts hieronder.

10.0.15.10      k8s-master
10.0.15.21      node01
10.0.15.22      node02

Bewaar en sluit af.

– Schakel SELinux uit

In deze zelfstudie gaan we niet in op SELinux configuratie voor Docker, dus schakelen we het uit.

Voer het onderstaande commando uit om SELinux uit te schakelen.

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

– Schakel br_netfilter Kernel Module in

De br_netfilter module is nodig voor kubernetes installatie. Schakel deze kernel module in zodat de pakketten die de brug passeren door iptables verwerkt worden voor filtering en voor port forwarding, en de kubernetes pods over het hele cluster met elkaar kunnen communiceren.

Voer het onderstaande commando uit om de br_netfilter kernel module in te schakelen.

modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

– Schakel SWAP uit

Schakel SWAP voor kubernetes installatie uit door de volgende commando’s uit te voeren.

swapoff -a

Wissel uitzetten

En bewerk dan het ‘/etc/fstab’ bestand.

vim /etc/fstab

Commentarieer de swap regel UUID als hieronder.

Edit /etc/fstab

– Installeer Docker CE

Installeer de nieuwste versie van Docker-ce uit de docker repository.

Installeer de pakketafhankelijkheden voor docker-ce.

yum install -y yum-utils device-mapper-persistent-data lvm2

Voeg de docker repository toe aan het systeem en installeer docker-ce met het yum commando.

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce

Wacht op de installatie van docker-ce.

Installeer Docker

– Installeer kubernetes

Voeg de kubernetes repository toe aan het centos 7 systeem door het volgende commando uit te voeren.

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

Installeer nu de kubernetes pakketten kubeadm, kubelet, en kubectl met het onderstaande yum commando.

yum install -y kubelet kubeadm kubectl

Installeer Kubernetes

Nadat de installatie voltooid is, start je al die servers opnieuw op.

sudo reboot

Log weer in op de server en start de diensten, docker en kubelet.

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

– Verander de cgroup-driver

We moeten ervoor zorgen dat de docker-ce en kubernetes dezelfde ‘cgroup’ gebruiken.

Controleer docker cgroup met het docker info commando.

docker info | grep -i cgroup

En je ziet dat de docker‘cgroupfs‘ gebruikt als cgroup-driver.

Voer nu het onderstaande commando uit om de kuberetes cgroup-driver te veranderen in ‘cgroupfs’.

sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

Herlaad het systemd systeem en herstart de kubelet dienst.

systemctl daemon-reload
systemctl restart kubelet

Nu zijn we klaar om de Kubernetes Cluster te configureren.

Configureer Kubernetes Cluster

Stap 2 – Kubernetes Cluster Initialisatie

In deze stap initialiseren we de kubernetes master cluster configuratie.

Verplaats de shell naar de master server ‘k8s-master’ en voer het onderstaande commando uit om de kubernetes master in te stellen.

kubeadm init --apiserver-advertise-address=10.0.15.10 --pod-network-cidr=10.244.0.0/16

Kubernetes Cluster Initialisatie

Opmerking:

–apiserver-advertise-address = bepaalt op welk IP adres Kubernetes zijn API server moet adverteren.

–pod-network-cidr = specificeer het bereik van IP adressen voor het pod netwerk. We gebruiken het ‘flannel’ virtuele netwerk. Als je een ander pod netwerk wilt gebruiken zoals weave-net of calico, verander dan de reeks IP adressen.

Als de Kubernetes initialisatie voltooid is, krijg je het resultaat zoals hieronder.

Kubernetes initialisatie is voltooid

Opmerking:

Kopieer het‘kubeadm join … ... ‘ commando naar je teksteditor. Het commando zal gebruikt worden om nieuwe knooppunten aan te melden bij het kubernetes cluster.

Om nu Kubernetes te gebruiken moeten we enkele commando’s uitvoeren zoals op het resultaat.

Maak een nieuwe ‘.kube’ configuratie directory en kopieer de configuratie ‘admin.conf’.

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

Zet vervolgens het flannel netwerk uit naar het kubernetes cluster met het kubectl commando.

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Kubernetes Doe mee

Het flannel netwerk is uitgezet naar het Kubernetes cluster.

Wacht een minuut en controleer dan kubernetes node en pods met onderstaande commando’s.

kubectl get nodes
kubectl get pods --all-namespaces

En je krijgt de ‘k8s-master’ node draait als een ‘master’ cluster met status ‘ready’, en je krijgt alle pods die nodig zijn voor het cluster, inclusief de ‘kube-flannel-ds’ voor netwerk pod configuratie.

Zorg ervoor dat de status van alle kube-system pods op ‘running’ staat.

Controleer Kubernetes knooppunt

Kubernetes clustermaster initialisatie en configuratie is voltooid.

Stap 3 – Voeg node01 en node02 toe aan de Cluster

In deze stap voegen we node01 en node02 toe om lid te worden van de ‘k8s’ cluster.

Verbind met de node01 server en voer het kubeadm join commando uit zoals we bovenaan gekopieerd hebben.

kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e

Node01 en node02 aan het Cluster toevoegen

Verbind met de node02 server en voer het kubeadm join commando uit zoals we boven hebben gekopieerd.

kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c61e

Verbind Docker knooppunten

Wacht enkele minuten en terug naar de ‘k8s-master’ master clusterserver controleer de nodes en pods met het volgende commando.

kubectl get nodes
kubectl get pods --all-namespaces

Nu krijg je dat node01 en node02 aan het cluster zijn toegevoegd met status ‘ready’.

kubctl commando

node01 en node02 zijn toegevoegd aan het kubernetes cluster.

Stap 4 – Testen van het aanmaken van de eerste Pod

In deze stap doen we een test door de Nginx pod aan het kubernetes cluster te ontplooien. Een pod is een groep van een of meer containers met gedeelde opslag en netwerk die onder Kubernetes draait. Een Pod bevat een of meer containers, zoals Docker container.

Log in op de ‘k8s-master’ server en maak een nieuwe inzet met de naam ‘nginx’ met het kubectl commando.

kubectl create deployment nginx --image=nginx

Om details van de ‘nginx’ deployment sepcificatie te zien, voer je het volgende commando uit.

kubectl describe deployment nginx

En je krijgt de nginx pod inzet specificatie.

Vervolgens zullen we de nginx pod toegankelijk maken via het internet. En we moeten hiervoor een nieuwe dienst NodePort aanmaken.

Voer het onderstaande kubectl commando uit.

kubectl create service nodeport nginx --tcp=80:80

Maak de eerste peul

Zorg ervoor dat er geen fout optreedt. Controleer nu de nginx service nodeport en IP met het onderstaande kubectl commando.

kubectl get pods
kubectl get svc

Verkrijg lijst van pods

Nu krijg je dat de nginx pod nu draait onder cluster IP adres ‘10.160.60.38’ poort 80, en het node hoofd IP adres ‘10.0.15.x’ op poort ‘30691’.

Voer vanaf de ‘k8s-master’ server het onderstaande curl commando uit.

curl node01:30691

Test met krul

curl node02:30691

Test knooppunt 2 met curl

De Nginx Pod is nu ontplooid onder het Kubernetes cluster en hij is toegankelijk via het internet.

Open nu vanuit de webbrowser.

http://10.0.15.10:30691/

En je krijgt de Nginx standaard pagina.

Pagina op knooppunt 1

Op de server node02 -. http://10.0.15.11:30691/

Pagina op knooppunt 2

De Kubernetes cluster installatie en configuratie op CentOS 7 is met succes voltooid.

Referentie