Kubernetes è una piattaforma open source per la gestione di applicazioni containerizzate. Ti consente di gestire, ridimensionare e distribuire automaticamente le tue applicazioni containerizzate nell'ambiente cluster. Kubernetes è sviluppato da Google.
Con Kubernetes puoi orchestrare container su più host, ridimensionare al volo le applicazioni containerizzate con tutte le risorse e disporre di un ambiente di gestione dei container centralizzato.
In questo tutorial, ti mostrerò passo dopo passo come installare e configurare Kubernetes su Ubuntu 18.04. Utilizzeremo 1 server "k8s-master" come Kubernetes Host Master e 2 server come lavoratori Kubernetes, "worker01" e "worker02".
Prerequisiti
- 3 Server Ubuntu
- 10.0.15.10 k8s-master
- 10.0.15.21 lavoratore01
- 10.0.15.22 lavoratore02
- Privilegi di root
Cosa faremo
- Installazione di Kubeadm
- Imposta host
- Installa Docker
- Disabilita SWAP
- Installa i pacchetti Kubeadm
- Inizializzazione del cluster Kubernetes
- Aggiunta di nodi di lavoro al cluster Kubernetes
- Test
Passaggio 1 - Installazione di Kubeadm
In questo primo passaggio, prepareremo quei 3 server per l'installazione di Kubernetes, quindi esegui tutti i comandi sui nodi master e di lavoro.
Prepareremo tutti i server per l'installazione di Kubernetes modificando la configurazione esistente sui server e installando anche alcuni pacchetti, inclusi docker e kubernetes stesso.
Installa host
Modifica il file hosts su tutti i server utilizzando l'editor vim.
sudo vim /etc/hosts
Incolla la configurazione degli host di seguito.
10.0.15.10 k8s-master 10.0.15.21 worker01 10.0.15.22 worker02
Salva ed esci.
Ora prova il ping di tutti i server hostname.
ping -c 3 k8s-master
ping -c 3 worker01
ping -c 3 worker02
Assicurati che tutti gli indirizzi IP vengano risolti come nome host.
Installa Docker
In questo tutorial installeremo Docker dal repository di Ubuntu.
Installa Docker usando il comando apt di seguito.
sudo apt install docker.io -y
Al termine dell'installazione, avvia il servizio Docker e abilitalo per l'avvio ogni volta all'avvio del sistema.
sudo systemctl start docker
sudo systemctl enable docker
L'installazione di Docker è stata completata.
Disabilita SWAP
Per configurare i server Kubernetes Linux, dobbiamo disabilitare lo SWAP.
Controlla l'elenco di scambio e disabilitalo.
sudo swapon -s
sudo swapoff -a
Per disabilitare lo SWAP in modo permanente, dobbiamo modificare il file '/etc/fstab'.
sudo vim /etc/fstab
Fai un commento sul tipo di partizione SWAP.
#/dev/mapper/hakase--labs--vg-swap_1 none swap sw 0 0
Salva ed esci, quindi riavvia il sistema.
sudo reboot
Installa i pacchetti Kubeadm
In questo tutorial utilizzeremo i pacchetti Kubeadm per configurare il cluster Kubernetes. Installeremo i pacchetti Kubeadm dal repository ufficiale di Kubernetes.
Installa apt-transport-https.
sudo apt install -y apt-transport-https
Aggiungi la chiave Kubernetes.
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
E aggiungi il repository Kubernetes creando un nuovo file repo.list nella directory '/etc/apt/sources.list.d'.
cd /etc/apt/
sudo vim sources.list.d/kubernetes.list
incolla il repository kubernetes di seguito.
deb http://apt.kubernetes.io/ kubernetes-xenial main
Nota:
Stiamo ancora utilizzando il repository Xenial Ubuntu 16.04 per la nostra installazione Kubeadm.
Ora aggiorna il repository e installa i pacchetti kubeadm usando i comandi apt di seguito.
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
Attendi l'installazione dei pacchetti kubeadm.
Passaggio 2:inizializzazione del cluster Kubernetes
In questo passaggio, inizializzeremo Kubernetes sul nodo 'k8s-master'. Esegui tutti i comandi in questa fase solo sul server 'k8s-master'.
Inizializza il cluster Kubernetes utilizzando il comando kubeadm riportato di seguito.
sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --apiserver-advertise-address=10.0.15.10 --kubernetes-version "1.11.0"
Nota:
- --apiserver-advertise-advertise =determina su quale indirizzo IP Kubernetes deve pubblicizzare il proprio server API.
- --pod-network-cidr =specifica l'intervallo di indirizzi IP per la rete pod. Stiamo usando la rete virtuale "flanella". Se desideri utilizzare un'altra rete pod come weave-net o calicò, modifica l'indirizzo IP dell'intervallo.
Al termine dell'inizializzazione di Kubernetes, otterrai il risultato mostrato di seguito.
Copia il 'kubeadm join ... ... ... ' comando al tuo editor di testo. Il comando verrà utilizzato per registrare nuovi nodi di lavoro nel cluster kubernetes.
Ora per utilizzare Kubernetes, dobbiamo eseguire alcuni comandi come mostrato nel risultato.
Crea una nuova directory di configurazione '.kube' e copia la configurazione 'admin.conf' dalla directory '/etc/kubernetes'.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Quindi, distribuisci la rete di flanella al cluster kubernetes utilizzando il comando kubectl.
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
La rete di flanella è stata distribuita nel cluster Kubernetes.
Attendi un minuto, quindi controlla il nodo e i pod kubernetes utilizzando i comandi seguenti.
kubectl get nodes
kubectl get pods --all-namespaces
E otterrai che il nodo "k8s-master" è in esecuzione come cluster "master" con lo stato "ready" e tutti i pod "kube-system" necessari per il cluster sono attivi e funzionanti.
L'inizializzazione e la configurazione del master cluster Kubernetes sono state completate.
Passaggio 3:aggiunta di nodi di lavoro al cluster Kubernetes
In questo passaggio, aggiungeremo due nodi di lavoro "worker01" e "worker02" al cluster Kubernetes.
Collegati al server 'worker01' ed esegui il comando kubeadm join che ottieni dall'inizializzazione del cluster.
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd
Collegati al server 'worker02' ed esegui il comando kubeadm join che ottieni dall'inizializzazione del cluster..
kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd
Attendi qualche minuto e torna al master del nodo 'k8s-master' e controlla lo stato del nodo.
kubectl get nodes
Vedrai che i nodi di lavoro "worker01" e "worker02" fanno parte del cluster Kubernetes.
Fase 4 - Test
In questo passaggio, implementeremo il server Web Nginx all'interno del cluster. Distribuiremo il server web Nginx utilizzando il modello YAML.
Crea una nuova directory denominata 'nginx' e vai a quella directory.
mkdir -p nginx/
cd nginx/
Ora crea il file YAML di Nginx Deployment 'nginx-deployment.yaml' usando l'editor vim.
sudo vim nginx-deployment.yaml
Incolla le configurazioni di seguito.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.0 ports: - containerPort: 80
Salva ed esci.
Nota:
- Stiamo creando un nuovo "Deployment" chiamato "nginx-deployment".
- Imposta l'etichetta dell'app come 'nginx' con '3' repliche.
- La 'nginx-deployment' avrà contenitori denominati 'nginx', basati sull'immagine della finestra mobile 'nginx:1.14.0', ed esporrà la porta HTTP predefinita 80.
Ora crea la distribuzione eseguendo il comando kubectl di seguito.
kubectl create -f nginx-deployment.yaml
Dopo aver creato un nuovo 'nginx-deployment', controlla l'elenco delle distribuzioni all'interno del cluster.
kubectl get deployments
kubectl describe deployment nginx-deployment
Ora controlla Kubernetes Pods e vedrai il pod 'nginx-deployment-xxx', controlla i dettagli del pod.
kubectl get pods
kubectl describe pods nginx-deployment-6cb5f7bf4f-t5xfh
Otterrai pod di distribuzione nginx con 3 repliche sui nodi di lavoro.
Successivamente, dobbiamo creare un nuovo servizio per il nostro 'nginx-deployment'.
Crea un nuovo file YAML denominato 'nginx-service.yaml'.
vim nginx-service.yaml
Incolla la configurazione qui sotto.
apiVersion: v1 kind: Service metadata: name: nginx-service labels: run: nginx-service spec: type: NodePort ports: - port: 80 protocol: TCP selector: app: nginx
Salva ed esci.
Nota:
- Stiamo creando un nuovo servizio kubernetes chiamato 'nginx-service'.
- Il tipo di servizio è 'NodePort' con la porta HTTP predefinita TargetPort 80.
- Il servizio appartiene all'app denominata 'nginx' basata sulla nostra distribuzione 'nginx-deployment'.
Crea il servizio kubernetes usando il comando kubectl di seguito.
kubectl create -f nginx-service.yaml
Ora controlla tutti i servizi disponibili sul cluster e otterrai il "servizio nginx" nell'elenco, quindi controlla i dettagli del servizio.
kubectl get service
kubectl describe service nginx-service
E vedrai il "servizio nginx" NodePort è in esecuzione sulla porta "32649".
Verifica utilizzando il comando curl su tutti i nodi di lavoro.
Sul lavoratore01.
curl worker01:32649
Vedrai la pagina predefinita di Nginx.
Sul lavoratore02.
curl worker02:32649
L'installazione e la configurazione del cluster Kubernetes su Ubuntu 18.04 sono state completate con successo.