Kubernetes è una piattaforma open source per la gestione di applicazioni containerizzate sviluppata da Google. Ti consente di gestire, ridimensionare e distribuire automaticamente le tue applicazioni containerizzate nell'ambiente cluster. Con Kubernetes, possiamo orchestrare i nostri container su più host, ridimensionare le applicazioni containerizzate con tutte le risorse al volo e disporre di un ambiente di gestione dei container centralizzato.
In questo tutorial, ti mostrerò passo dopo passo come installare e configurare Kubernetes su CentOS 7. Useremo 1 server "k8s-master" come Kubernetes Host Master e 2 server come nodo Kubernetes, "node01" e 'nodo02'.
Prerequisiti
- 3 server CentOS 7
- 15.00.10 k8s-master
- 15.00.21 node01
- 10.0.15.22 node02
- Privilegi di root
Cosa faremo?
- Installazione Kubernetes
- Inizializzazione del cluster Kubernetes
- Aggiunta di node01 e node02 al Cluster
- Test:crea il primo pod
Passaggio 1 - Installazione di Kubernetes
In questo primo passaggio, prepareremo quei 3 server per l'installazione di Kubernetes, quindi esegui tutti i comandi sui server master e sui nodi.
Prepareremo tutti i server per l'installazione di Kubernetes modificando la configurazione esistente sui server e installando anche alcuni pacchetti, inclusi docker-ce e kubernetes stesso.
- Configura host
Modifica il file hosts su tutti i server utilizzando l'editor vim.
vim /etc/hosts
Incolla l'elenco degli host di seguito.
10.0.15.10 k8s-master
10.0.15.21 node01
10.0.15.22 node02
Salva ed esci.
- Disabilita SELinux
In questo tutorial, non tratteremo la configurazione di SELinux per Docker, quindi la disabiliteremo.
Esegui il comando seguente per disabilitare SELinux.
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
- Abilita modulo kernel br_netfilter
Il modulo br_netfilter è necessario per l'installazione di kubernetes. Abilita questo modulo del kernel in modo che i pacchetti che attraversano il bridge vengano elaborati da iptables per il filtraggio e il port forwarding e che i pod kubernetes nel cluster possano comunicare tra loro.
Esegui il comando seguente per abilitare il modulo del kernel br_netfilter.
modprobe br_netfilter
echo '1'> /proc/sys/net/bridge/bridge-nf-call-iptables
- Disattiva SWAP
Disabilita SWAP per l'installazione di kubernetes eseguendo i seguenti comandi.
scambio -a
E poi modifica il file '/etc/fstab'.
vim /etc/fstab
Commenta l'UUID della linea di scambio come di seguito.
- Installa Docker CE
Installa l'ultima versione di Docker-ce dal repository Docker.
Installa le dipendenze del pacchetto per docker-ce.
yum install -y yum-utils device-mapper-persistent-data lvm2
Aggiungi il repository docker al sistema e installa docker-ce usando il comando yum.
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
Attendi l'installazione di Docker-ce.
- Installa Kubernetes
Aggiungi il repository kubernetes al sistema centos 7 eseguendo il comando seguente.
cat </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
Ora installa i pacchetti kubernetes kubeadm, kubelet e kubectl usando il comando yum di seguito.
yum install -y kubelet kubeadm kubectl
Al termine dell'installazione, riavvia tutti quei server.
sudo riavvio
Accedi nuovamente al server e avvia i servizi, docker e kubelet.
systemctl avvia la finestra mobile &&systemctl attiva la finestra mobile
systemctl avvia kubelet &&systemctl attiva kubelet
- Cambia il cgroup-driver
Dobbiamo assicurarci che docker-ce e kubernetes utilizzino lo stesso 'cgroup'.
Controlla docker cgroup usando il comando docker info.
informazioni sulla finestra mobile | grep -i cgroup
E vedi che la finestra mobile sta usando 'cgroupfs ' come un cgroup-driver.
Ora esegui il comando seguente per cambiare kuberetes cgroup-driver in 'cgroupfs'.
sed -i 's/cgroup-driver=systemd/cgroup-driver=cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Ricarica il sistema systemd e riavvia il servizio kubelet.
systemctl daemon-reload
systemctl riavvia kubelet
Ora siamo pronti per configurare il cluster Kubernetes.
Passaggio 2:inizializzazione del cluster Kubernetes
In questo passaggio, inizializzeremo la configurazione del cluster principale kubernetes.
Sposta la shell sul server master 'k8s-master' ed esegui il comando seguente per configurare il master kubernetes.
kubeadm init --apiserver-advertise-address=10.0.15.10 --pod-network-cidr=10.244.0.0/16
Nota:
--apiserver-advertise-address =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 come di seguito.
Nota:
Copia il 'kubeadm join ... ... ... ' comando al tuo editor di testo. Il comando verrà utilizzato per registrare nuovi nodi nel cluster kubernetes.
Ora per utilizzare Kubernetes, dobbiamo eseguire alcuni comandi come nel risultato.
Crea una nuova directory di configurazione '.kube' e copia la configurazione 'admin.conf'.
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 il nodo "k8s-master" in esecuzione come cluster "master" con lo stato "pronto" e otterrai tutti i pod necessari per il cluster, incluso "kube-flannel-ds" per il pod di rete configurazione.
Assicurati che lo stato di tutti i pod del sistema kube sia "in esecuzione".
L'inizializzazione e la configurazione del master cluster Kubernetes sono state completate.
Passaggio 3:aggiunta di node01 e node02 al cluster
In questo passaggio, aggiungeremo node01 e node02 per entrare a far parte del cluster "k8s".
Connettiti al server node01 ed esegui il comando kubeadm join come abbiamo copiato in alto.
kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c6>
Connettiti al server node02 ed esegui il comando kubeadm join come abbiamo copiato in alto.
kubeadm join 10.0.15.10:6443 --token vzau5v.vjiqyxq26lzsf28e --discovery-token-ca-cert-hash sha256:e6d046ba34ee03e7d55e1f5ac6d2de09fd6d7e6959d16782ef0778794b94c6>
Attendi qualche minuto e torna al server del cluster master 'k8s-master' controlla i nodi e i pod usando il comando seguente.
kubectl get nodes
kubectl get pods --all-namespacesOra otterrai node01 e node02 è stato aggiunto al cluster con lo stato "ready".
node01 e node02 sono stati aggiunti al cluster kubernetes.
Fase 4 - Test Crea il primo pod
In questo passaggio, eseguiremo un test distribuendo il pod Nginx nel cluster kubernetes. Un pod è un gruppo di uno o più contenitori con spazio di archiviazione condiviso e rete che viene eseguito sotto Kubernetes. Un Pod contiene uno o più contenitori, ad esempio il contenitore Docker.
Accedi al server "k8s-master" e crea una nuova distribuzione denominata "nginx" utilizzando il comando kubectl.
kubectl crea distribuzione nginx --image=nginxPer vedere i dettagli della sepcificazione della distribuzione 'nginx', esegui il comando seguente.
kubectl descrive il deployment nginxE otterrai le specifiche di distribuzione del pod nginx.
Successivamente, esporremo il pod nginx accessibile tramite Internet. E per questo dobbiamo creare un nuovo servizio NodePort.
Esegui il comando kubectl di seguito.
kubectl crea il servizio nodeport nginx --tcp=80:80
Assicurati che non ci siano errori. Ora controlla il servizio nginx nodeport e l'IP usando il comando kubectl di seguito.
kubectl ottiene pod
kubectl ottiene svc
Ora otterrai che il pod nginx è ora in esecuzione con l'indirizzo IP del cluster "10.160.60.38" sulla porta 80 e l'indirizzo IP principale del nodo "10.0.15.x" sulla porta "30691".
Dal server "k8s-master" esegui il comando curl sotto.
nodo curl01:30691
nodo curl02:30691
Il Pod Nginx è stato ora distribuito nel cluster Kubernetes ed è accessibile tramite Internet.
Ora accedi dal browser web.
http://10.0.15.10:30691/
E otterrai la pagina predefinita di Nginx.
Sul server node02 - http://10.0.15.11:30691/
L'installazione e la configurazione del cluster Kubernetes su CentOS 7 sono state completate correttamente.