Slik installerer du en Kubernetes-klynge på CentOS 7


Donert av Google til Opensource-fellesskapet, har Kubernetes nå blitt det foretrukne beholderadministrasjonsverktøyet. Den kan administrere og orkestrere ikke bare docker-løpetider, men også containere og Rkt-kjøringer.

En typisk Kubernetes-klynge vil generelt ha en hovednode og flere arbeidernoder eller Minions. Arbeidsnodene administreres deretter fra hovednoden, og sikrer dermed at klyngen administreres fra et sentralt punkt.

Det er også viktig å nevne at du også kan distribuere en enkelt-node Kubernetes-klynge som generelt anbefales for svært lette, ikke-produksjonsmessige arbeidsbelastninger. Til dette kan du bruke Minikube, som er et verktøy som kjører en enkelt-node Kubernetes-klynge i en virtuell maskin på noden din.

Anbefalt lesing: Slik installerer du en Kubernetes-klynge på CentOS 8

For denne opplæringen vil vi gå gjennom en Kubernetes-klyngeinstallasjon med flere noder på CentOS 7 Linux. Denne opplæringen er kommandolinjebasert, så du trenger tilgang til terminalvinduet.

  1. Flere servere som kjører Centos 7 (1 hovednode, 2 arbeidernoder). Det anbefales at Master Node har minst 2 CPUer, selv om dette ikke er et strengt krav.
  2. Internett-tilkobling på alle nodene dine. Vi vil hente Kubernetes og docker-pakker fra depotet. På samme måte må du sørge for at yum-pakkebehandlingen er installert som standard og kan hente pakker eksternt.
  3. Du trenger også tilgang til en konto med sudo- eller root-rettigheter. I denne opplæringen skal jeg bruke root-kontoen min.

Vår 3-node-klynge vil se omtrent slik ut:

Installasjon av Kubernetes Cluster på Master-Node

For at Kubernetes skal fungere, trenger du en containeriseringsmotor. For denne installasjonen vil vi bruke docker da det er det mest populære.

Følgende trinn vil kjøre på Master-Node.

Angi vertsnavnet på hovednoden din, og hvis du ikke har en DNS-server, oppdater også filen /etc/hosts.

# 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 worker-node-1 og worker-node-2 for å teste om den oppdaterte vertsfilen er i orden ved å bruke ping-kommandoen.

# ping 10.128.0.29
# ping 10.128.0.30

Deretter deaktiverer du SElinux og oppdaterer brannmurreglene.

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

Angi følgende brannmurregler på porter. Sørg for at hver brannmur-cmd-kommando gir en suksess.

# 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 må legge til Kubernetes-depoter manuelt, siden de ikke er installert 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 pakkerepoen nå klar, kan du gå videre og installere kubeadm og docker-pakker.

# yum install kubeadm docker -y 

Når installasjonen er fullført, aktiver og start begge tjenestene.

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

Nå er vi klare til å initialisere kubernetes master, men før det må du deaktivere swap for å kjøre kommandoen \kubeadm init\.

# swapoff -a

Initialisering av Kubernetes master er en helautomatisert prosess som administreres av kommandoen \kubeadm init\ som du vil kjøre.

# kubeadm init

Du vil kanskje kopiere den siste linjen og lagre den et sted fordi du må kjøre den på arbeidernodene.

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

Tips: Noen ganger kan denne kommandoen klage på argumentene (args) som er sendt, så rediger den for å unngå feil. Så du vil slette ‘\’-tegnet som følger med --token og den siste kommandoen vil se slik ut.

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

Etter å ha initialisert Kubernetes vellykket, må du la brukeren din begynne å bruke klyngen. I vårt tilfelle ønsker vi å kjøre denne installasjonen som root-bruker, derfor vil vi gå videre og kjøre disse kommandoene som root. Du kan bytte til en sudo-aktivert bruker du foretrekker og kjøre nedenstående ved å bruke sudo.

For å bruke root, kjør:

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

For å bruke en sudo-aktivert bruker, kjør:

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

Sjekk nå om kubectl-kommandoen er aktivert.

# kubectl get nodes

På dette tidspunktet vil du også legge merke til at statusen til masternoden er Ikke klar. Dette er fordi vi ennå ikke skal distribuere pod-nettverket til klyngen.

Pod-nettverket er overleggsnettverket for klyngen, som er distribuert på toppen av det nåværende nodenettverket. Den er designet for å tillate tilkobling på tvers av poden.

Å distribuere nettverksklyngen er en svært fleksibel prosess avhengig av dine behov, og det er mange alternativer tilgjengelig. Siden vi ønsker å holde installasjonen vår så enkel som mulig, vil vi bruke Weavenet-plugin som ikke krever noen konfigurasjon eller ekstra kode og den gir én IP-adresse per pod som er flott for oss. Hvis du vil se flere alternativer, vennligst sjekk her.

Disse kommandoene vil være viktige for å få satt opp pod-nettverket.

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

Hvis du nå sjekker statusen til masternoden din, bør den være Klar.

# kubectl get nodes

Deretter legger vi til arbeidernodene til klyngen.

Sette opp arbeidernoder for å bli med i Kubernetes Cluster

Følgende trinn kjøres på arbeidernodene. Disse trinnene bør kjøres på hver arbeidsnode når du blir med i Kubernetes-klyngen.

På worker-node-1 og worker-node-2, angi vertsnavnet og i tilfelle du ikke har en DNS-server, oppdater også master- og worker-nodene 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 master-node for å teste om den oppdaterte vertsfilen er i orden.

Deretter deaktiverer du SElinux og oppdaterer brannmurreglene.

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

Angi følgende brannmurregler på porter. Sørg for at alle brannmur-cmd-kommandoer gir suksess.

# 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 må legge til Kubernetes-depoter manuelt, siden de ikke er forhåndsinstallert 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 pakkerepoen nå klar, kan du gå videre og installere kubeadm og docker-pakker.

# yum install kubeadm docker -y 

Start og aktiver begge tjenestene.

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

Vi krever nå tokenet som kubeadm init genererte, for å bli med i klyngen. Du kan kopiere og lime den inn til node-1 og node-2 hvis du hadde kopiert den et sted.

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

Som foreslått på den siste linjen, gå tilbake til hovednoden din og sjekk om arbeidernoden-1 og arbeidernoden-2 har sluttet seg til klyngen ved å bruke følgende kommando.

# kubectl get nodes

Hvis alle trinnene kjører vellykket, bør du se node-1 og node-2 i klar-status på master-noden.

Anbefalt lesing: Slik distribuerer du Nginx på en Kubernetes-klynge

På dette tidspunktet har vi fullført en vellykket installasjon av en Kubernetes-klynge på Centos 7, og vi har lykkes med to arbeidernoder. Du kan nå begynne å lage pods og distribuere tjenestene dine.