GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come distribuire Nginx Load Balancing su Kubernetes Cluster su Ubuntu 18.04 LTS

Kubernetes è un sistema di orchestrazione di container gratuito e open source che può essere utilizzato per distribuire e gestire container. È stato sviluppato da Google e progettato appositamente per la scalabilità automatica e le implementazioni automatizzate. Kubernetes può essere eseguito su qualsiasi infrastruttura cloud e bare metal. Kubernetes ti consente di distribuire più applicazioni su un cluster di nodi. Kubernetes viene fornito con un ricco set di funzionalità tra cui autoriparazione, scalabilità automatica, bilanciamento del carico, esecuzione batch, ridimensionamento orizzontale, rilevamento dei servizi, orchestrazione dello storage e molto altro.

In questo tutorial impareremo come impostare il bilanciamento del carico Nginx con Kubernetes su Ubuntu 18.04.

Requisiti

  • Due server con Ubuntu 18.04 installato.
  • Minimo 2 GB di RAM installati su ciascun server.
  • Su entrambi i server è configurata una password di root.

Per iniziare

Innanzitutto, dovrai aggiornare entrambi i server con l'ultima versione stabile. Puoi aggiornarli eseguendo il seguente comando:

apt-get update -y
apt-get upgrade -y

Una volta aggiornati entrambi i server, riavviali per applicare tutte le modifiche.

Per impostazione predefinita, Kuberenetes non supporta la memoria di scambio e non funzionerà se lo scambio è attivo. Quindi dovrai disabilitare la memoria di scambio su entrambi i server.

Per disabilitare temporaneamente la memoria di scambio, eseguire il comando seguente:

scambio -a

Per disabilitare permanentemente la memoria di scambio, apri il file /etc/fstab:

nano /etc/fstab

Commenta l'ultima riga:

# /etc/fstab:informazioni statiche sul file system.
#
# usa 'blkid' per stampare l'identificatore univoco universale per un
# dispositivo; questo può essere usato con uuid=come un modo più robusto per denominare i dispositivi
# che funziona anche se i dischi vengono aggiunti e rimossi. vedere fstab(5).
#
# <file system> <punto di montaggio> <tipo> <opzioni> <scarica> <pass>
# / era su /dev/sda1 durante l'installazione
# lo scambio era su /dev/sda4 durante l'installazione#UUID=65se21r-1d3t-3263-2198-e564c275e156 nessuno swap sw 0 0

Salva e chiudi il file. Quindi, esegui il comando seguente per applicare le modifiche alla configurazione:

montare -a

Successivamente, dovrai impostare la risoluzione del nome host su entrambi i server. Quindi, ogni server può comunicare tra loro utilizzando il nome host.

Per farlo, apri il file /etc/hosts usando il tuo editor preferito:

nano /etc/hosts

Aggiungi le seguenti righe:

192.168.0.103 master192.168.0.100 slave

Salva e chiudi il file, quando hai finito. Quindi, vai al passaggio successivo.

Installa Docker e Kubernetes

Successivamente, dovrai installare Docker e lo strumento Kubernetes kubelet, kubeadm e kubectl su entrambi i server.

Innanzitutto, installa i pacchetti richiesti e aggiungi la chiave GPG con il seguente comando:

apt-get install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

Quindi, aggiungi il repository Docker CE su entrambi i server eseguendo il comando seguente:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Quindi, aggiorna il repository e installa Docker CE con il seguente comando:

apt-get update -y
apt-get install docker-ce -y

Una volta completata l'installazione, verifica lo stato di Docker CE con il seguente comando:

docker di stato systemctl

Dovresti vedere il seguente output:

? docker.service - Motore del contenitore dell'applicazione Docker Caricato:caricato (/lib/systemd/system/docker.service; abilitato; preimpostazione del fornitore:abilitato) Attivo:attivo (in esecuzione) da ven 2019-07-19 07:05:50 UTC; 1h 24min fa Documenti:https://docs.docker.com PID principale:3619 (dockerd) Compiti:8 CGroup:/system.slice/docker.service ??3619 /usr/bin/dockerd -H fd:// - -containerd=/run/containerd/containerd.sockJul 19 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.574491681Z" level=warning msg="Il tuo kernel non supporta la memoria di scambio limit"Jul 19 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.575196691Z" level=warning msg="Il tuo kernel non supporta cgroup rt period"Jul 19 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.575733336Z" level=warning msg="Il tuo kernel non supporta cgroup rt runtime"Jul 19 07:05:48 master dockerd[3619]:time ="2019-07-19T07:05:48.582517104Z" level=info msg="Caricamento contenitori:inizio."Jul 19 07:05:49 master dockerd[3619]:time="2019-07-19T07:05:49.391255541 Z" level=info msg="Il bridge predefinito (docker0) è assegnato con un IP addJul 19 07:05:49 master dockerd[3619]:time="2019-07-19T07:05:49.681478822Z" level=info msg="Caricamento con tainers:done."Jul 19 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.003776717Z" level=info msg="Docker daemon" commit=0dd43dd graphdriver(s)=overlaJul 19 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.009892901Z" level=info msg="Daemon ha completato l'inizializzazione"Jul 19 07:05:50 master systemd[1]:Avviato Docker Application Container Engine.Jul 19 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.279284258Z" level=info msg="API listen on /var/run/docker.sock "

I pacchetti Kubernetes non sono disponibili nel repository predefinito di Ubuntu 18.04. Quindi, dovrai aggiungere il repository Kubernetes su entrambi i server.

Puoi aggiungerlo con i seguenti comandi:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo 'deb http://apt.kubernetes.io/ kubernetes-xenial main' | tee /etc/apt/sources.list.d/kubernetes.list

Quindi, aggiorna il repository e installa i pacchetti Kubernetes con il comando seguente:

apt-get install kubelet kubeadm kubectl -y

Una volta installati tutti i pacchetti, puoi procedere alla configurazione del server Master.

Configura Kubernetes Master Server

Innanzitutto, dovrai inizializzare il tuo cluster con il suo indirizzo IP privato sul server principale:

Puoi farlo con il comando kubeadm:

kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.0.103

Una volta che il Cluster è stato inizializzato correttamente, dovresti vedere il seguente output:

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/configOra dovresti distribuire una rete pod nel cluster.Esegui "kubectl apply -f [podnetwork].yaml" con una delle opzioni elencate su:https://kubernetes.io/docs/concepts/cluster-administration/addons/Quindi puoi unirti a qualsiasi numero di nodi di lavoro eseguendo quanto segue su ciascuno come root:kubeadm join 192.168.0.103:6443 --token zsyq2w.c676bxzjul3upd7u \ --discovery-token-ca-cert-hash sha256:a720ae35d472162177f6ee39de758a5de40043f53e4a3e00aefd6f9832f3436c 

Successivamente, dovrai configurare lo strumento kubectl sul tuo server principale. Puoi farlo con il seguente comando:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g ) $HOME/.kube/config

Successivamente, dovrai distribuire una Container Networking Interface (CNI) sul tuo server. Perché il cluster non ha un CNI.

Puoi distribuire la CNI al tuo cluster con il seguente comando:

kubectl apply -f https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml

Dovresti vedere il seguente output:

configmap/calico-config createdaemonset.extensions/calico-etcd createservice/calico-etcd createdaemonset.extensions/calico-node createdeployment.extensions/calico-kube-controllers createdeployment.extensions/calico-policy-controller createclusterrolebinding.rbac.authorization .k8s.io/calico-cni-plugin createclusterrole.rbac.authorization.k8s.io/calico-cni-plugin createserviceaccount/calico-cni-plugin createclusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers createclusterrole.rbac .authorization.k8s.io/calico-kube-controllers creatiserviceaccount/calico-kube-controllers creati

Ora puoi controllare i tuoi spazi dei nomi eseguendo il seguente comando:

kubectl ottiene gli spazi dei nomi

Se tutto va bene, dovresti vedere il seguente output:

NAME STATUS AGEdefault Attivo 4hkube-public Attivo 4hkube-system Attivo 4h

Quindi, verifica se il nodo master ora funziona correttamente con il seguente comando:

kubectl ottiene nodi

Dovresti vedere il seguente output:

nome stato ruoli età versionmaster Ready master 12m v1.15.3

Aggiungi slave al cluster Kubernetes

Quindi, accedi al tuo server slave ed esegui il seguente comando per aggiungere lo slave al cluster Kubernetes:

kubeadm join 192.168.0.103:6443 --token zsyq2w.c676bxzjul3upd7u --discovery-token-ca-cert-hash sha256:a720ae35d472162177f6ee39de758a5de40043f53e4a3e00aefd6f983c34 

Quindi, vai al server master e controlla se lo slave è stato aggiunto al tuo cluster Kubernetes con il seguente comando:

kubectl ottiene nodi

Dovresti vedere il seguente output:

nome stato ruoli età versionemaster ready master 25m v1.15.3slave ready 2m v1.15.3

Una volta terminato, puoi procedere al passaggio successivo.

Distribuisci NGINX sul cluster Kubernetes

Il cluster Kubernetes è ora installato, configurato e funziona correttamente. È ora di distribuire Nginx sul cluster Kubernetes.

Vai al server principale e crea una distribuzione Nginx con il seguente comando:

kubectl crea distribuzione nginx --image=nginx

Ora puoi elencare la distribuzione di Nginx con il seguente comando:

kubectl ottiene implementazioni

Dovresti vedere il seguente output:

NOME PRONTO AGGIORNATO DISPONIBILE AGEnginx 1/1 1 1 99s

Una volta che Nginx è stato distribuito, l'applicazione può essere esposta con il seguente comando:

kubectl crea il servizio nodeport nginx --tcp=80:80

È ora possibile visualizzare un nuovo indirizzo Service e ClusterIP assegnato con il comando seguente:

kubectl ottiene svc

Dovresti vedere il seguente output:

NOME TIPO CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.152.183.1  443/TCP 15mnginx ClusterIP 10.152.183.199  80:32456/TCP 60s  

Congratulazioni! hai distribuito con successo Nginx sul cluster Kubernetes. Puoi anche aggiungere facilmente un altro nodo al cluster Kubernetes. Per ulteriori informazioni, fare riferimento al documento ufficiale di Kubernetes su Kubernetes Doc. Sentiti libero di chiedermi se hai domande.


Ubuntu
  1. Come distribuire il proxy inverso NGINX su Docker

  2. Come distribuire il cluster Redis su Kubernetes

  3. Come installare Kubernetes su Ubuntu 18.04

  4. Come distribuire Modsecurity con Nginx su Ubuntu 20.04 LTS

  5. Distribuisci Modsecurity con Nginx su Ubuntu 20.04 LTS

Come installare Docker su Ubuntu 18.04 LTS

Come installare Nginx su Ubuntu 18.04 LTS

Come installare Kubernetes su Ubuntu 18.04 LTS

Come installare Docker su Ubuntu 20.04 LTS

Come installare Kubernetes su Ubuntu 20.04 LTS

Come installare Kitematic su Ubuntu 20.04 LTS