Ciao tecnici, come sappiamo Kubernetes (k8s) è un sistema di orchestrazione di container gratuito e open source. Viene utilizzato per automatizzare la distribuzione e la gestione di applicazioni containerizzate. In questa guida, illustreremo passo dopo passo come installare il cluster kubernetes su Rocky Linux 8 con kubeadm.
Requisito minimo di sistema per Kubernetes
- 2 vCPU o più
- 2 GB di RAM o più
- Scambio disabilitato
- Almeno scheda NIC
- Connessione Internet stabile
- Un utente normale con privilegi sudo.
Per la dimostrazione, sto usando i seguenti sistemi
- Una volta nodo master/piano di controllo (2 GB di RAM, 2vCPU, 1 scheda NIC, minimo Rocky Linux 8 OS)
- Due nodi di lavoro (2 GB di RAM, 2vCPU, 1 scheda NIC, minimo Rocky Linux 8 OS)
- Nome host del nodo principale – nodo di controllo (192.168.1.240)
- Nome host dei nodi di lavoro – nodo-lavoratore1(192.168.1.241), nodo-lavoratore2(192.168.1.242)
Senza ulteriori indugi, approfondiamo la procedura di installazione di Kubernetes.
Nota:questi passaggi sono applicabili anche per RHEL 8 e AlmaLinux OS.
Passaggio 1) Imposta il nome host e aggiorna il file host
Utilizzare il comando hostnamectl per impostare il nome host sul nodo di controllo e sul nodo di lavoro.
Esegui sotto comando sul nodo di controllo
$ sudo hostnamectl set-hostname "control-node"$ exec bash
Esegui il comando seguente sul nodo di lavoro1
$ sudo hostnamectl set-hostname "worker-node1"$ exec bash
Nodo di lavoro 2
$ sudo hostnamectl set-hostname "worker-node2"$ exec bash
Aggiungi le seguenti voci nel file /etc/hosts rispettivamente sui nodi di controllo e di lavoro.
192.168.1.240 control-node192.168.1.241 worker-node1192.168.1.242 worker-node2
Passaggio 2) Disabilita Swap e imposta SELinux in modalità permissiva
Disabilita lo scambio, in modo che kubelet possa funzionare correttamente. Esegui i comandi seguenti su tutti i nodi per disabilitarlo,
$ sudo swapoff -a$ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
Esegui sotto il comando sed su tutti i nodi per impostare SELinux in modalità permissiva
$ sudo setenforce 0$ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissivo/' /etc/selinux/config
Passaggio 3) Configura le regole del firewall sui nodi Master e Worker
Sul piano di controllo, le seguenti porte devono essere consentite nel firewall.
Per consentire le porte sopra nel piano di controllo, esegui
$ sudo firewall-cmd --permanent --add-port=6443/tcp$ sudo firewall-cmd --permanent --add-port=2379-2380/tcp$ sudo firewall-cmd --permanent --add -port=10250/tcp$ sudo firewall-cmd --permanent --add-port=10251/tcp$ sudo firewall-cmd --permanent --add-port=10252/tcp$ sudo firewall-cmd --reload$ sudo modprobe br_netfilter$ sudo sh -c "echo '1'> /proc/sys/net/bridge/bridge-nf-call-iptables"$ sudo sh -c "echo '1'> /proc/sys/net/ipv4/ ip_forward"
Sui nodi di lavoro, le seguenti porte devono essere consentite nel firewall
$ sudo firewall-cmd --permanent --add-port=10250/tcp$ sudo firewall-cmd --permanent --add-port=30000-32767/tcp $ sudo firewall-cmd --reload$ sudo modprobe br_netfilter$ sudo sh -c "echo '1'> /proc/sys/net/bridge/bridge-nf-call-iptables"$ sudo sh -c "echo '1'> /proc/sys/net/ipv4/ip_forward "
Passaggio 4) Installa Docker sui nodi Master e Worker
Installa Docker sui nodi master e di lavoro. Qui la finestra mobile fornirà il tempo di esecuzione del contenitore (CRI). Per installare l'ultima finestra mobile, dobbiamo prima abilitare il suo repository eseguendo i seguenti comandi.
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Ora, esegui sotto il comando dnf su tutti i nodi per installare docker-ce (docker community edition)
$ sudo dnf install docker-ce -y
Uscita
Una volta che la finestra mobile e le sue dipendenze sono state installate, avvia e abilita il suo servizio eseguendo i seguenti comandi
$ sudo systemctl avvia docker$ sudo systemctl abilita docker
Passaggio 5) Installa kubelet, Kubeadm e kubectl
Kubeadm è l'utilità attraverso la quale installeremo il cluster Kubernetes. Kubectl è l'utilità della riga di comando utilizzata per interagire con il cluster Kubernetes. Kubelet è il componente che eseguirà tutti i nodi ed eseguirà attività come l'avvio e l'arresto di pod o contenitori.
Per installare kubelet, Kubeadm e kubectl su tutti i nodi, dobbiamo prima abilitare il repository Kubernetes.
Esegui sotto i comandi sui nodi master e di lavoro.
$ cat <Dopo aver installato i pacchetti sopra, abilita il servizio kubelet su tutti i nodi (controllo e nodi di lavoro), esegui
$ sudo systemctl enable --now kubeletPassaggio 6) Installa Kubernetes Cluster con Kubeadm
Durante l'installazione del cluster Kubernetes, dovremmo assicurarci che cgroup of container runtime (CRI) corrisponda a cgroup of kubelet. Tipicamente, in Docker, cgroup è cgroupfs, quindi dobbiamo indicare a Kubeadm di usare cgroupfs come cgoup di kubelet. Questo può essere fatto passando un yaml nel comando Kubeadm,
Crea il file kubeadm-config.yaml sul piano di controllo con il seguente contenuto
$ vi kubeadm-config.yaml# kubeadm-config.yamlkind:ClusterConfigurationapiVersion:kubeadm.k8s.io/v1beta3kubernetesVersion:v1.23.4--kind:KubeletConfigurationapiVersion:kubelet.config.k8s.io/v1beta1cgroupDriver:cgroupfsNota:sostituisci la versione Kubernetes secondo la tua configurazione.
Ora siamo pronti per installare (o inizializzare il cluster), eseguire sotto il comando Kubeadm dal nodo di controllo,
$ sudo kubeadm init --config kubeadm-config.yamlL'output del comando sopra apparirà come sotto,
L'output sopra conferma che il cluster è stato inizializzato correttamente.
Esegui i seguenti comandi per consentire all'utente normale di interagire con il cluster, questi comandi sono già presenti nell'output.
$ mkdir -p $HOME/.kube$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config$ sudo chown $(id -u):$(id -g) $HOME /.kube/config$ kubectl ottiene i nodi
Per rendere i nodi in stato pronto e abilitare il servizio DNS del cluster (coredns), installare il componente aggiuntivo di rete pod (CNI – Container Network Interface). I pod inizieranno a comunicare tra loro una volta installato il componente aggiuntivo di rete pod. In questa guida, installo calico come componente aggiuntivo di rete. Esegui sotto il comando kubectl dal piano di controllo.
$ kubectl apply -f https://docs.projectcalico.org/v3.22/manifests/calico.yamlUscita
Dopo la corretta installazione dell'ad-on di rete calico, il nodo di controllo e i pod nello spazio dei nomi del sistema kube saranno rispettivamente pronti e disponibili.
Ora, il passaggio successivo consiste nell'unire i nodi di lavoro al cluster.
Passaggio 7) Unisci i nodi di lavoro al cluster
Dopo l'inizializzazione riuscita del cluster Kubernetes, nell'output viene mostrato il comando per unire qualsiasi nodo di lavoro al cluster. Quindi, copia quel comando e incollalo sui nodi di lavoro. Quindi, nel mio caso il comando è,
$ sudo kubeadm unisciti a 192.168.1.240:6443 --token jecxxg.ac3d3rpd4a7xbxx4 --discovery-token-ca-cert-hash sha256:1e4fbed060aafc564df75bc776c18f6787ab91685859e74d4349cf5a5d>Esegui i comandi sopra su entrambi i nodi di lavoro.
Verifica lo stato di entrambi i nodi di lavoro dal piano di controllo, esegui
[[e-mail protetta] ~] $ kubectl get nodesname status ruoli età VersionControl-nodo pronto-controllo-piano-aereo, master 49m v1.23.4worker-nodo1 pronto5m18s v1.23.4worker-node2 pronto 3m57s v1 .23.4[[email protetta] ~]$ Ottimo, l'output sopra conferma che i nodi di lavoro si sono uniti al cluster. Questo è tutto da questa guida, spero che tu abbia trovato questa guida informativa. Si prega di condividere le vostre domande e feedback nella sezione commenti qui sotto.