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

Kubernetes es una plataforma de código abierto para gestionar aplicaciones en contenedores. Te permite gestionar, escalar y desplegar automáticamente tus aplicaciones en contenedores en el entorno de clústeres. Kubernetes está desarrollado por Google.

Con Kubernetes, puedes orquestar contenedores en varios hosts, escalar las aplicaciones en contenedores con todos los recursos sobre la marcha, y tener un entorno de gestión de contenedores centralizado.

En este tutorial, te mostraré paso a paso cómo instalar y configurar Kubernetes en Ubuntu 18.04. Utilizaremos 1 servidor ‘k8s-master’ como maestro de Kubernetes, y 2 servidores como trabajadores de Kubernetes, ‘worker01’ y ‘worker02’.

Requisitos previos

  • 3 servidores Ubuntu
    • 10.0.15.10 k8s-master
    • 10.0.15.21 worker01
    • 10.0.15.22 worker02
  • Privilegios de root

Qué vamos a hacer

  1. Instalación de Kubeadm
    1. Configurar los Hosts
    2. Instalar Docker
    3. Desactivar SWAP
    4. Instalar paquetes Kubeadm
  2. Inicialización del Clúster Kubernetes
  3. Añadir nodos de trabajo al clúster de Kubernetes
  4. Prueba de

Paso 1 – Instalación de Kubeadm

En este primer paso, prepararemos los 3 servidores para la instalación de Kubernetes, por lo que ejecutaremos todos los comandos en los nodos maestro y trabajador.

Prepararemos todos los servidores para la instalación de Kubernetes cambiando la configuración existente en los servidores, y también instalando algunos paquetes, incluyendo docker y el propio kubernetes.

Configurar los Hosts

Edita el archivo hosts en todos los servidores utilizando el editorvim.

sudo vim /etc/hosts

Pega la configuración de hosts a continuación.

10.0.15.10  k8s-master
10.0.15.21  worker01
10.0.15.22  worker02

Guarda y sal.

Ahora haz una prueba de ping a todos los nombres de host de los servidores.

ping -c 3 k8s-master
ping -c 3 worker01
ping -c 3 worker02

Asegúrate de que todas las direcciones IP se resuelven como un nombre de host.

Instalar kubeadm

Instalar Docker

En este tutorial, instalaremos Docker desde el repositorio de Ubuntu.

Instala Docker utilizando el comando apt que aparece a continuación.

sudo apt install docker.io -y

Una vez completada la instalación, inicia el servicio Docker y habilítalo para que se inicie siempre al arrancar el sistema.

sudo systemctl start docker
sudo systemctl enable docker

La instalación de Docker se ha completado.

Instalar Docker

Desactiva el SWAP

Para configurar los servidores Linux Kubernetes, necesitamos desactivar el SWAP.

Comprueba la lista de intercambio y desactívalo.

sudo swapon -s
sudo swapoff -a

Para desactivar el SWAP de forma permanente, tenemos que editar el archivo ‘/etc/fstab’.

sudo vim /etc/fstab

Haz un comentario sobre el tipo de partición SWAP.

#/dev/mapper/hakase--labs--vg-swap_1 none            swap    sw              0       0

Desactivar el espacio de intercambio

Guarda y sal, luego reinicia el sistema.

sudo reboot

Instalar los paquetes Kubeadm

En este tutorial, utilizaremos los paquetes Kubeadm para configurar el clúster de Kubernetes. Instalaremos los paquetes Kubeadm desde el repositorio oficial de Kubernetes.

Instala apt-transport-https.

sudo apt install -y apt-transport-https

Añade la Clave de Kubernetes.

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

Y añade el Repositorio de Kubernetes creando un nuevo archivo repo.list en el directorio ‘/etc/apt/sources.list.d’.

cd /etc/apt/
sudo vim sources.list.d/kubernetes.list

pega el repositorio de kubernetes abajo.

deb http://apt.kubernetes.io/ kubernetes-xenial main

Nota:

Seguimos utilizando el repositorio Xenial de Ubuntu 16.04 para nuestra instalación de Kubeadm.

Ahora actualiza el repositorio e instala los paquetes kubeadm utilizando los comandos apt que aparecen a continuación.

sudo apt update
sudo apt install -y kubeadm kubelet kubectl

Espera a que se instalen los paquetes kubeadm.

Instalar el paquete kubeadm

Paso 2 – Inicialización del Cluster Kubernetes

En este paso, inicializaremos Kubernetes en el nodo ‘k8s-master’. Ejecuta todos los comandos de esta etapa sólo en el servidor ‘k8s-master’.

Inicializa el clúster de Kubernetes utilizando el comando kubeadm que aparece a continuación.

sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --apiserver-advertise-address=10.0.15.10 --kubernetes-version "1.11.0"

Ten en cuenta:

  • –apiserver-advertise-address = determina la dirección IP en la que Kubernetes debe anunciar su servidor API.
  • –pod-network-cidr = especifica el rango de direcciones IP para la red del pod. Nosotros estamos utilizando la red virtual «flannel». Si quieres utilizar otra red de pods, como weave-net o calico, cambia el rango de direcciones IP.

Cuando se complete la inicialización de Kubernetes, obtendrás el resultado que se muestra a continuación.

Inicializar el clúster de Kubernetes

Copia el comando‘kubeadm join … … …‘ en tu editor de texto. El comando se utilizará para registrar nuevos nodos trabajadores en el clúster de Kubernetes.

Ahora, para utilizar Kubernetes, necesitamos ejecutar algunos comandos como se muestra en el resultado.

Crea un nuevo directorio de configuración ‘.kube’ y copia la configuración ‘admin.conf’ del directorio ‘/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

A continuación, despliega la red flannel en el clúster kubernetes mediante el comando kubectl.

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

La red flannel se ha desplegado en el clúster Kubernetes.

Desplegar la red de franela

Espera un minuto y luego comprueba el nodo y los pods de kubernetes utilizando los siguientes comandos.

kubectl get nodes
kubectl get pods --all-namespaces

Y obtendrás que el nodo «k8s-master» se está ejecutando como clúster «maestro» con el estado «listo», y todos los pods «kube-system» que se necesitan para el clúster están en marcha.

obtener lista de nodos

La inicialización y configuración del clúster Kubernetes maestro se ha completado.

Paso 3 – Añadir nodos trabajadores al clúster de Kubernetes

En este paso, añadiremos dos nodos trabajadores ‘worker01’ y ‘worker02’ al Cluster de Kubernetes.

Conéctate al servidor ‘worker01’ y ejecuta el comando kubeadm join que obtienes de la inicialización del clúster.

kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd

Añadir nodos de trabajo al clúster de Kubernetes

Conéctate al servidor ‘worker02’ y ejecuta el comando kubeadm join que obtienes de la inicialización del clúster..

kubeadm join 10.0.15.10:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd

Añade un segundo nodo trabajador

Espera unos minutos y vuelve al nodo maestro ‘k8s-master’ y comprueba el estado del nodo.

kubectl get nodes

Verás que los nodos trabajadores ‘worker01’ y ‘worker02’ forman parte del Cluster Kubernetes.

Lista de nodos

Paso 4 – Prueba

En este paso, desplegaremos el servidor web Nginx dentro del clúster. Desplegaremos el servidor web Nginx utilizando la plantilla YAML.

Crea un nuevo directorio llamado ‘nginx’ y ve a ese directorio.

mkdir -p nginx/
cd nginx/

Ahora crea el archivo YAML de despliegue de Nginx ‘nginx-deployment.yaml’ utilizando el editor vim.

sudo vim nginx-deployment.yaml

Pega las configuraciones de abajo.

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

Guarda y sal.

Nota:

  • Estamos creando un nuevo ‘Deployment’ llamado ‘nginx-deployment’.
  • Configura la etiqueta de la aplicación como ‘nginx’ con ‘3’ réplicas.
  • El ‘despliegue-nginx’ tendrá contenedores llamados ‘nginx’, basados en la imagen docker ‘nginx:1.14.0’, y expondrá el puerto HTTP 80 por defecto.

Ahora crea el despliegue ejecutando el siguiente comando kubectl.

kubectl create -f nginx-deployment.yaml

Después de crear un nuevo ‘nginx-deployment’, comprueba la lista de despliegues dentro del clúster.

kubectl get deployments
kubectl describe deployment nginx-deployment

Prueba de Kubernetes

Ahora comprueba Kubernetes Pods y verás el pod ‘nginx-deployment-xxx’, comprueba los detalles del pod.

kubectl get pods
kubectl describe pods nginx-deployment-6cb5f7bf4f-t5xfh

Obtendrás los pods nginx-deployment con 3 réplicas en los nodos trabajadores.

Consigue vainas

A continuación, tenemos que crear un nuevo servicio para nuestro ‘nginx-deployment’.

Crea un nuevo archivo YAML llamado ‘nginx-service.yaml’.

vim nginx-service.yaml

Pega la configuración de abajo.

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    run: nginx-service
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
  selector:
    app: nginx

Guarda y sal.

Nota:

  • Estamos creando un nuevo servicio kubernetes llamado ‘nginx-service’.
  • El tipo de servicio es ‘NodePort’ con el puerto HTTP predeterminado 80.
  • El servicio pertenece a la aplicación llamada ‘nginx’ basada en nuestro despliegue ‘nginx-deployment’.

Crea el servicio kubernetes utilizando el comando kubectl que aparece a continuación.

kubectl create -f nginx-service.yaml

Ahora comprueba todos los servicios disponibles en el clúster y obtendrás el ‘nginx-service’ en la lista, luego comprueba los detalles del servicio.

kubectl get service
kubectl describe service nginx-service

Configurar el servicio nginx

Y verás que el NodePort de ‘nginx-service’ se está ejecutando en el puerto ‘32649’.

Comprueba utilizando el comando curl a todos los nodos trabajadores.

En el worker01.

curl worker01:32649

Probar nginx con curl

Verás la página por defecto de Nginx.

En el worker02.

curl worker02:32649

Probar el segundo trabajador con rizo

La instalación y configuración del Cluster Kubernetes en Ubuntu 18.04 se ha completado con éxito.

Referencia

También te podría gustar...