Kubernetes, spesso abbreviato come K8s, è una piattaforma open-source utilizzata per automatizzare il deployment, la scalabilità e la gestione delle applicazioni containerizzate. È diventato lo standard de facto per il deployment e la gestione di applicazioni in ambienti cloud, on-premise e ibridi. In questa guida, esploreremo come installare un cluster Kubernetes su CentOS 7, passo dopo passo.
Requisiti di Sistema
Per seguire questa guida, avrai bisogno di almeno due macchine CentOS 7:
- Master Node: La macchina che gestisce e controlla il cluster Kubernetes.
- Worker Node(s): Le macchine che eseguono le applicazioni containerizzate gestite dal master node.
Assicurati che ogni macchina soddisfi i seguenti requisiti minimi:
- 2 vCPU
- 2 GB di RAM
- Rete tra i nodi
Preparazione dell’Ambiente
- Configurazione dell’Hostname: Imposta un hostname univoco per ogni nodo.
hostnamectl set-hostname master-node
hostnamectl set-hostname worker-node-1
- Configura il File Hosts: Aggiungi un’entrata nel file
/etc/hosts
su ogni macchina per garantire che tutti i nodi possano comunicare tra loro usando gli hostname.
192.168.1.100 master-node
192.168.1.101 worker-node-1
- Disabilita SELinux: Kubernetes non funziona correttamente con SELinux abilitato.
setenforce 0
sed -i --follow-symlinks 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
- Disabilita il Firewall: Per semplificare la configurazione, disabilita il firewall su tutti i nodi.
systemctl stop firewalld
systemctl disable firewalld
- Abilita il Modulo br_netfilter: Questo modulo è necessario per il corretto funzionamento della rete.
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
Installazione di Docker
Kubernetes utilizza Docker come runtime dei container di default. Installa Docker su tutti i nodi.
- Aggiungi il Repository Docker:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Installa Docker:
yum install docker-ce docker-ce-cli containerd.io -y
- Avvia e Abilita Docker:
systemctl start docker
systemctl enable docker
Installazione di Kubernetes
Devi installare i componenti di Kubernetes, inclusi kubeadm, kubelet e kubectl, su tutti i nodi.
- Aggiungi il Repository Kubernetes: Crea un file chiamato
/etc/yum.repos.d/kubernetes.repo
e aggiungi le seguenti informazioni:
[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
- Installa i Componenti Kubernetes:
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
systemctl start kubelet
Inizializzazione del Cluster
Sull’master node, inizializza il cluster Kubernetes.
- Inizializza il Kubernetes Cluster:
kubeadm init --pod-network-cidr=10.244.0.0/16
La flag --pod-network-cidr
è richiesta per la maggior parte dei plugin di rete. Qui utilizziamo la subnet utilizzata da Flannel come esempio.
- Configura kubectl: Segui le istruzioni a schermo per configurare
kubectl
usando il tuo utente non root.
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
- Installa il Plugin di Rete: Installa un plugin di rete sul cluster, come Flannel.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Aggiunta dei Worker Nodes
Per aggiungere un worker node al cluster, usa il comando kubeadm join
fornito alla fine dell’inizializzazione del cluster sul master node. Dovrai eseguire questo comando su ogni worker node.
Verifica del Cluster
Per verificare che il cluster sia stato configurato correttamente, esegui il seguente comando sul master node:
Dovresti vedere tutti i nodi elencati con lo stato Ready
.
Conclusione
Hai appena completato l’installazione di un cluster Kubernetes su CentOS 7. Ora hai una solida base su cui puoi iniziare a distribuire le tue applicazioni containerizzate. Ricorda che la gestione di un cluster Kubernetes può diventare complessa, quindi è importante continuare ad apprendere e sperimentare con Kubernetes per sfruttare appieno le sue capacità.