Cómo instalar y configurar Kubernetes K8s en Ubuntu 18.04 LTS

27 feb 2021 4 min di lettura
Cómo instalar y configurar Kubernetes K8s en Ubuntu 18.04 LTS
Indice dei contenuti

Introducción

Kubernetes es una herramienta de gestión de contenedores de código abierto y gratuita. Se usa para implementar automáticamente aplicaciones basadas en contenedores en un entorno de clúster, además de para administrar contenedores Docker en hosts de clúster de Kubernetes. Kubernetes también se conoce como K8.

En esta guía, configuraremos el clúster de Kubernetes de dos nodos más simple posible. El primer nodo con el nombre de host kubernetes-master actuará como nodo principal.

El segundo nodo, con el nombre de host kubernetes-slave también ejecutará Ubuntu 18.04 será un nodo esclavo que simplemente se unirá al clúster de Kuberneets. Una vez que el clúster de Kubernetes esté en funcionamiento, se implementará un contenedor de servidor Nginx.

Si su intención es instalar Kubernetes en un servidor remoto, continúe leyendo; de lo contrario, si desea instalar Kubernetes en su computadora local, omita el primer párrafo "Conexión al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita conocer la dirección IP. También necesitará la contraseña para la autenticación.

Para conectarse al servidor como root, escriba este comando:

ssh root@IP_DEL_SERVER

A continuación, se le pedirá que ingrese la contraseña del usuario root.

Si no usa el usuario root, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie el primer parámetro:

ssh VOSTRO_UTENTE@IP_DEL_SERVER

Luego se le pedirá que ingrese su contraseña de usuario.

Ahora está conectado a su servidor, está listo para comenzar a instalar Kubernetes en Ubuntu 18.04 LTS.

Instalar Docker

Instale Docker en ambos servidores Ubuntu, luego en kubernetes-master y kubernetes-slave. Docker está presente en los repositorios oficiales de Ubuntu.

Actualice la lista de paquetes de Ubuntu:

sudo apt-get update

Para instalar Docker, simplemente escriba desde la terminal:

sudo apt install docker.io

Una vez instalado, asegúrese de que el inicio automático esté habilitado después de reiniciar el servidor:

sudo systemctl enable docker

Instalar Kubernetes

Nuevamente, necesitamos instalar Kubernetes en todos los nodos. Luego, ejecute los siguientes comandos en ambos servidores (maestro y esclavo) para instalar Kubernetes:

Agrega la clave de firma de Kubernetes:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add

Agregue el repositorio necesario para descargar Kubernetes:

sudo apt-add-repository "deb http://apt.kubernetes.io/kubernetes-xenial main"

Instalar kudeadm:

sudo apt install kubeadm

Kubernetes no funcionará si su sistema usa memoria de intercambio, por lo que debe deshabilitar la memoria de intercambio en todos sus nodos (maestro y esclavo):

sudo swapoff -a

Asegúrese de que todos los nodos tengan un nombre de host único. Luego, establezca el nombre de host en ambos nodos. El nodo principal con el nombre de host kubernetes-master:

sudo hostnamectl set-hostname kubernetes-master

El nodo secundario con nombre de host kubernetes-slave

sudo hostnamectl set-hostname kubernetes-slave

Actualización de Bash:

exec bash

Es importante configurar la fecha y la hora correctamente en todos los nodos, de lo contrario, puede haber problemas con los certificados TLS.

Configurar Kubernetes-master

Ahora estamos listos para inicializar el nodo maestro de Kubernetes. Para hacer esto, ejecute el siguiente comando en su nodo principal:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

Advertencia: se requieren al menos 2 CPU para inicializar el nodo principal, si no tiene 2 CPU, puede agregar el indicador --ignore-preflight-errors = NumCPU para continuar sin errores. No debe usarse en un servidor de producción, solo para pruebas.

Entonces:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU

Advertencia: Copie la última parte del mensaje de salida de inicialización del nodo maestro de Kubernetes, ya que se necesita un comando más adelante para acceder desde el nodo esclavo de Kubernetes.

Ejecute estos comandos sugeridos por la inicialización de Kubernetes con un usuario no root con privilegios de sudo:

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

El siguiente paso es implementar una red de pods. La red de pod se utiliza para la comunicación entre nodos dentro del clúster de Kubernetes. Para ello usaremos la red de vainas Flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Utilice el siguiente comando para confirmar el estado:

kubectl get pods --all-namespaces

Configurar esclavo de Kubernetes

Ahora podemos conectarnos con el nodo esclavo al clúster de Kubernetes. Utilice el comando kubeadm join copiado anteriormente del resultado de inicialización de kubernetes-master: Advertencia: no copie el siguiente código de ejemplo, no funcionará en su servidor.

sudo kubeadm join 10.1.1.9:6443 --token qdjnpd.5glu39uxr92xarsj --discovery-token-ca-cert-hash sha256:ed0684156c718caf425ceae6c85a56c05f7b49037cde3a2f1fd57430a4f58f89

Puede tomar varios minutos.

En el nodo principal de Kubernetes-master, emita el siguiente comando para confirmar la conexión con el nodo de kubernetes-esclavo:

kubectl get nodes

Implementar un servicio en el clúster de Kubernetes

Para verificar la implementación, puede usar Nginx en el clúster de Kubernetes. Ejecute estos comandos desde el nodo principal, kubernetes-master:

kubectl run nginx --image=nginx --port 80
kubectl expose deploy nginx --port 80 --target-port 80 --type NodePort

Ahora debería ver un nuevo contenedor acoplable Nginx en el nodo secundario, esclavo:

sudo docker ps

Para confirmar que el servicio Nginx está en funcionamiento, enumere todos los servicios disponibles en el nodo principal y use el comando curl para realizar una solicitud HTTP en la IP del clúster:

kubectl get svc

Debería recibir un mensaje de salida similar al siguiente:


NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
 kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5m52s
 nginx NodePort 10.103.44.31 <none> 80:new_nginx_port/TCP 2m50s

Para verificar que todo está funcionando, conéctese a la dirección IP del nodo secundario, kubernetes-slave, usando el puerto que se muestra en el resultado anterior. Debería ver la página de bienvenida de Nginx:


http://INDIRIZZO_IP_NODO_SLAVE:new_nginx_port

Si desea eliminar la aplicación Nginx, primero elimine el servicio Nginx del nodo raíz:

kubectl delete service nginx

Para garantizar la eliminación del servicio, emita el siguiente comando:

kubectl get services

Debería recibir un mensaje de salida similar al siguiente:


NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
 kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9m59s

Luego, para eliminar la distribución de Nginx:

kubectl delete deployment nginx

Comando de confirmación:

kubectl get deployments

Debería recibir un mensaje de salida similar al siguiente:


No resources found.

La instalación y configuración de Kubernetes en Ubuntu 18.04 LTS ha finalizado

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.