GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Kubernetes en Ubuntu 20.04 Focal Fossa Linux

Kubernetes es un software líder en orquestación de contenedores. Kubernetes funciona mediante la gestión de clústeres, que es simplemente un conjunto de hosts destinados a ejecutar aplicaciones en contenedores. Para tener un clúster de Kubernetes, necesita un mínimo de dos nodos:un nodo maestro y un nodo trabajador . Por supuesto, puede expandir el clúster agregando tantos nodos trabajadores como necesite.

En esta guía, implementaremos un clúster de Kubernetes que consta de dos nodos, ambos con Ubuntu 20.04 Focal Fossa. Tener dos nodos en nuestro clúster es la configuración más básica posible, pero podrá escalar esa configuración y agregar más nodos si lo desea.

En este tutorial aprenderás:

  • Cómo instalar Docker
  • Cómo instalar Kubernetes
  • Cómo configurar un nodo maestro y trabajador
  • Cómo unir un nodo trabajador a un clúster de Kubernetes
  • Cómo implementar Nginx (o cualquier aplicación en contenedor) en un clúster de Kubernetes

Implementación de Kubernetes en Ubuntu 20.04 Focal Fossa

Escenario

Antes de sumergirnos, establezcamos los detalles de nuestro escenario. Como se mencionó anteriormente, nuestro clúster tendrá dos nodos y ambos ejecutarán Ubuntu 20.04 Focal Fossa. Uno será el nodo maestro y se puede identificar fácilmente con su nombre de host de kubernetes-master . El segundo nodo será nuestro nodo trabajador y tener un nombre de host de kubernetes-worker .

El nodo maestro implementará un clúster de Kubernetes y el nodo trabajador simplemente se unirá a él. Dado que los clústeres de Kubernetes están diseñados para ejecutar software en contenedores, una vez que tengamos nuestro clúster en funcionamiento, implementaremos un contenedor de servidor Nginx como prueba de concepto.

Instalar Docker

Ambos nodos deberán tener instalado Docker, ya que Kubernetes depende de él. Abra una terminal y escriba los siguientes comandos tanto en el nodo principal como en el trabajador para instalar Docker:

$ sudo apt update
$ sudo apt install docker.io

Una vez que Docker haya terminado de instalar, use los siguientes comandos para iniciar el servicio y asegurarse de que se inicie automáticamente después de cada reinicio:

$ sudo systemctl start docker
$ sudo systemctl enable docker

Instalar Kubernetes

Ahora estamos listos para instalar Kubernetes. Al igual que todos los demás comandos hasta este punto, asegúrese de hacerlo en ambos nodos. En su maestro y trabajador de Kubernetes, primero instale apt-transport-https paquete, que nos permitirá utilizar http y https en los repositorios de Ubuntu. Ahora también es un buen momento para instalar curl ya que lo necesitaremos en un momento:

$ sudo apt install apt-transport-https curl

A continuación, agregue la clave de firma de Kubernetes a ambos sistemas:

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

A continuación, agregaremos el repositorio de paquetes de Kubernetes. Tenga en cuenta que, en el momento de escribir este artículo, Ubuntu 16.04 Xenial Xerus es el último repositorio de Kubernetes disponible. Eventualmente, esto debería ser reemplazado por Ubuntu 20.04 Focal Fossa, y el siguiente comando se puede actualizar desde xenial a focal .

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

Ahora podemos instalar Kubernetes:

$ sudo apt install kubeadm kubelet kubectl kubernetes-cni

Desactivar memoria de intercambio

Kubernetes se negará a funcionar si su sistema usa memoria de intercambio. Antes de continuar, asegúrese de que el nodo maestro y trabajador tengan la memoria de intercambio deshabilitada con este comando:

$ sudo swapoff -a

Ese comando deshabilitará la memoria de intercambio hasta que sus sistemas se reinicien, así que para que este cambio persista, use nano o su editor de texto favorito para abrir este archivo:

$ sudo nano /etc/fstab

Dentro de este archivo, comente el /swapfile línea precediéndola de un # símbolo, como se ve a continuación. Luego, cierre este archivo y guarde los cambios.

Agregue # para comentar la línea del archivo de intercambio

Establecer nombres de host

Luego, asegúrese de que todos sus nodos tengan un nombre de host único. En nuestro escenario, usamos los nombres de host kubernetes-master y kubernetes-worker para diferenciar fácilmente a nuestros anfitriones e identificar sus roles. Use el siguiente comando si necesita cambiar sus nombres de host:

$ sudo hostnamectl set-hostname kubernetes-master

Y en el nodo trabajador:

$ sudo hostnamectl set-hostname kubernetes-worker

No notará los cambios de nombre de host en el terminal hasta que abra uno nuevo. Por último, asegúrese de que todos sus nodos tengan una fecha y una hora precisas; de lo contrario, tendrá problemas con los certificados TLS no válidos.

Inicializar el servidor maestro de Kubernetes

Ahora estamos listos para inicializar el nodo maestro de Kubernetes. Para hacerlo, ingrese el siguiente comando en su nodo maestro:

kubernetes-master:~$ sudo kubeadm init

Kubernetes en el nodo maestro de Ubuntu 20.04 ahora está inicializado

El nodo principal de Kubernetes ahora se ha inicializado. La salida nos da una unión kubeadm join comando que necesitaremos usar más adelante para unir nuestros nodos de trabajo al nodo maestro. Entonces, toma nota de este comando para más tarde.

El resultado de arriba también nos aconseja ejecutar varios comandos como un usuario regular para comenzar a usar el clúster de Kubernetes. Ejecute esos tres comandos en el nodo principal:

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

Implementar una red de módulos

El siguiente paso es implementar una red de módulos. La red de módulos se usa para la comunicación entre hosts y es necesaria para que el clúster de Kubernetes funcione correctamente. Para ello utilizaremos la red Flannel pod. Emita los siguientes dos comandos en el nodo principal:

kubernetes-master:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubernetes-master:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

Dependiendo de su entorno, puede llevar solo unos segundos o un minuto activar toda la red de franela. Puede usar kubectl Comando para confirmar que todo está listo y listo:

kubernetes-master:~$ kubectl get pods --all-namespaces

La red de pods se implementó correctamente

Cuando toda la columna ESTADO muestra 'En ejecución', es una indicación de que todo terminó de implementarse y está listo para funcionar.

Únase al clúster de Kubernetes

Ahora nuestro clúster está listo para que se unan los nodos trabajadores. Use la combinación kubeadm join comando obtenido anteriormente de la salida de inicialización del nodo principal de Kubernetes para unirse a su clúster de Kubernetes:

kubernetes-worker:~$ sudo kubeadm join 192.168.1.220:6443 --token 1exb8s.2t4k3b5syfc3jfmo --discovery-token-ca-cert-hash sha256:72ad481cee4918cf2314738419356c9a402fb609263adad48c13797d0cba2341

Unir el nodo trabajador al clúster de Kubernetes

De vuelta en su nodo maestro de Kubernetes, confirme que kubernetes-worker ahora es parte de nuestro clúster de Kubernetes con este comando:

kubernetes-master:~$ kubectl get nodes

Muestra qué nodos están actualmente en el clúster de Kubernetes

Implementación de un servicio en el clúster de Kubernetes

Ahora estamos listos para implementar un servicio en el clúster de Kubernetes. En nuestro ejemplo, implementaremos un servidor Nginx en nuestro nuevo clúster como prueba de concepto. Ejecute los siguientes dos comandos en su nodo principal:

kubernetes-master:~$ kubectl run --image=nginx nginx-server --port=80 --env="DOMAIN=cluster"
kubernetes-master:~$ kubectl expose deployment nginx-server --port=80 --name=nginx-http

Ahora debería ver un nuevo contenedor acoplable nginx implementado en su nodo trabajador:

kubernetes-worker:~$ sudo docker ps

El nuevo contenedor docker Nginx está en funcionamiento en el nodo trabajador de Kubernetes

Puede ver una lista actualizada de todos los servicios disponibles que se ejecutan en su clúster con el siguiente comando, emitido desde el nodo máser de Kubernetes:

kubernetes-master:~$ kubectl get svc

Muestra qué servicios en contenedores se están ejecutando en el clúster de Kubernetes

Conclusión

En este artículo, aprendimos cómo configurar Kubernetes para implementar aplicaciones en contenedores en Ubuntu 20.04 Focal Fossa. Configuramos un clúster básico que consta de dos hosts, un maestro y un trabajador, aunque esto se puede escalar a muchos más nodos trabajadores si es necesario.

Vimos cómo configurar Docker y otros requisitos previos, así como implementar un servidor Nginx en nuestro nuevo clúster como prueba de concepto. Por supuesto, esta misma configuración se puede usar para implementar cualquier cantidad de aplicaciones en contenedores.


Ubuntu
  1. Cómo instalar docker-compose en Ubuntu 20.04 Focal Fossa Linux

  2. Cómo instalar LaTex en Ubuntu 20.04 Focal Fossa Linux

  3. Cómo instalar MATLAB en Ubuntu 20.04 Focal Fossa Linux

  4. Cómo instalar fuentes en Ubuntu 20.04 Focal Fossa Linux

  5. Cómo instalar Telegram en Ubuntu 20.04 Focal Fossa Linux

Cómo instalar TeamViewer en Ubuntu 20.04 Focal Fossa Linux

Cómo instalar Minecraft en Ubuntu 20.04 Focal Fossa Linux

Cómo instalar PlayOnLinux en Ubuntu 20.04 Focal Fossa Linux

Cómo instalar CUDA en Ubuntu 20.04 Focal Fossa Linux

Cómo instalar Steam en Ubuntu 20.04 Focal Fossa Linux

Cómo instalar Discord en Ubuntu 20.04 Focal Fossa Linux

    Requisitos de software y convenciones de la línea de comandos de Linux
    Categoría Requisitos, convenciones o versión de software utilizada
    Sistema Ubuntu 20.04 instalado o Ubuntu 20.04 Focal Fossa actualizado
    Software Kubernetes
    Otro Acceso privilegiado a su sistema Linux como root o a través de sudo comando.
    Convenciones # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando
    $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios