Kubernetes è uno strumento di orchestrazione di container gratuito e open source. Viene utilizzato per distribuire automaticamente applicazioni basate su container in un ambiente cluster, oltre a questo viene anche utilizzato per gestire contenitori Docker tra gli host del cluster kubernetes. Kubernetes è anche conosciuto come K8s .
In questo articolo mostrerò come installare e configurare due nodi Kubernetes (1.13) utilizzando kubeadm su sistemi Ubuntu 18.04 / 18.10. Di seguito sono riportati i dettagli della configurazione del mio laboratorio:
Userò tre sistemi Ubuntu 18.04 LTS, in cui un sistema fungerà da Kubernetes Master Node e gli altri due nodi fungeranno da Slave nod e e si unirà al cluster Kubernetes. Presumo che su questi tre sistemi sia installato un minimo 18.04 LTS.
- Kubernetes Master Node – (Nome host:k8s-master, IP:192.168.1.70, OS:Ubuntu 18.04 LTS minimo)
- Kubernetes Slave Node 1 – (Nome host:k8s-worker-node1, IP:192.168.1.80 , OS:Ubuntu 18.04 LTS minimo)
- Kubernetes Slave Node 2 – (Nome host:k8s-worker-node2, IP:192.168.1.90 , OS:Ubuntu 18.04 LTS minimo)
Nota: Il nodo slave Kubernetes è anche noto come nodo di lavoro
Passiamo ai passaggi di installazione e configurazione di k8s.
Passaggio:1) Imposta il nome host e aggiorna il file host
Accedi al nodo master e configura il suo nome host usando il comando hostnamectl
[email protetta]:~$ sudo hostnamectl set-hostname "k8s-master"[email protetta]:~$ exec bash[email protetta]:~$
Accedi ai nodi Slave/Worker e configura il loro nome host rispettivamente usando il comando hostnamectl,
[email protetta]:~$ sudo hostnamectl set-hostname k8s-worker-node1[email protetta]:~$ exec bash[email protetta]:~$[email protetta]:~$ sudo hostnamectl set-hostname k8s- worker-node2[email protetta]:~$ exec bash[email protetta]:~$
Aggiungi le seguenti righe nel file /etc/hosts su tutti e tre i sistemi,
192.168.1.70 k8s-master192.168.1.80 k8s-worker-node1192.168.1.90 k8s-worker-node2
Passaggio:2) Installa e avvia il servizio Docker sui nodi master e slave
Esegui il comando apt-get di seguito per installare Docker sul nodo Master,
[email protetta]:~$ sudo apt-get install docker.io -y
Esegui il comando apt-get di seguito per installare la finestra mobile sui nodi slave,
[email protetta]:~$ sudo apt-get install docker.io -y[email protetta]:~$ sudo apt-get install docker.io -y
Una volta installati i pacchetti Docker su tutti e tre i sistemi, avvia e abilita il servizio Docker utilizzando i comandi systemctl sottostanti, questi comandi devono essere eseguiti sui nodi master e slave.
~$ sudo systemctl start docker~$ sudo systemctl enable dockerSincronizzazione dello stato di docker.service con lo script del servizio SysV con /lib/systemd/systemd-sysv-install.Esecuzione:/lib/systemd/systemd-sysv-install enable docker ~$
Utilizza il comando Docker sottostante per verificare quale versione Docker è stata installata su questi sistemi,
~$ docker --versionDocker versione 18.06.1-ce, build e68fc7a~$
Passaggio:3) Configura il repository dei pacchetti Kubernetes sui nodi Master e Slave
Nota: Tutti i comandi in questo passaggio sono obbligatori per l'esecuzione su nodi master e slave
Installiamo prima alcuni pacchetti richiesti, eseguiamo i seguenti comandi su tutti i nodi incluso il nodo master
~$ sudo apt-get install apt-transport-https curl -y
Ora aggiungi la chiave del repository del pacchetto Kubernetes usando il seguente comando,
:~$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key addOK:~$
Ora configura il repository Kubernetes usando i seguenti comandi apt, in questo momento il repository del pacchetto Kubernetes di Ubuntu 18.04 (tessitore bionico) non è disponibile, quindi useremo il repository del pacchetto Xenial Kubernetes.
:~$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Passaggio:4) Disabilita Swap e installa Kubeadm su tutti i nodi
Nota: Tutti i comandi in questo passaggio sono obbligatori per l'esecuzione su nodi master e slave
Kubeadm è uno dei metodi più comuni utilizzati per distribuire il cluster kubernetes o, in altre parole, possiamo dire che è stato utilizzato per distribuire più nodi su un cluster kubernetes.
Secondo il sito Web ufficiale di Kubernetes, si consiglia di disabilitare lo scambio su tutti i nodi incluso il nodo master.
Esegui il comando seguente per disabilitare lo scambio temporaneo,
:~$ sudo swapoff -a
Per disabilitare lo scambio permanente, commentare il file di scambio o la voce di partizione di scambio nel file /etc/fstab.
Ora installa il pacchetto Kubeadm su tutti i nodi incluso il master.
:~$ sudo apt-get install kubeadm -y
Una volta che i pacchetti kubeadm sono stati installati correttamente, verifica la versione di kubeadm usando il comando sotto.
:~$ kubeadm versionkubeadm version:&version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019 -01-10T23:33:30Z", GoVersion:"go1.11.4", Compilatore:"gc", Piattaforma:"linux/amd64"}:~$
Passaggio:5) Inizializza e avvia il cluster Kubernetes sul nodo principale utilizzando Kubeadm
Usa il comando kubeadm seguente sul nodo principale solo per inizializzare Kubernetes
[email protetta]:~$ sudo kubeadm init --pod-network-cidr=172.168.10.0/24
Nel comando precedente puoi utilizzare la stessa rete di pod o scegliere la tua rete di pod adatta al tuo ambiente. Una volta che il comando è stato eseguito correttamente, otterremo l'output qualcosa come di seguito,
L'output sopra conferma che il nodo master è stato inizializzato correttamente, quindi per avviare il cluster esegui i comandi sotto uno dopo l'altro,
[e-mail protetta]:~$ mkdir -p $HOME/.kube[e-mail protetta]:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[e-mail protetta]:~ $ sudo chown $(id -u):$(id -g) $HOME/.kube/config[email protetta]:~$
Verifica lo stato del nodo master usando il comando seguente,
[email protected]:~$ kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s-master NotReady master 18m v1.13.2[email protected]:~$
Come possiamo vedere nell'output del comando precedente, il nostro nodo master non è pronto perché al momento non abbiamo distribuito alcun pod.
Distribuiamo la rete pod, la rete Pod è la rete attraverso la quale i nostri nodi cluster comunicheranno tra loro. Distribuiremo Flannel come nostra rete pod, Flannel fornirà la rete overlay tra i nodi del cluster.
Passaggio:6) Distribuisci Flannel come Pod Network dal nodo Master e verifica gli spazi dei nomi dei pod
Esegui il seguente kubectl comando per distribuire la rete pod dal nodo master
[email protetta]:~$ sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
L'output del comando sopra dovrebbe essere qualcosa come sotto
clusterrole.rbac.authorization.k8s.io/flannel createclusterrolebinding.rbac.authorization.k8s.io/flannel createserviceaccount/flannel createconfigmap/kube-flannel-cfg createdaemonset.extensions/kube-flannel-ds-amd64 createdaemonset.extensions/ kube-flannel-ds-arm64 createdaemonset.extensions/kube-flannel-ds-arm createdaemonset.extensions/kube-flannel-ds-ppc64le createdaemonset.extensions/kube-flannel-ds-s390x create[email protected]:~$
Ora verifica lo stato del nodo master e gli spazi dei nomi del pod usando il comando kubectl,
[email protected]:~$ sudo kubectl get nodesNAME STATUS RUOLI AGE VERSIONk8s-master Ready master 78m v1.13.2[email protected]:~$[email protected]:~$ sudo kubectl get pods --all-namespacesNAMESPACE NAME READY STATUS riavvio AGEkube sistema coredns-86c58d9df4-px4sj 1/1 attive 0 79mkube sistema coredns-86c58d9df4-wzdzk 1/1 Esecuzione 0 79mkube-system etcd-K8S-master 1/1 Esecuzione 1 79mkube sistema Kube-apiserver-K8S -Master 1/1 in esecuzione 1 79mkube-system kube-confroller-manager-k8s-master 1/1 in esecuzione 1 79mkube system kube-flannel -s-amd64-9tn8z 1/1 in esecuzione 0 14mkube system kube-proxy-cjzz2 1 /1 In esecuzione 1 79mkube-system kube-scheduler-k8s-master 1/1 In esecuzione 1 79m[email protected]:~$
Come possiamo vedere nell'output sopra, il nostro stato del nodo master è cambiato in "Pronto " e tutti gli spazi dei nomi del pod sono in esecuzione, quindi questo conferma che il nostro nodo master è in stato di integrità e pronto per formare un cluster.
Passaggio:7) Aggiungi nodi slave o di lavoro al cluster
Nota: Nel passaggio 5, output del comando kubeadm abbiamo ottenuto il comando completo che dovremo utilizzare su slave o nodo di lavoro per unirci a un cluster
Accedi al primo nodo slave (k8s-worker-node1) ed esegui il comando seguente per unirti al cluster,
[email protetta]:~$ sudo kubeadm join 192.168.1.70:6443 --token cwxswk.hbkuu4jua82o80d1 --discovery-token-ca-cert-hash sha256:ff1b0cfe5aec94f90a42bdb45d2b8bfde34006017c0e93f>36c0e3f30L'output del comando precedente dovrebbe essere qualcosa del genere,
Allo stesso modo, esegui lo stesso comando kubeadm join sul secondo nodo di lavoro,
[email protetta]:~$ sudo kubeadm join 192.168.1.70:6443 --token cwxswk.hbkuu4jua82o80d1 --discovery-token-ca-cert-hash sha256:ff1b0cfe5aec94f90a42bdb45d2b8bfde34006017c0e93f>36c0e3f30L'output di sopra dovrebbe essere qualcosa come sotto,
Ora vai al nodo master ed esegui il comando seguente per controllare lo stato del nodo master e slave
[Email Protected]:~ $ kubectl Ottieni ruoli di stato nodesName Age versionek8s-Master Ready Master 100m v1.13.2k8s-worker-node1 ready10m v1.13.2k8s-worker-node2 pronto 4m6s v1. 13.2[email protetta]:~$ Il comando sopra conferma che abbiamo aggiunto correttamente i nostri due nodi di lavoro nel cluster e il loro stato è Pronto. Ciò conclude che abbiamo installato e configurato correttamente il cluster Kubernetes a due nodi sui sistemi Ubuntu 18.04.
Ulteriori informazioni su:Distribuire pod, controller di replica e servizio in Kubernetes