Ricerca nel sito web

Come installare un cluster Kubernetes su CentOS 7


Donato da Google alla comunità Opensource, Kubernetes è ora diventato lo strumento di gestione dei contenitori preferito. Può gestire e orchestrare non solo i runtime docker ma anche i runtime Containers e Rkt.

Un tipico cluster Kubernetes avrebbe generalmente un nodo master e diversi nodi di lavoro o Minion. I nodi di lavoro vengono quindi gestiti dal nodo master, garantendo così che il cluster sia gestito da un punto centrale.

È anche importante ricordare che puoi anche distribuire un cluster Kubernetes a nodo singolo, generalmente consigliato per carichi di lavoro molto leggeri e non di produzione. Per questo, puoi utilizzare Minikube, che è uno strumento che esegue un cluster Kubernetes a nodo singolo in una macchina virtuale sul tuo nodo.

Lettura consigliata: Come installare un cluster Kubernetes su CentOS 8

Per questo tutorial, esamineremo l'installazione di un cluster Kubernetes multi-nodo su CentOS 7 Linux. Questo tutorial è basato sulla riga di comando, quindi avrai bisogno dell'accesso alla finestra del terminale.

Prerequisiti

  1. Più server che eseguono Centos 7 (1 nodo master, 2 nodi di lavoro). Si consiglia che il tuo Master Node abbia almeno 2 CPU, sebbene questo non sia un requisito rigoroso.
  2. Connettività Internet su tutti i tuoi nodi. Recupereremo i pacchetti Kubernetes e docker dal repository. Allo stesso modo, dovrai assicurarti che il gestore pacchetti yum sia installato per impostazione predefinita e possa recuperare i pacchetti in remoto.
  3. Avrai anche bisogno di accedere a un account con privilegi sudo o root. In questo tutorial utilizzerò il mio account root.

Il nostro cluster a 3 nodi sarà simile a questo:

Installazione del Cluster Kubernetes su Master-Node

Affinché Kubernetes funzioni, avrai bisogno di un motore di containerizzazione. Per questa installazione utilizzeremo docker poiché è il più popolare.

I seguenti passaggi verranno eseguiti sul Master-Node.

Passaggio 1: preparare nome host, firewall e SELinux

Sul tuo nodo principale, imposta il nome host e, se non disponi di un server DNS, aggiorna anche il tuo file /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

Puoi eseguire il ping di worker-node-1 e worker-node-2 per verificare se il tuo file host aggiornato funziona correttamente utilizzando il comando ping.

ping 10.128.0.29
ping 10.128.0.30

Successivamente, disabilita SElinux e aggiorna le regole del firewall.

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

Imposta le seguenti regole firewall sulle porte. Assicurati che ogni comando firewall-cmd restituisca un successo.

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

Passaggio 2: configura il repository Kubernetes

Dovrai aggiungere manualmente i repository Kubernetes poiché non vengono installati per impostazione predefinita su 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

Passaggio 3: installa Kubeadm e Docker

Con il repository dei pacchetti ora pronto, puoi procedere e installare i pacchetti kubeadm e docker.

yum install kubeadm docker -y 

Una volta completata l'installazione, abilitare e avviare entrambi i servizi.

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

Passaggio 4: inizializza Kubernetes Master e imposta l'utente predefinito

Ora siamo pronti per inizializzare Kubernetes Master, ma prima è necessario disabilitare lo scambio per eseguire il comando "kubeadm init".

swapoff -a

L'inizializzazione del master Kubernetes è un processo completamente automatizzato gestito dal comando "kubeadm init" che eseguirai.

kubeadm init

Potresti voler copiare l'ultima riga e salvarla da qualche parte perché dovrai eseguirla sui nodi di lavoro.

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

Suggerimento: a volte questo comando potrebbe lamentarsi degli argomenti (args) passati, quindi modificalo per evitare qualsiasi errori. Quindi, eliminerai il carattere '\' che accompagna --token e il tuo comando finale sarà simile a questo.

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

Dopo aver inizializzato Kubernetes correttamente, dovrai consentire al tuo utente di iniziare a utilizzare il cluster. Nel nostro caso, vogliamo eseguire questa installazione come utente root, quindi andremo avanti ed eseguiremo questi comandi come root. Puoi passare all'utente abilitato sudo che preferisci ed eseguire quanto segue utilizzando sudo.

Per utilizzare root, esegui:

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

Per utilizzare un utente abilitato a sudo, esegui:

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

Ora controlla se il comando kubectl è attivato.

kubectl get nodes

A questo punto noterai anche che lo stato del nodo master è "Non pronto". Questo perché dobbiamo ancora distribuire la rete pod al cluster.

La rete pod è la rete overlay per il cluster, che viene distribuita sopra l'attuale rete di nodi. È progettato per consentire la connettività attraverso il pod.

Passaggio 5: configura la tua rete Pod

La distribuzione del cluster di rete è un processo altamente flessibile a seconda delle tue esigenze e sono disponibili molte opzioni. Poiché vogliamo mantenere la nostra installazione il più semplice possibile, utilizzeremo il plug-in Weavenet che non richiede alcuna configurazione o codice aggiuntivo e fornisce un indirizzo IP per pod, il che è ottimo per noi. Se vuoi vedere più opzioni, controlla qui.

Questi comandi saranno importanti per ottenere la configurazione della rete del pod.

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

Ora se controlli lo stato del tuo nodo master, dovrebbe essere "Pronto".

kubectl get nodes

Successivamente, aggiungiamo i nodi di lavoro al cluster.

Configurazione dei nodi di lavoro per unirsi al cluster Kubernetes

I seguenti passaggi verranno eseguiti sui nodi di lavoro. Questi passaggi dovrebbero essere eseguiti su ogni nodo di lavoro quando si entra nel cluster Kubernetes.

Passaggio 1: preparare nome host, firewall e SELinux

Sul tuo nodo di lavoro-1 e nodo di lavoro-2, imposta il nome host e, nel caso in cui non disponi di un server DNS, aggiorna anche il tuo master e lavoratore nodi sul file /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

Puoi eseguire il ping di master-node per verificare se il file host aggiornato va bene.

Successivamente, disabilita SElinux e aggiorna le regole del firewall.

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

Imposta le seguenti regole firewall sulle porte. Assicurati che tutti i comandi firewall-cmd restituiscano success.

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

Passaggio 2: configura il repository Kubernetes

Dovrai aggiungere manualmente i repository Kubernetes poiché non sono preinstallati su 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

Passaggio 3: installa Kubeadm e Docker

Con il repository dei pacchetti ora pronto, puoi procedere e installare i pacchetti kubeadm e docker.

yum install kubeadm docker -y 

Avvia e abilita entrambi i servizi.

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

Passaggio 4: unisci il nodo di lavoro al cluster Kubernetes

Ora abbiamo bisogno del token generato da kubeadm init per unirci al cluster. Puoi copiarlo e incollarlo sul tuo nodo-1 e nodo-2 se lo hai copiato da qualche parte.

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

Come suggerito nell'ultima riga, torna al tuo nodo master e controlla se il nodo di lavoro 1 e il nodo di lavoro 2 si sono uniti al cluster utilizzando il seguente comando.

kubectl get nodes

Se tutti i passaggi vengono eseguiti correttamente, dovresti vedere node-1 e node-2 nello stato pronto sul master-node.

Lettura consigliata: Come distribuire Nginx su un cluster Kubernetes

A questo punto, abbiamo completato con successo l'installazione di un cluster Kubernetes su Centos 7 e abbiamo integrato con successo due nodi di lavoro. Ora puoi iniziare a creare i tuoi pod e a distribuire i tuoi servizi.