In questo articolo, impareremo 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 entrare nel merito, devi avere una comprensione di base sui concetti e l'architettura Kubernetes . In questo articolo, dimostreremo un cluster a due nodi.
Per procedere con l'installazione, abbiamo bisogno dei requisiti di base indicati di seguito.
- Minimo 2 host.
- 2 CPU.
- 2 GB di memoria fisica (RAM).
- 20 GB di spazio su disco.
- Connessione a Internet per scaricare i pacchetti.
1. Configura nome host e indirizzo IP
Imposta il nome host e configura gli host in Master e Workers. Il file del sistema operativo hosts viene utilizzato per convertire nomi host o nomi di dominio in indirizzi IP.
Qui avremo due host:
- Ostechmaster - Master
- Operatore Oste – Lavoratore
Utilizzare il comando seguente per impostare il nome host, è necessario riavviare dopo aver impostato il nome host.
# hostnamectl set-hostname ostechmaster
Modifica /etc/hosts
file:
# vi /etc/hosts
Aggiungi il nome host e l'indirizzo IP del server e del client nel /etc/hosts
file:
Esegui il ping test per garantire la connettività:
[[email protected] ~]# ping ostechworkerPING ostechworker (172.31.5.141) 56(84) byte di dati.64 byte da ostechworker (172.31.5.141):icmp_seq=1 ttl=64 time=0.472 ms64 byte da ostechworker (172.31.5.141):icmp_seq=2 ttl=64 time=0.492 ms64 byte da ostechworker (172.31.5.141):icmp_seq=3 ttl=64 time=1.43 ms64 byte da ostechworker (172.31.5.141):icmp_seq=4 ttl=64 tempo=0,425 ms
2. Disabilita SElinux
Disabilita SElinux in Master e Workers, in modo che tutti i container possano accedere prontamente al filesystem host se SElinux è disabilitato.
Crea 'SELINUX=disabled
' nel file di configurazione /etc/selinux/config
usando l'editor vi. Il riavvio è necessario per riflettere la modifica di SElinux.
[[email protetta] ~]# vi /etc/selinux/config
Assicurati lo stato di SElinux usando il comando seguente.
[[email protetta] ~]# stato sestatusSELinux:disabilitato
3. Disabilita lo scambio in Master e Worker
Lo scambio deve essere disattivato su tutti gli host Kubernetes (Master e Workers). Questo è il metodo di distribuzione preferito dalla community di Kubernetes. Il servizio kubelet non si avvierà sul master e sui worker se lo scambio non è disabilitato.
Esegui il comando seguente per disabilitare SWAP:
[[email protetta] ~]# swapoff -a &&sed -i '/swap/d' /etc/fstab
4. Consenti le porte richieste nel firewall
Affinché i componenti Kubernetes possano interagire tra loro, devono essere disponibili alcune porte essenziali. Di seguito sono elencate le porte da aprire per usufruire della connettività tra i componenti Kubernetes.
Piano di controllo/Server principale:
Protocollo | Direzione | Intervallo di porte | Scopo | Utilizzato da |
TCP | In entrata | 6443 | Server API Kubernetes | Tutti |
TCP | In entrata | 2379-2380 | API client del server etcd | kube-apiserver, ecc. |
TCP | In entrata | 10250 | API Kubelet | Auto, controllo aereo |
TCP | In entrata | 10259 | programmatore kube | Sé |
TCP | In entrata | 10257 | gestore-controller-kube | Sé |
Nodi di lavoro:
Protocollo | Direzione | Intervallo di porte | Scopo | Utilizzato da |
TCP | In entrata | 10250 | API Kubelet | Auto, controllo aereo |
TCP | In entrata | 30000-32767 | Servizi NodePort | Tutti |
Per consentire le porte richieste attraverso il firewall, esegui i seguenti comandi.
Nodo principale:
[[email protetta] ~]# firewall-cmd --permanent --add-port=6443/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[[email protetta] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protetta] ~]# firewall-cmd --permanent --add-port=10251/tcp
[[email protetta] ~]# firewall-cmd --permanent --add-port=10259/tcp
[[email protetta] ~]# firewall-cmd --permanent --add-port=10257/tcp
[[email protetta] ~]# firewall-cmd --reload
Nodo di lavoro:
[[email protetta] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protetta] ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
[[email protetta] ~]# firewall-cmd --reload
Stiamo disabilitando il firewall sia in Master che in Worker poiché è a scopo dimostrativo. Tuttavia, non è consigliato per le esercitazioni di produzione in tempo reale.
Usa i comandi seguenti per fermare e disabilitare il firewall.
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
5. Installa Docker
Docker semplifica la "costruzione" dei container, mentre Kubernetes consente di "gestire" i container in tempo reale. Per imballare e spedire il software, utilizzare Docker. Per avviare e scalare la tua app, usa Kubernetes.
Aggiungi repository Docker in tutte le macchine in Cluster.
Crea il file denominato docker.repo
sotto /etc/yum.repos.d/
directory:
[[email protetta] ~]# vi /etc/yum.repos.d/docker.repo
Aggiungi le seguenti righe:
[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 in entrambi i nodi Master e Worker:
# yum -y install docker-ce
Una volta installato, abilita e avvia Docker su entrambi i nodi:
# systemctl abilita la finestra mobile
# systemctl finestra mobile di avvio
Verifica e assicurati che Docker sia in esecuzione su entrambe le macchine.
# finestra mobile dello stato systemctl
6. Installa Kubernetes
Aggiungi il repository Kubernetes in Master e Worker.
Crea il file kubernetes.repo
sia in Master che in worker in /etc/yum.repos.d/
directory:
# vi /etc/yum.repos.d/kubernetes.repo
Aggiungi le seguenti righe:
[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=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 usando il comando seguente:
# yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes
Abilita e avvia il kubelet
servizio in entrambe le macchine:
# systemctl abilita kubelet
# systemctl avvia kubelet
Controlla lo stato del servizio Kubelet e assicurati che funzioni correttamente in entrambe le macchine.
# systemctl status kubelet
7. Inizializza i Kubernetes
Utilizzare il comando seguente per inizializzare Kubernetes in Master Server
[[email protetta] ~]# kubeadm init
Otterrai l'output seguente che dice che il piano di controllo di Kubernetes è stato inizializzato correttamente. E verranno menzionati alcuni passaggi per iniziare a utilizzare il cluster, seguilo.
Copia e salva anche il 'kubeadm join'
comando dall'output, verrà utilizzato per unire il nodo di lavoro nel cluster.
Risultato di esempio:
Il tuo piano di controllo Kubernetes è stato inizializzato correttamente! Per iniziare a utilizzare il tuo cluster, devi eseguire quanto segue come utente normale:mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id - u):$(id -g) $HOME/.kube/configIn alternativa, se sei l'utente root, puoi eseguire: export KUBECONFIG=/etc/kubernetes/admin.conf Ora dovresti distribuire una rete pod nel cluster. Esegui "kubectl apply -f [podnetwork].yaml" con una delle opzioni elencate in:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then è possibile partecipare a un qualsiasi numero di nodi lavoratori eseguendo il seguente su ciascun come root: kubeadm uniscono 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r \ --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2
Dal momento che stiamo procedendo con root
utente, esegui il comando seguente nel server principale come menzionato nell'output sopra.
[[email protetta] ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
8. Configura 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 useremo 'Weave Net' .
Esegui i seguenti comandi nel server principale per configurare la rete POD.
[[email protetta] ~]# export kubever=$(versione kubectl | base64 | tr -d '\n')
[[email protected] ~]# kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$kubever
Risultato di esempio:
serviceaccount/weave-net createclusterrole.rbac.authorization.k8s.io/weave-net createclusterrolebinding.rbac.authorization.k8s.io/weave-net createrole.rbac.authorization.k8s.io/weave-net createrolebinding.rbac .authorization.k8s.io/weave-net creatodaemonset.apps/weave-net creato[[email protected] ~]#
9. Unisciti al nodo di lavoro
Esegui 'kubeadm join
' comando per unire il nodo di lavoro al cluster. Questo è il comando che abbiamo copiato da 'kubeadm init
' output.
[[email protected] ~]# kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d33d3c2b83d381b157d3d381b8Puoi verificare il nodo nel server principale usando il comando seguente
# kubectl ottiene nodiRisultato di esempio:
NOME STATO RUOLI ETÀ VERSIONostechmaster Ready control-plane,master 32m v1.23.1stechworker Ready30m v1.23.1 Conclusione
In questo articolo abbiamo visto i passaggi dettagliati per impostare e configurare Kubernetes Cluster utilizzando Kubeadm. Fai riferimento alle nostre precedenti serie kubernetes articoli per avere una comprensione dettagliata dell'architettura e dei concetti di Kubernetes. Vedremo le operazioni di Kubernetes nei prossimi articoli.
Leggi il prossimo:
- Come creare e gestire i pod Kubernetes in Linux
Risorsa:
- https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/