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‘.
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
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«.
A continuación se muestra un resultado al añadir la clave pública SSH al servidor«nodo1«.
A continuación se muestra un resultado al añadir la clave pública SSH al servidor «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.
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
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.
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
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.
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‘.
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.
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.
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.
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.
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.
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.
A continuación, haz clic en el menú Plataforma de la parte superior izquierda y selecciona Gestión de clústeres.
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.
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.
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.
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.
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«.
A continuación se muestra el detalle del nodo trabajador en el servidor nodo1.
A continuación se muestra el detalle del nodo trabajador en el servidor 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.
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
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
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
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«.
A continuación se muestra la salida del código fuente index.html del «nodo1«.
Y abajo está el código index.html del«nodo2″.
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.
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.
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.
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.
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.