Sådan installeres en Kubernetes-klynge på CentOS 7


Doneret af Google til Opensource-fællesskabet er Kubernetes nu blevet det valgte containerstyringsværktøj. Det kan styre og orkestrere ikke kun docker-driftstider, men også containere og Rkt-driftstider.

En typisk Kubernetes-klynge vil generelt have en masternode og flere arbejdere-noder eller minions. Arbejderknudepunkterne administreres derefter fra masternoden, hvilket sikrer, at klyngen styres fra et centralt punkt.

Det er også vigtigt at nævne, at du også kan installere en Kubernetes-klynge med en enkelt knude, som generelt anbefales til meget lette arbejdsbelastninger uden produktion. Til dette kan du bruge Minikube, som er et værktøj, der kører en enkelt-node Kubernetes-klynge i en virtuel maskine på din node.

Anbefalet læsning: Sådan installeres en Kubernetes-klynge på CentOS 8

Til denne vejledning gennemgår vi en Kubernetes-klyngeinstallation med flere knudepunkter på CentOS 7 Linux. Denne tutorial er kommandolinjebaseret, så du får brug for adgang til dit terminalvindue.

  1. Flere servere, der kører Centos 7 (1 Master Node, 2 Worker Nodes). Det anbefales, at din Master Node har mindst 2 CPU'er, selvom dette ikke er et strengt krav.
  2. Internetforbindelse på alle dine noder. Vi henter Kubernetes og docker-pakker fra lageret. Ligeledes skal du sørge for, at yum-pakkehåndteringen er installeret som standard og kan hente pakker eksternt.
  3. Du skal også have adgang til en konto med sudo- eller root-rettigheder. I denne vejledning bruger jeg min rodkonto.

Vores 3-node klynge vil se sådan ud:

Installation af Kubernetes Cluster på Master-Node

For at Kubernetes skal fungere, skal du bruge en containeriseringsmotor. Til denne installation bruger vi docker, da den er den mest populære.

Følgende trin køres på Master-Node.

På din masternode skal du indstille værtsnavnet, og hvis du ikke har en DNS-server, skal du også opdatere din/etc/hosts-fil.

# 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

Du kan pinge medarbejder-node-1 og arbejder-node-2 for at teste, om din opdaterede værtsfil er i orden ved hjælp af ping-kommando.

# ping 10.128.0.29
# ping 10.128.0.30

Deaktiver derefter SElinux og opdater dine firewallregler.

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

Indstil følgende firewallregler på porte. Sørg for, at hver firewall-cmd-kommando returnerer en succes.

# 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

Du bliver nødt til at tilføje Kubernetes-arkiver manuelt, da de ikke installeres som standard på 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

Med pakkeudgivelsen nu klar, kan du gå videre og installere kubeadm- og dockerpakker.

# yum install kubeadm docker -y 

Når installationen er gennemført, skal du aktivere og starte begge tjenester.

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

Nu er vi klar til at initialisere kubernetes master, men inden det skal du deaktivere swap for at køre kommandoen “kubeadm init”.

# swapoff -a

Initialisering af Kubernetes master er en fuldautomatisk proces, der styres af kommandoen “kubeadm init”, som du vil køre.

# kubeadm init

Det kan være en god idé at kopiere den sidste linje og gemme den et eller andet sted, fordi du bliver nødt til at køre den på arbejdernoderne.

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

Tip: Nogle gange klager denne kommando måske over de argumenter (args), der er bestået, så rediger den for at undgå eventuelle fejl. Så du sletter '\' -tegnet, der ledsager --token , og din endelige kommando vil se sådan ud.

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

Når du har initialiseret Kubernetes, skal du tillade din bruger at begynde at bruge klyngen. I vores tilfælde vil vi køre denne installation som rootbruger, derfor kører vi disse kommandoer som root. Du kan skifte til en sudo-aktiveret bruger, du foretrækker, og køre nedenstående ved hjælp af sudo.

For at bruge root skal du køre:

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

For at bruge en sudo-aktiveret bruger skal du køre:

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

Kontroller nu, om kommandoen kubectl er aktiveret.

# kubectl get nodes

På dette tidspunkt vil du også bemærke, at status for masternoden er 'NotReady'. Dette skyldes, at vi endnu ikke skal distribuere pod-netværket til klyngen.

Pod-netværket er overlay-netværket for klyngen, der distribueres oven på det nuværende nodenetværk. Det er designet til at muliggøre tilslutning på tværs af pod'en.

Implementering af netværksklyngen er en meget fleksibel proces afhængigt af dine behov, og der er mange muligheder tilgængelige. Da vi ønsker at holde vores installation så enkel som muligt, bruger vi Weavenet-plugin, som ikke kræver nogen konfiguration eller ekstra kode, og det giver en IP-adresse pr. Pod, hvilket er godt for os. Hvis du vil se flere muligheder, skal du tjekke her.

Disse kommandoer er vigtige for at få opsætningen af podnetværket.

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

Hvis du nu kontrollerer status for din masternode, skal den være 'Klar'.

# kubectl get nodes

Dernæst tilføjer vi arbejdsknudepunkter til klyngen.

Opsætning af arbejdsknudepunkter til at slutte sig til Kubernetes-klyngen

De følgende trin køres på arbejderknudepunkterne. Disse trin skal køres på hver arbejdsknudepunkt, når de tilmelder sig Kubernetes-klyngen.

På din arbejdsknude-1 og arbejdsknudepunkt-2 skal du indstille værtsnavnet, og i tilfælde af at du ikke har en DNS-server, skal du også opdatere din hoved- og arbejderknudepunkt på/etc/hosts-filen.

# 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

Du kan pinge masternoden for at teste, om din opdaterede værtsfil er i orden.

Deaktiver derefter SElinux og opdater dine firewallregler.

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

Indstil følgende firewallregler på porte. Sørg for, at alle firewall-cmd-kommandoer returnerer succes.

# 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

Du bliver nødt til at tilføje Kubernetes-arkiver manuelt, da de ikke kommer forudinstalleret på 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

Med pakkeudgivelsen nu klar, kan du gå videre og installere kubeadm- og dockerpakker.

# yum install kubeadm docker -y 

Start og aktiver begge tjenester.

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

Vi kræver nu det token, som kubeadm init genererede, for at deltage i klyngen. Du kan kopiere og indsætte det til din node-1 og node-2, hvis du havde kopieret det et eller andet sted.

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

Som foreslået på den sidste linje, skal du gå tilbage til din masternode og kontrollere, om medarbejdernode-1 og medarbejdernode-2 har tilsluttet sig klyngen ved hjælp af følgende kommando.

# kubectl get nodes

Hvis alle trin køres med succes, skal du se node-1 og node-2 i klar status på masternoden.

Anbefalet læsning: Sådan implementeres Nginx på en Kubernetes-klynge

På dette tidspunkt har vi med succes afsluttet en installation af en Kubernetes-klynge på Centos 7, og vi har med succes indbygget to arbejdsknudepunkter. Du kan nu begynde at oprette dine bælg og implementere dine tjenester.