Kubernetes és una plataforma gratuïta i de codi obert per administrar les aplicacions en contenidors. T'ajuda a administrar, escalar i desplegar automàticament les teves aplicacions en contenidors en un entorn agrupat. Ha estat desenvolupat per Google i el manté Cloud Native Computing Foundation. S'està convertint en la plataforma més popular per desplegar i administrar programari al núvol. Kubernetes fa servir una arquitectura mestre-treballador, en què el node mestre és responsable d'administrar i controlar tots els treballadors.
En aquest tutorial, et mostrem com desplegar un clúster de Kubernetes de dos nodes a CentOS 8.
Requisits previs
- Dos servidors que executin CentOS 8 amb un mínim de 4 GB de RAM.
- Una contrasenya de root configurada en tots dos servidors.
Comencem
Per començar, hauràs de configurar la resolució del nom d'amfitrió als nodes mestre i treballador perquè tots dos nodes puguin comunicar-se entre si utilitzant el nom d'amfitrió.
Edita el fitxer /etc/hosts en tots dos nodes:
# nano /etc/hostsAfegeix les línies següents:
your-masternode-ip master
your-workernode-ip workerDesa i tanca el fitxer quan hagis acabat.
A continuació, hauràs de deshabilitar la partició Swap per iniciar el clúster de Kubernetes. Pots deshabilitar-la amb l'ordre següent:
# swapoff -aInstal·la Docker
Per continuar, hauràs de instal·lar Docker en tots dos servidors. Per defecte, Docker no està inclòs al repositori per defecte de CentOS 8.
Per això, afegeix el repositori de Docker amb l'ordre següent:
# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo Un cop afegit el repositori, instal·la CE Docker amb l'ordre següent:
# dnf install docker-ce --nobest Després d'instal·lar Docker, inicia'l i habilita'n l'inici en reiniciar el sistema:
# systemctl enable --now docker Per continuar, verifica l'estat de Docker amb l'ordre següent:
# systemctl status docker Hauries d'obtenir el resultat següent:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-06-12 01:37:05 EDT; 10s ago
Docs: https://docs.docker.com
Main PID: 2209 (dockerd)
Tasks: 10
Memory: 47.1M
CGroup: /system.slice/docker.service
└─2209 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Per continuar, comprova la versió de Docker amb l'ordre següent:
# docker --versionHauries d'obtenir el resultat següent:
Docker version 20.10.7, build f0df350
En aquest punt, Docker s'ha instal·lat en tots dos nodes.
Instal·la Kubernetes als nodes mestre i treballador
Per continuar, hauràs de instal·lar Kubernetes en tots dos servidors.
Primer, crea un repositori per a Kubernetes amb l'ordre següent:
# nano /etc/yum.repos.d/kubernetes.repoI després afegeix les línies següents:
[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
exclude=kubelet kubeadm kubectlDesa i tanca el fitxer i després actualitza el repositori amb l'ordre següent:
# dnf upgrade -yA continuació, instal·la totes les eines de Kubernetes amb l'ordre següent:
# dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetesEn aquest punt, Kubernetes ja està instal·lat en tots dos nodes.
Avís
Si estàs fent servir un servidor de Clouding per seguir aquest tutorial, aquesta part no és necessària, ja que la imatge de Clouding ve sense el tallafoc activat per defecte.
Configura el tallafoc
A continuació, hauràs de habilitar tots els ports necessaris a través del tallafoc en tots dos nodes.
Pots fer-ho amb l'ordre següent:
# firewall-cmd --zone=public --permanent --add-port=6443/tcp
# firewall-cmd --zone=public --permanent --add-port=2379-2380/tcp
# firewall-cmd --zone=public --permanent --add-port=10250/tcp
# firewall-cmd --zone=public --permanent --add-port=10251/tcp
# firewall-cmd --zone=public --permanent --add-port=10252/tcp
# firewall-cmd --zone=public --permanent --add-port=10255/tcpA continuació, torna a carregar el tallafoc per aplicar els canvis:
# firewall-cmd --reloadDesprés, configura el pont amb l'ordre següent:
# modprobe br_netfilter
# echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptablesConfigura el clúster de Kubernetes al node mestre
Primer, configura kubeadm amb l'ordre següent:
# kubeadm config images pullHauries de veure el resultat següent:
[config/images] Pulled k8s.gcr.io/kube-apiserver:v1.21.1
[config/images] Pulled k8s.gcr.io/kube-controller-manager:v1.21.1
[config/images] Pulled k8s.gcr.io/kube-scheduler:v1.21.1
[config/images] Pulled k8s.gcr.io/kube-proxy:v1.21.1
[config/images] Pulled k8s.gcr.io/pause:3.4.1
[config/images] Pulled k8s.gcr.io/etcd:3.4.13-0
[config/images] Pulled k8s.gcr.io/coredns/coredns:v1.8.0
A continuació, inicialitza el clúster de Kubernetes amb l'ordre següent:
# kubeadm init --pod-network-cidr=192.168.0.0/16Hauries d'obtenir el resultat següent:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 45.58.32.52:6443 --token 95maq6.dbn7ooiz50eol73y \
--discovery-token-ca-cert-hash sha256:d705a3ab93e6cc3c38585bfa33717f6369f99340a09e03a4030aa4479db7ee1e
Anota el testimoni tal com es mostra al resultat de més amunt. El necessitaràs per al node treballador.
Després, crea el directori i el fitxer de configuració següents:
# mkdir -p $HOME/.kube
# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# chown $(id -u):$(id -g) $HOME/.kube/configA continuació, desplega una xarxa de pods amb l'ordre següent:
# kubectl apply -f https://docs.projectcalico.org/manifests/calico.yamlEspera una estona i comprova el teu clúster de Kubernetes amb l'ordre següent:
# kubectl get nodesHauries de veure que el teu node mestre està habilitat i en execució:
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 2m51s v1.21.1
Configura Kubernetes al node treballador
El clúster de Kubernetes té un o més nodes treballadors, de manera que hauràs d'anar al node treballador i unir-lo al node mestre.
Utilitza l'ordre següent per unir el node treballador al clúster de Kubernetes.
# kubeadm join [IP_Pública]:6443 --token 95maq6.dbn7ooiz50eol73y --discovery-token-ca-cert-hash sha256:d705a3ab93e6cc3c38585bfa33717f6369f99340a09e03a4030aa4479db7ee1eHauries d'obtenir el resultat següent:
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
Ara torna al node mestre i verifica el clúster de Kubernetes:
# kubectl get nodesHauries de veure dos nodes amb l'estat "Ready":
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 5m54s v1.21.1
worker Ready 59s v1.21.1
Si vols restablir tota la configuració i tornar a començar el procés, utilitza l'ordre següent als nodes mestre i treballador:
# kubeadm reset
# rm -rf /etc/cni/net.dConclusió
Enhorabona! Has desplegat correctament el clúster de Kubernetes a CentOS 8.
Ara pots desplegar les teves aplicacions en un entorn agrupat.