Cómo instalar KubeSphere en Ubuntu 22.04

Kubesphere plataforma Kubernetes gratuita y de código abierto y gestión de aplicaciones nativas de la nube verificada por CNCF. Se trata de una plataforma de contenedores Kubernetes de nivel empresarial, rica en funciones y adaptada al despliegue híbrido en múltiples nubes. Por defecto, Kubesphere incluye operaciones de TI automatizadas de pila completa y está optimizada con flujos de trabajo DevOps. Puede desplegarse en un clúster Kubernetes existente o en distribuciones Linux, o también puedes configurar tu Kubernetes con Kubesphere incluido mediante KubeKey, una herramienta de línea de comandos para Linux para desplegar, actualizar y escalar el clúster Kubernetes automáticamente.

Kubesphere proporciona una interfaz gráfica de usuario web intuitiva para gestionar el clúster Kubernetes. También viene con herramientas CI/CD conectables, como jenkins, que te permiten configurar automáticamente la canalización CI/CD. También ofrece la función Source-to-Image (S2I) para la creación automatizada de imágenes de contenedores reproducibles a partir del código fuente, y Binary-to-Image (B2I) para crear imágenes de contenedores reproducibles a partir de un archivo binario (Jar, War, archivo binario).

Este artículo te guiará en el despliegue de Kubernetes y Kubesphere en servidores Ubuntu 22.04. Utilizarás varios servidores Ubuntu para este despliegue, y utilizarás la aplicación KubeKey que proporciona Kubesphere para el despliegue automático del clúster Kubernetes y Kubesphere.

Requisitos previos

Para seguir y completar este tutorial, necesitarás los siguientes requisitos:

  • Tres servidores Linux con ubuntu 22.04 – Utilizarás un servidor como plano de control de Kubernetes y dos servidores como nodos trabajadores.
  • Un usuario no root con pirivlgos de administrador sudo/root.

Configurar hosts y usuario

Antes de instalar Kubernetes y Kubesphere, debes configurar el archivo «/etc/hosts» y crear un nuevo usuario con sudo sin contraseña en todos tus servidores. Así que asegúrate de ejecutar los siguientes comandos en todos tus servidores Ubuntu.

Ahora abre el archivo ‘/etc/hosts ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/hosts

Añade al archivo los detalles de las direcciones IP y el nombre de host del servidor.

192.168.5.35    master    master
192.168.5.121   node1     node1
192.168.5.122   node2     node2

Guarda el archivo y cierra el editor cuando hayas terminado.

A continuación, introduce el siguiente comando para crear un nuevo usuario llamado ‘ubuntu’ y establece la contraseña para el nuevo usuario‘ubuntu‘. Cuando se te pida, introduce tu contraseña y repite.

sudo useradd -m -s /bin/bash ubuntu
sudo passwd ubuntu

Por último, ejecuta el siguiente comando para permitir al usuario ‘ubuntu’ ejecutar‘sudo‘ sin contraseña. El usuario ‘ubuntu’ se utilizará aquí para instalar dependencias de paquetes, por lo que debes asegurarte de que el usuario puede convertirse en root sin contraseña.

cat <<EOF | sudo tee /etc/sudoers.d/ubuntu
Defaults:ubuntu !fqdn
Defaults:ubuntu !requiretty
ubuntu ALL=(ALL) NOPASSWD: ALL
EOF

Tras configurar el archivo ‘/etc/hosts ‘ y crear el usuario ‘ubuntu‘, a continuación configurarás la autenticación SSH sin contraseña para el usuario‘ubuntu‘.

configuración hosts usuarios

Configurar la autenticación SSH basada en clave

En esta sección, configurarás una autenticación SSH sin contraseña para el usuario «ubuntu». El escenario de instalación de Kubernetes y Kubesphre es desde el servidor ‘maestro‘. Y la instalación tanto en el ‘nodo1‘ como en el ‘nodo2’ se hará automáticamente.

En el servidor «maestro», introduce el siguiente comando para iniciar sesión como usuario«ubuntu«. a continuación, genera un nuevo par de claves SSH utilizando el comando«ssh-keygen» como se indica a continuación. Cuando hayas terminado, tus claves públicas y privadas SSH se almacenarán en el directorio‘~/.ssh‘.

su - ubuntu
ssh-keygen -t ed25519

generar clave ssh

A continuación, introduce el siguiente comando para la clave pública SSH desde el servidor «maestro» a todos los nodos que se utilizarán para la instalación de Kubernetes y Kubesphre.

ssh-copy-id ubuntu@master
ssh-copy-id ubuntu@node1
ssh-copy-id ubuntu@node2

Introduce«sí» para aceptar la huella SSH del servidor y, a continuación, introduce la contraseña del usuario«ubuntu» cuando se te solicite. Una vez añadida la clave SSH, deberías obtener un mensaje como«Número de claves añadidas: 1«.

A continuación se muestra un resultado al añadir la clave pública SSH al host local del servidor«maestro«.

subir clave ssh a localhost

A continuación se muestra un resultado al añadir la clave pública SSH al servidor«nodo1«.

sube la clave ssh al nodo1

A continuación se muestra un resultado al añadir la clave pública SSH al servidor «nodo2«.

sube la clave ssh al nodo2

Una vez añadida y cargada la clave pública SSH, ya puedes conectarte a todos tus servidores mediante el usuario «ubuntu» sin autenticación de contraseña.

En la siguiente sección, comprobarás y te asegurarás de que puedes conectarte a todos los nodos/servidores a través de un usuario ‘ubuntu‘ sin contraseña, y luego instalarás algunas dependencias de paquetes.

Instalar dependencias

Ya has subido la clave pública SSH del servidor«maestro» a los servidores«nodo1» y«nodo2«. Ahora te asegurarás de que puedes conectarte a ambos servidores mediante el usuario «ubuntu» con autenticación SSH sin contraseña e instalarás las dependencias básicas para Kubernetes y Kubesphere.

En el servidor«maestro«, introduce el siguiente comando para actualizar y refrescar el índice de paquetes de Ubuntu e instala algunas dependencias de paquetes mediante el comando«apt install» que aparece a continuación.

sudo apt update
sudo apt install curl socat conntrack ebtables ipset

ssh-keyscan -H master >> ~/.ssh/known_hosts

Cuando se te solicite, introduce y para confirmar y pulsa INTRO para continuar.

instalar dependencias

A continuación, conéctate al servidor«nodo1» mediante el siguiente comando«ssh«. Una vez ejecutado el comando, deberías iniciar sesión en ‘nodo1‘ sin autenticación de contraseña.

ssh ubuntu@node1

Ahora introduce el siguiente comando apt para actualizar y refrescar tu índice de paquetes de Ubuntu. A continuación, instala algunas dependencias básicas de paquetes. Introduce y cuando se te pida y pulsa ENTER para continuar.

sudo apt update
sudo apt install curl socat conntrack ebtables ipset

login nodo1 instalar paquetes

Por último, conéctate al servidor‘nodo2‘ mediante el siguiente comando‘ssh‘.

ssh ubuntu@node2

Una vez conectado, introduce el siguiente comando para actualizar el índice de paquetes del repositorio. A continuación, instala algunas dependencias de paquetes mediante el comando ‘apt install‘.

sudo apt update
sudo apt install curl socat conntrack ebtables ipset

Introduce y cuando se te solicite y pulsa ENTER para continuar.

login node2 instalar dependencias

Llegados a este punto, ya has configurado tus servidores para la instalación de Kubernetes y Kubesphre. En la siguiente sección, descargarás el archivo binario de KubeKey que se utilizará para inicializar el clúster de Kubernetes e instalar Kubesphere.

Descarga de KubeKey en el Nodo Maestro

En esta sección, descargarás el archivo binario de KubeKey en el servidor «maestro». KubeKey es un único archivo binario que te permite desplegar el clúster Kubernetes y/o con el panel de administración de KubeSphere. También es compatible con complementos nativos de la nube, multinodo y HA (Alta Disponibilidad).

Introduce el siguiente comando para descargar el archivo binario de KubeKey a tu directorio de trabajo actual. Cuando termine el proceso, deberías ver el archivo ‘kk’ en tu directorio.

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.2 sh -

Ahora ejecuta el siguiente comando para hacer ejecutable el archivo ‘kk‘.

chmod +x kk

kubekey descargar

A continuación, ejecuta el archivo binario ‘kk‘ para verificar la versión actual y los parámetros disponibles de la lista en la KubeKey.

./kk version
./kk help

A continuación se muestra una salida similar que se imprimirá en la pantalla de tu terminal.

verificar kubekey

Una vez descargado KubeKey, a continuación iniciarás la configuración del despliegue de Kubernetes y Kubesphere a través de KubeKey.

Crear la configuración de despliegue de Kubernetes y Kubesphere

KubeKey puede utilizarse para desplegar sólo Kubernetes o con KubeSphere. También admite tanto el despliegue de un único Kubernetes como los despliegues multinodo.

En cuanto al despliegue multinodo Kubernetes y Kubesphre, necesitas generar un script YAML que definirá la configuración del servidor.

Ejecuta el siguiente comando«kk » para generar una nueva configuración YAML. En este ejemplo, generarás un nuevo script YAML‘deployment-kubesphre.yml‘ y especificarás la versión de Kubernetes a v1.24.2 y la de Kubesphere a v3.3.1.

./kk create config -f deployment-kubesphre.yml --with-kubernetes v1.24.2 --with-kubesphere v3.3.1

Deberías ver una salida como ‘Generate KubeKey config file successfully‘.

generar configuración kubekey

Ahora abre el archivo YAML‘deployment-kubesphre.yml‘ utilizando el siguiente comando del editor nano.

nano deployment-kubesphre.yml

Cambia el nombre del clúster en el parámetro‘metadata: testdeployment‘, y cambia la dirección IP del host de detalle, el usuario y la clave privada para acceder a los servidores de destino. Por último, en el ‘roleGroup‘, especifica qué host se utilizará como plano de control y nodos trabajadores.

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: testdeployment
spec:
  hosts:
  - {name: master, address: 192.168.5.35, internalAddress: 192.168.5.35, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
  - {name: node1, address: 192.168.5.121, internalAddress: 192.168.5.121, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
  - {name: node2, address: 192.168.5.122, internalAddress: 192.168.5.122, user: ubuntu, privateKeyPath: "~/.ssh/id_ed25519"}
  roleGroups:
    etcd:
    - master
    control-plane:
    - master
    worker:
    - node1
    - node2

Guarda el archivo y sal del editor cuando hayas terminado.

configuración de hosts

En este ejemplo, crearás un nuevo clúster Kubernetes llamado ‘testdeployment’ con tres servidores Ubuntu diferentes.

  • master como el etcd y el plano de control
  • Nodo1 y Nodo2 se utilizarán como nodos trabajadores.

Para instalar todos los requisitos en los servidores de destino, utilizarás SSH e iniciarás sesión con la clave privada‘~/.ssh/id_ed25519‘ como usuario‘ubuntu‘. Este usuario está configurado como sin contraseña en visudo.

Tras generar y configurar el archivo YAML y construir el despliegue de Kubernetes y Kubesphre, pasa a los siguientes pasos para iniciar el despliegue.

Despliegue de Kubernetes y Kubesphere

En esta sección, desplegarás Kubernetes y Kubesphre con arquitectura multinodo mediante KubeKey y el script YAML ‘deployment-kubesphre.yml‘.

Ejecuta el siguiente archivo binario Kubekey‘kk’ para iniciar el despliegue de Kubernetes y Kubesphere con el archivo YAML ‘deployment-kubesphre.yml‘.

./kk create cluster -f deployment-kubesphre.yml

En primer lugar, KubeKey comprobará los requisitos detallados para la instalación de Kubernetes. Cuando lo haga correctamente, te pedirá que confirmes la instalación. Introduce «Sí» y pulsa INTRO para continuar.

despliegue de kubernetes kubepshere

El despliegue tardará entre 5 y 10 minutos en completarse. Cuando termine, deberías ver una salida similar a esta impresa en tu terminal. Además, obtendrás el usuario y la contraseña de administrador por defecto que se pueden utilizar para iniciar sesión en Kubesphere.

despliegue de kubernetes finalizado

Ahora abre tu navegador web y visita la dirección IP del servidor «maestro» seguida del puerto «30880» (es decir: http: //192.168.5.35:30880/). Deberías ver la página de inicio de sesión de Kubepshre.

Escribe el usuario«admin» y la contraseña por defecto«P@88w0rd«, y haz clic en Iniciar sesión.

página de acceso

Después de acceder, se te pedirá que cambies la contraseña por defecto del usuario Kubepshre«admin«. Introduce tu nueva contraseña y haz clic en Enviar.

cambiar pase

Cuando hayas terminado, deberías ver el panel de administración de Kubesphere. En la página del panel de control, deberías obtener la versión actual de Kubesphere v3.3.1 y el clúster Kubernetes disponible es 1.

panel de control kubesphere

A continuación, haz clic en el menú Plataforma de la parte superior izquierda y selecciona Gestión de clústeres.

gestión de grupos

A continuación se muestra el detalle del clúster Kubernetes que has instalado con varios servidores Ubuntu, el servidor«maestro», el nodo1 y el nodo2.

clúster por defecto

Ahora haz clic en el menú Nodos para obtener información detallada sobre los nodos disponibles en el clúster de Kubernetes. A continuación puedes ver que hay tres nodos diferentes en el clúster de Kubernetes. El servidor«maestro» se utiliza tanto como plano de control como nodo trabajador.

lista de nodos

Ahora haz clic en Componentes del Sistema para obtener los detalles de los componentes instalados en tu despliegue de Kubernetes y Kubesphere. Puedes ver tres categorías diferentes de componentes: Kubesphere, Kubernetes y Monitorización.

lista de componentes

A continuación, vuelve a la sesión de terminal del servidor «maestro» y ejecuta el siguiente comando«kubectl» para obtener la lista de nodos disponibles en tu clúster Kubernetes.

kubectl get nodes

Deberías recibir una salida similar a ésta – Hay tres nodos disponibles en el clúster Kubernetes, el nodo maestro que se utiliza como plano de control, y el nodo1 y el nodo2 que se utilizan como nodos trabajadores.

verificar nodos

Introduce el siguiente comando para obtener información detallada sobre cada nodo del clúster Kubernetes.

kubectl describe node

A continuación puedes ver el detalle del plano de control de Kubernetes en el servidor«maestro«.

describir nodo maestro

A continuación se muestra el detalle del nodo trabajador en el servidor nodo1.

describe el nodo1

A continuación se muestra el detalle del nodo trabajador en el servidor nodo2.

describe el nodo2

Por último, introduce el siguiente comando para obtener la lista de pods que se están ejecutando en tu clúster Kubernetes.

kubectl get pods --all-namespaces

En la siguiente salida, puedes ver varios espacios de nombres«kube-system», «kubesphere-system», «kubesphere-control-system» y«kubesphere-monitoring-system» que están disponibles en tu clúster Kubernetes con todos los pods en ejecución.

comprobar vainas

Llegados a este punto, ya has desplegado el clúster Kubernetes y Kubesphere con varios nodos de servidor Ubuntu. También has accedido al panel de administración de Kubesphere y has cambiado la contraseña de administrador por defecto.

Con esto en mente, ya puedes desplegar tu aplicación en Kubernetes y Kubesphere. En el siguiente paso, desplegarás el sencillo servidor web Nginx en Kubernetes para asegurarte de que tu instalación de Kubernetes y Kubesphere se realiza correctamente.

Despliegue de Pods en Kubernetes y Kubesphere

En este ejemplo, desplegarás pods Nginx en el clúster Kubernetes y en Kubesphere.

Ejecuta el siguiente comando para crear un nuevo despliegue para el servidor web Nginx. En este ejemplo, crearemos nuevos Pods Nginx basados en la imagen«nginx:alpine» con dos réplicas.

kubectl create deployment nginx --image=nginx:alpine --replicas=2

Ahora crea un nuevo servicio de tipo «NodePort» que expondrá el despliegue de Nginx utilizando el siguiente comando kubectl. Este comando creará un nuevo servicio Kubernetes llamado«nginx» con el tipo «NodePort» y expondrá el puerto«80» para el Pod.

kubectl create service nodeport nginx --tcp=80:80

crear servicio de despliegue

A continuación, ejecuta el siguiente comando kubectl para comprobar la lista de pods en ejecución en tu clúster Kubernetes. Y deberías ver dos pods Nginx en ejecución.

kubectl get pods

comprobar vainas

Ahora comprueba la lista de servicios disponibles en Kubernetes utilizando el siguiente comando. Deberías ver el servicio«nginx» de tipo NodePort expuesto al puerto«80» y al puerto«32241» en los hosts Kubernetes. El servicio NodePort siempre expondrá el puerto entre el rango xxx-xxxx en los hosts Kubernetes (nodos trabajadores).

kubectl get svc

comprobar servicios

Ejecuta el siguiente comando curl para acceder a tu despliegue Nginx.

curl 10.233.14.102
curl node1:32241
curl node2:32241

A continuación se muestra la salida de la página index.html del pod Nginx que se expone en el servidor«maestro«.

verificar el despliegue de nginx

A continuación se muestra la salida del código fuente index.html del «nodo1«.

índice nginx nodo1

Y abajo está el código index.html del«nodo2″.

maestro de despliegue de nginx

Ahora vuelve al panel de administración de Kubesphere. Haz clic en Cargas de trabajo de la aplicación y, a continuación, en Cargas de trabajo. Y verás que el despliegue llamado ‘nginx‘ está disponible con dos pods en ejecución.

lista de suplentes

Haz clic en el despliegue ‘nginx‘ para obtener información detallada sobre tu despliegue. Deberías ver que el despliegue ‘nginx‘ viene con dos réplicas y que la réplica de esos dos pods se está ejecutando.

lista de suplentes

A continuación, haz clic en el menú Servicios para obtener la lista de servicios disponibles en tu clúster Kubernetes. Deberías ver los servicios«nginx» y«Kubernetes» disponibles en tu clúster.

lista de servicios

Haz clic en el servicio ‘nginx‘ para obtener información detallada sobre el servicio. A continuación se muestra una página similar que aparecerá en tu panel de control de Kubesphere.

detallar servicio nginx

Con esto, ya has terminado el despliegue de los pods Nginx en el clúster Kubernetes y has verificado los detalles del despliegue desde el panel de administración de Kubesphere.

Conclusión

En este tutorial, has desplegado el clúster Kubernetes y Kubesphre en múltiples servidores Ubuntu 22.04. Has desplegado Kubernetes con una herramienta de automatización llamada «KubeKey» desarrollada por Kubesphere. También has aprendido la configuración básica de los servidores Ubuntu para el despliegue de Kubernetes.

Además, has instalado y configurado correctamente Kubesphere como panel de administración web de Kubernetes. Has aprendido el uso básico de Kubesphere para gestionar el clúster Kubernetes y el despliegue, los pods y los servicios.

Para saber más sobre Kubesphere, visita la documentación oficial de Kubesphere. En cuanto a Kubernetes, visita la documentación oficial de Kubernetes.

También te podría gustar...