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:
Protocol | Direction | Port Range | Purpose | Used By |
TCP | Inbound | 6443 | Kubernetes API server | All |
TCP | Inbound | 2379-2380 | etcd server client API | kube-apiserver, etcd |
TCP | Inbound | 10250 | Kubelet API | Self, Control plane |
TCP | Inbound | 10259 | kube-scheduler | Self |
TCP | Inbound | 10257 | kube-controller-manager | Self |
Nodi di lavoro:
Protocol | Direction | Port Range | Purpose | Used By |
TCP | Inbound | 10250 | Kubelet API | Self, Control plane |
TCP | Inbound | 30000-32767 | NodePort Services | All |
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/