Come fare il setup di Kubernetes

Vediamo come fare il setup di Kubernetes su un server cluster. L’esempio è applicato su
un cluster di macchine con CentOS7 ma può essere replicato su qualsiasi macchina basata
su Linux.

Set Up Kubernetes

Vediamo insieme tutti i passaggi relativi al set up di Kuberntes(link all’art cos’è Kubernetes) nel modo più dettagliato possibile.

Prerequisiti

Abbiamo bisogno di:

  • più server con CentOS7 in esecuzione (1 master node e 1+ worker nodes)
  • Un account utente su ogni macchina con privilegi di amministrazione
  • Docker(link all’art Cos’è Docker) installato su ogni macchina

Configurare il repository Kubernetes

In primis dobbiamo sempre considerare che i pacchetti Kubernetes non sono disponibili tramite i repository CentOS 7 ufficiali. Questo passaggio pertanto deve essere eseguito sul master node e su ogni worker node. 

E’ dunque il seguente comando che deve essere eseguito per recuperare il repository dal quale successivamente recuperare l’installer per Kubernetes:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

Installazione di kubelet, kubeadm, e kubectl

Questi 3 pacchetti di base sono necessari per poter utilizzare Kubernetes. Installa i seguenti pacchetti su ogni nodo facendo così come vedi nell’esempio:

sudo yum install -y kubelet kubeadm kubectl

systemctl enable kubelet

systemctl start kubelet

Prima di eseguire il deploy di un cluster, assicurati di impostare gli hostname configurando il firewall e le impostazioni del kernel.

Impostare l’hostname di un node

Per dare un nome host univoco a ciascuno dei tuoi nodi, usa questo comando:

sudo hostnamectl set-hostname master-node

oppure

sudo hostnamectl set-hostname worker-node1

In questo esempio, il nodo master è ora denominato master-node, mentre un nodo di lavoro viene denominato worker-node1.

Adesso crea un un record DNS per risolvere il nome host per tutti i nodi:

192.168.1.10 master.example.com master-node

192.168.1.20 node1. example.com node1 worker-node

Configurare il firewall

I nodi, i container e i pod devono essere in grado di comunicare attraverso il cluster per svolgere le loro funzioni. Su CentOS di default è installato Firewalld. Aggiungi le seguenti porte immettendo i comandi elencati.

Sul Master Node pertanto 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 –permanent –add-port=10255/tcp

sudo firewall-cmd –reload

Arrivato a questo punto esegui questi comandi su ogni worker node:

sudo firewall-cmd –permanent –add-port=10251/tcp

sudo firewall-cmd –permanent –add-port=10255/tcp

firewall-cmd –reload

Aggiorna le impostazioni Iptables

Imposta il valore di net.bridge.bridge-nf-call-iptables a “1” nel file di configurazione sysctl. Questo assicura che i pacchetti vengano correttamente processati dalle IP tables al momento del filtering e del port forwarding.

cat <<EOF > /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

sysctl –system

Disabilita SELinux

I container devono accedere al filesystem host. SELinux deve essere impostato sulla modalità permissiva, che disabilita le sue funzioni di sicurezza.

Usa i seguenti comandi per disabilitare SELinux

sudo setenforce 0

sudo sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config

Disabilita SWAP

Infine, dobbiamo disabilitare SWAP per consentire a kubelet di funzionare correttamente:

sudo sed -i ‘/swap/d’ /etc/fstab

sudo swapoff -a

Crea un cluster con kubeadm

Inizializza il cluster con il seguente comando:

sudo kubeadm init –pod-network-cidr=10.244.0.0/16

Il completamento del processo potrebbe richiedere diversi minuti in base alla velocità della rete. Al termine di questo comando, viene visualizzato un messaggio di partecipazione a kubeadm. Prendi nota del record e usalo per unire i worker node al cluster in una fase successiva.

Gestisci il cluster come utente standard

Per utilizzare il cluster devi potervi accedere come utente standard. Esegui il seguente set di comandi:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Imposta Pod Network

Il pod network consente ai nodi all’interno del cluster di comunicare tra di loro. Sono disponibili diverse opzioni di rete Kubernetes. Usa il seguente comando per installare il componente aggiuntivo flannel pod network:

sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Se decidi di utilizzare flannel, modifica le regole del firewall per consentire il traffico per la porta predefinita 8285 di flannel.

Verifica lo stato del kluster

Verifica lo stato dei nodi eseguendo il seguente comando sul server master:

sudo kubectl get nodes

Una volta installata una rete pod, puoi confermare che funzioni controllando che il pod CoreDNS sia in esecuzione digitando:

sudo kubectl get pods –all-namespaces

Aggiungi un worker node al cluster

Puoi utilizzare il comando kubeadm join su ogni worker node per connetterlo al cluster.

kubeadm join –discovery-token cfgrty.1234567890jyrfgd –discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443

Sostituisci i codici con quelli del tuo server principale. Ripeti questa azione per ogni worker node sul tuo cluster.

In conclusione

Hai installato correttamente Kubernetes su CentOS e ora puoi gestire i cluster su più server. 

Questo tutorial di Kubernetes fornisce un buon punto di partenza per esplorare le numerose opzioni che questa piattaforma ha da offrire. Usa Kubernetes per l’autoscaling dei tuoi container in modo da dedicare meno tempo alla microgestione di ognuno di essi!

Share: Facebook Twitter Linkedin

Comments