Ricerca nel sito web

Installa il cluster Kubernetes utilizzando Kubeadm in RHEL


Configura il cluster Kubernetes utilizzando Kubeadm in Linux

In questo articolo impareremo a conoscere l'installazione del cluster Kubernetes utilizzando Kubeadm in RHEL 8 e i suoi cloni come AlmaLinux 8, CentOS 8 e Rocky Linux 8.

Prima di approfondirlo, devi avere una conoscenza di base dei concetti e dell'architettura di Kubernetes. In questo articolo, dimostreremo il cluster a due nodi.

Per procedere con l'installazione, sono necessari i requisiti di base indicati di seguito.

  • Minimo 2 host.
  • 2 CPU.
  • 2 GB di memoria fisica (RAM).
  • 20 GB di spazio su disco.
  • Connessione Internet per scaricare pacchetti.

1. Configurare il nome host e l'indirizzo IP

Imposta il nome host e configura gli host in Master e Workers. Il file host del sistema operativo viene utilizzato per convertire nomi host o nomi di dominio in indirizzi IP.

Qui avremo due host:

  • Ostechmaster - Maestro
  • osteochworker - Lavoratore

Utilizzare il comando seguente per impostare il nome host, è necessario il riavvio dopo l'impostazione del nome host.

hostnamectl set-hostname ostechmaster

Modifica il file /etc/hosts:

vi /etc/hosts

Aggiungi il nome host e l'indirizzo IP del server e del client nel file /etc/hosts:

Configura il nome host e l'indirizzo IP

Eseguire il test ping per garantire la connettività:

[root@ostechmaster ~]# ping ostechworker
PING ostechworker (172.31.5.141) 56(84) bytes of data.
64 bytes from ostechworker (172.31.5.141): icmp_seq=1 ttl=64 time=0.472 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=2 ttl=64 time=0.492 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=3 ttl=64 time=1.43 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=4 ttl=64 time=0.425 ms

2. Disabilitare SElinux

Disabilita SElinux in Master e Workers, in modo che tutti i contenitori possano accedere facilmente al filesystem host se SElinux è disabilitato.
Crea 'SELINUX=disabled' nel file di configurazione /etc/selinux/config utilizzando l'editor vi. È necessario il riavvio per riflettere la modifica di SElinux.

[root@ostechmaster ~]# vi /etc/selinux/config

Disabilita SElinux

Assicurati dello stato di SElinux utilizzando il comando seguente.

[root@ostechmaster ~]# sestatus
SELinux status: disabled

3. Disabilitare lo scambio in Master e Worker

È necessario che lo scambio sia disattivato su tutti gli host Kubernetes (Master e Worker). Questo è il metodo di distribuzione preferito dalla comunità Kubernetes. Il servizio kubelet non verrà avviato sul master e sui lavoratori se lo scambio non è disabilitato.

Esegui il comando seguente per disabilitare SWAP:

[root@ostechmaster ~]# swapoff -a && sed -i '/swap/d' /etc/fstab

4. Consentire le porte richieste nel firewall

Affinché i componenti Kubernetes possano interagire tra loro, devono essere disponibili alcune porte essenziali. Di seguito sono riportate le porte da aprire per usufruire della connettività tra i componenti Kubernetes.

Piano di controllo/server principale:

ProtocolDirectionPort RangePurposeUsed By
TCPInbound6443Kubernetes API serverAll
TCPInbound2379-2380etcd server client APIkube-apiserver, etcd
TCPInbound10250Kubelet APISelf, Control plane
TCPInbound10259kube-schedulerSelf
TCPInbound10257kube-controller-managerSelf

Nodi di lavoro:

ProtocolDirection Port RangePurposeUsed By
TCPInbound10250Kubelet APISelf, Control plane
TCPInbound30000-32767NodePort ServicesAll

Per consentire le porte richieste attraverso il firewall, eseguire i seguenti comandi.

Nodo principale:

[root@ostechmaster ~]# firewall-cmd --permanent --add-port=6443/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10250/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10251/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10259/tcp
[root@ostechmaster ~]# firewall-cmd --permanent --add-port=10257/tcp
[root@ostechmaster ~]# firewall-cmd --reload

Nodo di lavoro:

[root@ostechworker ~]# firewall-cmd --permanent --add-port=10250/tcp
[root@ostechworker ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
[root@ostechworker ~]# firewall-cmd --reload

Stiamo disabilitando il firewall sia in Master che in Worker poiché è a scopo dimostrativo. Tuttavia, non è consigliato per la pratica di produzione in tempo reale.

Utilizzare i comandi seguenti per arrestare e disabilitare il firewall.

[root@ostechmaster ~]# systemctl stop firewalld
[root@ostechmaster ~]# systemctl disable firewalld

5. Installa Docker

Docker semplifica la "costruzione" dei contenitori, mentre Kubernetes consente di "gestirli" in tempo reale. Per imballare e spedire il software, utilizzare Docker. Per avviare e ridimensionare la tua app, utilizza Kubernetes.

Aggiungi il repository docker in tutte le macchine nel cluster.

Crea il file denominato docker.repo nella directory /etc/yum.repos.d/:

[root@ostechmaster ~]# vi /etc/yum.repos.d/docker.repo

Aggiungi le seguenti righe al suo interno:

[docker]
baseurl=https://download.docker.com/linux/centos/8/x86_64/stable/
gpgcheck=0

Premi il tasto ESC e digita :wq per salvare il file e chiuderlo.

Installa la finestra mobile nei nodi Master e Worker:

yum -y install docker-ce

Una volta installato, abilita e avvia Docker su entrambi i nodi:

systemctl enable docker
systemctl start docker

Controlla e assicurati che Docker sia in esecuzione su entrambe le macchine.

systemctl status docker

Controlla lo stato del Docker

6. Installa Kubernetes

Aggiungi il repository Kubernetes in Master e Worker.

Crea il file kubernetes.repo sia nel Master che nel lavoratore nella directory /etc/yum.repos.d/:

vi /etc/yum.repos.d/kubernetes.repo

Aggiungi le seguenti righe:

[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

Premi ESC e digita :wq per salvare il file e chiuderlo.

Installa kubeadm, kubelet, kubectl nei nodi Master e Worker utilizzando il comando seguente:

yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes

Abilita e avvia il servizio kubelet in entrambe le macchine:

systemctl enable kubelet
systemctl start kubelet

Controlla lo stato del servizio Kubelet e assicurati che funzioni correttamente su entrambe le macchine.

systemctl status kubelet

Controlla lo stato del servizio Kubelet

7. Inizializza Kubernetes

Utilizza il comando seguente per inizializzare Kubernetes nel Master Server

[root@ostechmaster ~]# kubeadm init

Otterrai l'output seguente che informa che il piano di controllo Kubernetes è stato inizializzato correttamente. E verranno menzionati alcuni passaggi per iniziare a utilizzare il cluster, seguili.

Copia e salva anche il comando 'kubeadm join' dall'output, verrà utilizzato per unirti al nodo di lavoro nel cluster.

Esempio di output:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r \
        --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2

Inizializza Kubernetes

Poiché stiamo procedendo con l'utente root, esegui il comando seguente nel server master come menzionato nell'output sopra.

[root@ostechmaster ~]#  export KUBECONFIG=/etc/kubernetes/admin.conf

8. Configurare la rete POD

Una rete Kubernetes Pod è una rete di componenti interconnessi in Kubernetes. Questo concetto di rete può essere implementato in diversi modi. Nella nostra dimostrazione utilizzeremo 'Weave Net'.

Eseguire i comandi seguenti nel server master per configurare la rete POD.

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

Esempio di output:

serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created
[root@ostechmaster ~]#

9. Unisciti al Nodo Lavoratore

Esegui il comando 'kubeadm join' per unire il nodo di lavoro al cluster. Questo è il comando che abbiamo copiato dall'output 'kubeadm init'.

[root@ostechworker ~]# kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r         --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2

Unisciti al nodo di lavoro nel cluster

È possibile verificare il nodo nel server Master utilizzando il comando seguente

kubectl get nodes

Esempio di output:

NAME           STATUS     ROLES                  AGE   VERSION
ostechmaster   Ready      control-plane,master   32m   v1.23.1
ostechworker   Ready   <none>                 30m   v1.23.1

Conclusione

In questo articolo abbiamo visto i passaggi dettagliati per impostare e configurare Kubernetes Cluster utilizzando Kubeadm. Consulta i nostri precedenti articoli sulla serie Kubernetes per avere una comprensione dettagliata dell'architettura e dei concetti di Kubernetes. Vedremo le operazioni di Kubernetes nei prossimi articoli.

Leggi dopo:

  • Come creare e gestire i pod Kubernetes in Linux

Risorsa:

  • https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

Articoli correlati