Introduzione
Piccoli ambienti virtuali, chiamati contenitori , sono diventati indispensabili per lo sviluppo e la gestione delle applicazioni.
L'utilizzo di applicazioni all'interno di un contenitore isolato non influisce sul sistema operativo host. I container sono più efficienti delle macchine virtuali in quanto non necessitano del loro sistema operativo.
Kubernetes è una piattaforma open source che ti aiuta a distribuire, ridimensionare e gestire le risorse su più container.
Segui questo tutorial e scopri come installare Kubernetes su un sistema CentOS 7.

Prerequisiti
- Più server Linux che eseguono CentOS 7 (1 nodo principale, più nodi di lavoro)
- Un account utente su ogni sistema con sudo o privilegi di root
- Il gnam gestore di pacchetti, incluso per impostazione predefinita
- Riga di comando/finestra del terminale
Passaggi per l'installazione di Kubernetes su CentOS 7
Per utilizzare Kubernetes, devi installare un motore di containerizzazione . Attualmente, la soluzione container più popolare è Docker . Docker deve essere installato su CentOS, entrambi sul Master Node e sui nodi Worker.
Passaggio 1:configura il repository Kubernetes
I pacchetti Kubernetes non sono disponibili dai repository CentOS 7 ufficiali. Questo passaggio deve essere eseguito sul nodo principale e su ogni nodo di lavoro che prevedi di utilizzare per la configurazione del tuo container. Immettere il comando seguente per recuperare i repository Kubernetes.
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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
EOF
Fase 2:installa kubelet , kubeadm e kubectl
Questi 3 pacchetti di base sono necessari per poter utilizzare Kubernetes. Installa i seguenti pacchetti su ciascun nodo:
sudo yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
systemctl start kubelet
Ora hai installato correttamente Kubernetes, inclusi i suoi strumenti e pacchetti di base.

Prima di distribuire un cluster, assicurati di impostare i nomi host, configurare il firewall e le impostazioni del kernel.
Fase 3:imposta il nome host sui nodi
Per assegnare un nome host univoco a ciascuno dei tuoi nodi, usa questo comando:
sudo hostnamectl set-hostname master-node
o
sudo hostnamectl set-hostname worker-node1
In questo esempio, il nodo master è ora denominato nodo-master, mentre un nodo di lavoro è denominato nodo-lavoratore1.
Crea una voce host o un record DNS per risolvere il nome host per tutti i nodi:
sudo vi /etc/hosts
Con la voce:
192.168.1.10 master.phoenixnap.com master-node
192.168.1.20 node1. phoenixnap.com node1 worker-node
Fase 4:Configura Firewall
I nodi, i contenitori e i pod devono essere in grado di comunicare nel cluster per svolgere le proprie funzioni. Firewalld è abilitato in CentOS per impostazione predefinita sul front-end. Aggiungi le seguenti porte inserendo i comandi elencati.
Sul Nodo Master inserisci:
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
Ogni volta che viene aggiunta una porta il sistema conferma con un messaggio di "successo".

Immettere i seguenti comandi su ciascun nodo di lavoro:
sudo firewall-cmd --permanent --add-port=10251/tcp
sudo firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --reload
Passaggio 5:aggiorna le impostazioni di Iptables
Imposta il net.bridge.bridge-nf-call-iptables
a '1' nel tuo file di configurazione sysctl. Ciò garantisce che i pacchetti vengano elaborati correttamente dalle tabelle IP durante il filtraggio e il 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
Fase 6:Disattiva SELinux
I contenitori devono accedere al filesystem host. SELinux deve essere impostato in modalità permissiva, che disabilita efficacemente le sue funzioni di sicurezza.
Utilizzare i seguenti comandi per disabilitare SELinux:
sudo setenforce 0
sudo sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config
Passaggio 7:Disattiva SWAP
Infine, dobbiamo disabilitare SWAP per consentire al kubelet di funzionare correttamente:
sudo sed -i '/swap/d' /etc/fstab
sudo swapoff -a
Come distribuire un cluster Kubernetes
Passaggio 1:crea un cluster con kubeadm
Inizializza un cluster eseguendo il comando seguente:
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 unione kubeadm. Prendere nota della voce e utilizzarla per unire i nodi di lavoro al cluster in una fase successiva.
Fase 2:gestisci il cluster come utente normale
Per iniziare a utilizzare il cluster devi eseguirlo come utente normale digitando:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Fase 3:imposta la rete pod
Una rete Pod consente ai nodi all'interno del cluster di comunicare. Sono disponibili diverse opzioni di rete Kubernetes. Utilizza il comando seguente per installare la flanella componente aggiuntivo di rete pod:
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 flannel 8285 .
Fase 4:verifica lo stato del cluster
Verificare lo stato dei nodi immettendo il seguente comando sul server master:
sudo kubectl get nodes
Una volta che una rete pod è stata installata, puoi confermare che funziona controllando che il pod CoreDNS sia in esecuzione digitando:
sudo kubectl get pods --all-namespaces
Passaggio 5:unisci il nodo di lavoro al cluster
Come indicato nel Passaggio 1 , puoi utilizzare il kubeadm join
comando su ciascun nodo di lavoro 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 nodo di lavoro nel tuo cluster.