• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
El Blog de Jorge de la Cruz

El Blog de Jorge de la Cruz

El Blog de Jorge de la Cruz - Todas las novedades sobre VMware, Veeam, InfluxData, Grafana, Zimbra, etc.

  • Home
  • VMware
    • VMworld
    • VMware vSphere 6.7
    • VMware vSphere 6.5
  • Veeam
    • Resumen Contenido 2021
    • Veeam v11
      • Continuous Data Protection (CDP
      • Ransomware Protection
      • Archive Tier
      • Mejoras en Instant Recovery
      • Veeam Agent for Mac
      • Veeam Backup for AHV v2.1
    • Veeam Backup for Microsoft Office 365
      • 1 – Razones para proteger nuestra información en Microsoft Office 365
      • 2 – Componentes lógicos de Veeam Backup for Microsoft Office 365 2.0
      • 3 – Instalación paso a paso de Veeam Backup for Microsoft Office 365 v2.0
      • 4 – Configuración inicial de Veeam Backup for Microsoft Office 365 v2.0
      • 5 – Creando trabajos de copia en Veeam Backup for Microsoft Office 365 v2.0
      • 6 – Restaurando elementos en Veeam Backup for Microsoft Office 365 v2.0
    • Veeam Backup for AWS
      • Veeam: Veeam anuncia Veeam Backup for AWS Free Edition
      • Veeam: Cómo Desplegar Veeam Backup for AWS – paso a paso
      • Veeam: Vistazo en profundidad al nuevo Veeam Backup for AWS – Creación de Políticas de Backup y Restauración
      • Veeam: Cómo conectar nuestro Veeam Backup & Replication a Veeam Backup for AWS
    • Veaam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte I – Introducción a Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte II – Descarga e Instalación de Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte III – Añadir una Infraestructura de VMware vSphere a Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte IV – Añadir una Infraestructura de Veeam Backup and Replication a Veeam ONE
      • En busca del Dashboard perfecto: Veeam ONE – Parte V – Realizando troubleshooting de vSphere usando Veeam ONE Monitor
      • En busca del Dashboard perfecto: Veeam ONE – Parte VI – Realizando troubleshooting de Veeam Backup and Replication usando Veeam ONE Monitor
      • En busca del Dashboard perfecto: Veeam ONE – Parte VII – Vistazo profundo a los Dashboards en Veeam ONE Reporter
      • En busca del Dashboard perfecto: Veeam ONE – Parte VIII – Vistazo profundo a Reportes en Veeam ONE Reporter
      • En busca del Dashboard perfecto: Veeam ONE – Parte IX – Chargeback para crear reportes de coste de nuestra Infraestructura
    • Veeam Availability Console
      • 1 – Teoría e información útil sobre el producto
      • 2 – Instalación de Veeam Availability Console
      • 3 – Configuración y conexión con VBR Server
      • 4 – Administración centralizada de Veeam Backup Agents
      • 5 – Backup de Agentes a diferentes destinos, SMB, Repositorio Veeam o Cloud Connect
      • 6 – Reportes de Backup de Veeam Agent y Veeam Backup and Replication
      • 7 – Manejando la Facturación de Veeam Agents, Backup and Replication y Cloud Connect
    • Backup y restore de cargas de trabajo a Microsoft Azure
      • 1 – Introducción
      • 2 – Conectividad entre nuestro Datacenter y Microsoft Azure
      • 3 – Desplegar Veeam Backup and Replication en Microsoft Azure
      • 4 – Configuración en nuestro Datacenter para backup a Microsoft Azure
      • 5 – Restaurando a Microsoft Azure, desde Microsoft Azure
      • 6 – Migrar cargas de trabajo desde Microsoft Azure hacía nuestro Datacenter
    • Veeam v9.5 Update 4
      • Veeam Cloud Tier
        • Cómo controlar el ancho de banda en Veeam Cloud Tier
      • Secure Restore y Staged Restore
      • Mejoras en Veeam Agent Management
      • Veeam Community Edition
      • Actualizar Veeam Enterprise Manager y Veeam Backup and Replication a la última versión
      • VeeamONE con Intelligent Diagnostics, Remediation actions, Business View 2.0 y Application Monitoring
    • VeeamON 2022
      • Novedades en Veeam ONE v12
    • VeeamON 2021
      • VBO v6 – Self-Service y Backup Copy Glacier-Azure Archive
    • VeeamON 2020
      • Veeam Backup for AWS v2.0
    • VeeamON 2019
      • Veeam Availability Orchestrator v2.0 – ¡novedades!
    • VeeamON 2017
      • Sesiones recomendadas
      • Día I – Veeam Availability Suite v10 – ¡novedades!
      • Día II – Veeam Azure PN (Powered Network), Scale-out Archive Tier y mucho más
    • VeeamON 2015
      • VeeamON 2015 volverá a Las Vegas en el único Evento sobre Disponibilidad en el Data Center
      • Completo resumen, keynotes e imágenes
      • vBrownBag – Jorge de la Cruz – Stop sending postcards to your customers
  • Zextras
  • PRTG
  • Office 365
    • Microsoft – Añadiendo nuestro dominio a Office 365, configuración de DNS y migración de actual Mailbox
    • Veeam: Usando Microsoft Office 365 para nuestras notificaciones por correo electrónico
    • PRTG: Usando Microsoft Office 365 para nuestras notificaciones por correo electrónico
  • Zimbra
    • Instalación
      • Instalando Zimbra 8.7.6 sobre Ubuntu 14.04 LTS – ¡con Chat y Drive!
      • Amazon Lightsail para instalar Zimbra Collaboration 8.7.1, Parte II
      • Amazon Lightsail para instalar Zimbra Collaboration 8.7.1, Parte I
      • Instalando Zimbra 8.7.x con un solo comando, incluye Chat y Drive
  • Linux
    • InfluxDB, Grafana y Telegraf
      • 1 – Instalación y configuración de los components
      • 2 – Instalar agente en Linux
      • 3 – Integración con PRTG
      • 4 – Instalar agente Telegraf en Nodos remotos Windows
      • 5 – Activar inputs específicos, Red, MySQL/MariaDB, Nginx
      • 6 – Monitorizando Veeam
    • Ansible y Zabbix
      • 1 – Inicio
      • 2 – Instalación de Ansible e integración con Active Directory
      • 3 – Configuración de AutoDiscovery en Zabbix
      • 4 – Instalación del agente de Zabbix en Windows
      • 5 – Instalación del agente de Zabbix en Linux y Auto Remove en Zabbix
    • Jenkins
      • 1 – Inicio
      • 2 – Instalación de Jenkins en Ubuntu
      • 3 – Instalando nuestro primer plugin
      • 4 – Sincronización NTP de Linux
      • 5 – Añadir un Slave Windows a Jenkins
      • 6 – Ejecutar tareas en Linux
      • 7 – Ejecutar tareas en Windows
    • Kubernetes
      • 1 – Introducción a Kubernetes
      • 2 – Instalación paso a paso
      • 3 – RollingUpdate con Kubernetes
      • 4 – Dashboard
      • 5 – Volúmenes NFS
      • 6 – Registry
      • 7 – Traefik
      • 8 – Systemd con Traefik y Proxy de Kubernetes
      • 9 – Heapster Influx Grafana
      • 10 – Labels de Kubernetes
      • 11 – API: Swagger
      • 12 – API: Creando nuestro primer POD
  • Contribuidores
    • Acerca de Jorge
    • Acerca de Oscar Mas
      • Clúster SQL
        • 1 – Introducción
        • 2 – Preparación de los equipos virtuales
        • 3 – Instalación del Clúster de Microsoft
        • 4 – Instalación de SQL Server para Clúster de Microsoft
        • 5 – Configuración de nuestro Clúster de SQL
        • 6 – Monitorización de Clúster de SQL con Zabbix
        • 7 – Actualizando clúster de SQL

Kubernetes – Cómo instalar un entorno single-node de Kubernetes en segundos usando Ubuntu Snap

31 July, 2019 - Escrito en: opensource

Saludos amigos, en los días que corren, escuchamos Kubernetes más y más, es probable que algunos ya hayáis tocado un clúster de Kubernetes, si bien ha podido ser directamente en cloud usando los Kubernetes de AWS, Google Cloud o Azure, o quizá en Digitalocean, pero quizá no tantos en local.

También recordaros la serie de blogs paso-a-paso de Oscar Más sobre este tema:

  • https://www.jorgedelacruz.es/tag/kubernetes/

Microk8s, la imagen snap de Ubuntu que te lo monta todo en segundos

Hoy os traigo algo más sencillo, se trata de microk8s, que se tarda unos segundos en instalar y nos va ha dejar un single-node de Kubernetes ya listo para ser desplegado con los siguientes componentes:

  • Istio
  • GPGPU bindings
  • Daily builds
  • Local storage
  • Local registry
  • Updates
  • Dashboard
  • Metrics
  • Upgrades
  • IngressDNS
  • Conformant

Vamos a ver el procedimiento de instalación.

Desplegar y configurar Microk8s desde Ubuntu snap

En este tutorial he omitido los pasos sobre cómo desplegar una VM Linux sobre VMware, ya que podemos encontrar estos pasos en muchos otros tutoriales por la red. Una vez que tenemos nuestra VM instalada, con las open-vm-tools e IP estática, lanzaremos el siguiente comando como usuario no root:

sudo snap install microk8s --edge --classic

El proceso que tardará unos segundos, se encargará de instalar y configurar todo lo necesario, cuando acabe, nos mostrará algo similar a este output:

2019-07-30T22:14:03+01:00 INFO Waiting for restart... microk8s (edge) v1.15.1 from Canonical✓ installed

Ya una vez descargado en instalado, podremos arrancar micro8ks con el siguiente comando:

sudo microk8s.start

Que nos mostrará un output similar al siguiente pasados unos segundos:

enable of [microk8s.daemon-apiserver microk8s.daemon-apiserver-kicker microk8s.daemon-containerd microk8s.daemon-controller-manager microk8s.daemon-etcd microk8s.daemonâStarted. Enabling pod scheduling node/micro-k8s already uncordoned

Podremos ahora arrancar diferentes servicios que necesitemos, en nuestro caso vamos a desplegar DNS y Dashboard, con un comando tan sencillo como el siguiente:

microk8s.enable dns dashboard

El output que este comando nos mostrará será similar al siguiente:

Enabling DNS
Applying manifest
serviceaccount/coredns created
configmap/coredns created
deployment.apps/coredns created
service/kube-dns created
clusterrole.rbac.authorization.k8s.io/coredns created
clusterrolebinding.rbac.authorization.k8s.io/coredns created
Restarting kubelet
DNS is enabled
Applying manifest
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
service/monitoring-grafana created
service/monitoring-influxdb created
service/heapster created
deployment.extensions/monitoring-influxdb-grafana-v4 created
serviceaccount/heapster created
clusterrolebinding.rbac.authorization.k8s.io/heapster created
configmap/heapster-config created
configmap/eventer-config created
deployment.extensions/heapster-v1.5.2 created

If RBAC is not enabled access the dashboard using the default token retrieved with:

token=$(microk8s.kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s.kubectl -n kube-system describe secret $token

In an RBAC enabled setup (microk8s.enable RBAC) you need to create a user with restricted
permissions as shown in https://github.com/kubernetes/dashboard/wiki/Creating-sample-user

Si quisiéramos jugar con más servicios, os dejo una lista que podemos habilitar si queremos:

  • storage – nos permite usar el almacenamiento local de la VM
  • ingress – creará un controlador de tráfico Ingress
  • gpu – habilita el runtima de nvidia-dockery set de dameons de nvidia-device-plugin
  • istio – habilita los servicios de core de Istio
  • registry – despliega un registro privado de Docker

Accediendo al Dashboard de Kubernetes

Ya cuando tenemos todo arriba, podremos comprobar la IP del Dashboard haciendo uso de los comandos normales de Kubernetes, en este caso para mostrar los namespaces disponibles y sus configuraciones de red:

microk8s.kubectl get all --all-namespaces

El output de este comando variará respecto a lo que tengáis desplegado, en mi caso se ve así:

NAMESPACE     NAME                                                  READY   STATUS    RESTARTS   AGE
kube-system   pod/coredns-86c94466cc-5v6v6                          1/1     Running   0          6m42s
kube-system   pod/heapster-v1.5.2-844b564688-f4kkj                  4/4     Running   0          5m34s
kube-system   pod/kubernetes-dashboard-7d75c474bb-cqddh             1/1     Running   0          6m35s
kube-system   pod/monitoring-influxdb-grafana-v4-6b6954958c-vg2f4   2/2     Running   0          6m35s


NAMESPACE     NAME                           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       service/kubernetes             ClusterIP   10.152.183.1     <none>        443/TCP                  15m
kube-system   service/heapster               ClusterIP   10.152.183.186   <none>        80/TCP                   6m35s
kube-system   service/kube-dns               ClusterIP   10.152.183.10    <none>        53/UDP,53/TCP,9153/TCP   6m42s
kube-system   service/kubernetes-dashboard   ClusterIP   10.152.183.190   <none>        443/TCP                  6m35s
kube-system   service/monitoring-grafana     ClusterIP   10.152.183.36    <none>        80/TCP                   6m35s
kube-system   service/monitoring-influxdb    ClusterIP   10.152.183.53    <none>        8083/TCP,8086/TCP        6m35s


NAMESPACE     NAME                                             READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   deployment.apps/coredns                          1/1     1            1           6m42s
kube-system   deployment.apps/heapster-v1.5.2                  1/1     1            1           6m35s
kube-system   deployment.apps/kubernetes-dashboard             1/1     1            1           6m35s
kube-system   deployment.apps/monitoring-influxdb-grafana-v4   1/1     1            1           6m35s

NAMESPACE     NAME                                                        DESIRED   CURRENT   READY   AGE
kube-system   replicaset.apps/coredns-86c94466cc                          1         1         1       6m42s
kube-system   replicaset.apps/heapster-v1.5.2-6b794f77c8                  0         0         0       6m35s
kube-system   replicaset.apps/heapster-v1.5.2-6f5d55456                   0         0         0       5m40s
kube-system   replicaset.apps/heapster-v1.5.2-844b564688                  1         1         1       5m34s
kube-system   replicaset.apps/kubernetes-dashboard-7d75c474bb             1         1         1       6m35s
kube-system   replicaset.apps/monitoring-influxdb-grafana-v4-6b6954958c   1         1         1       6m35s

Antes de continuar, si estamos corriendo este Kubernetes en una VM, no en nuestro equipo propio, no podremos acceder al rango de red de los namespaces, pero podemos montar un proxy rápido para que rediriga el tráfico de los namespaces y podamos saltar a ellos, el comando muy sencillo, la & del final es aposta para mantener el proxy arriba:

microk8s.kubectl proxy --accept-hosts=.* --address=0.0.0.0 &

Si nos vamos a la IP que nos está mostrando el servicio de Dashboard, con el puerto 443, podremos ver el Dashboard:

http://IPDEVUESTROUBUNTU:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

Opción menos segura – Añadir el Skip login a la interfaz del Dashboard

Si estamos accediendo desde la red, como os estoy contando, seguramente queramos saltarnos este login, ya que no podemos acceder sin HTTPS, para ello tendremos que editar el namespace del Dashboard en caliente, de la siguiente manera:

microk8s.kubectl edit deployment/kubernetes-dashboard --namespace=kube-system

Y añadir el enable-skip-login después de la siguiente opción:

spec:
      containers:
      - args:
        - --auto-generate-certificates
        - --enable-skip-login

Y ya estaría, en nuestro Dashboard tendremos el botón de Skip:

Una vez lo presionamos, ya podremos acceder al Dashboard de Kubernetes, y ver el estado de todos los Namespaces, etc:

Además de poder ver el consumo de memoria RAM y CPU del single-node de Kubernetes:

Opción segura – Generar un token para logearnos al Dashboard

Si estamos accediendo mediante HTTPS desde la propia VM de Ubuntu, porque tenemos un navegador allí e interfaz gráfica. Para generar un token para poder acceder al Dashboard, será tan sencillo como lanzar lo siguiente desde la consola:

microk8s.kubectl -n kube-system describe secret $token

Y ya podremos ver algo similar al siguiente output:

Name:         coredns-token-kzh76
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: coredns
              kubernetes.io/service-account.uid: 60732ed0-390e-4136-9dc2-0e043edb8a36

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1094 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJjb3JlZG5zLXRva2VuLWt6aDc2Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImNvcmVkbnMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI2MDczMmVkMC0zOTBlLTQxMzYtOWRjMi0wZTA0M2VkYjhhMzYiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06Y29yZWRucyJ9.kc-_R6__NS3pqYLUR6DBCIpSNrnDP-tMscjRchdPaiFcfneqvBROuhd8q-tVY5HTTrxJ1pi40lL0prSTHw4Gi4DtH-WXEur7Y2lMVzrD5UuzLHUCPCGzuqmyH_1VOrwZTPhOe-_KKzyFcxEDjAWgIP-BcYRUGpvODX5HKD4PW5MIlgG49gGF5dxZM_5_vX3Ts2iIt5xVQuTdA5s6cjv0yXe5I1wwO5-h2DpsbKAe7ILZQYnlYhYnP2Bnjuuxc41-n7-YSx3ealfAeHT_ibE5c8k86P9ojtfMZNP1DshmbTmdb5499eri65D764FXEo58LIMCilT1rElWjk2aWAwF7g

etc

Entonces en la siguiente pantalla del Dashboard seleccionaremos la opción de Token:

Una vez lo presionamos, ya podremos acceder al Dashboard de Kubernetes, y ver el estado de todos los Namespaces, etc:

Además de poder ver el consumo de memoria RAM y CPU del single-node de Kubernetes:

Comandos adicionales de Microk8s

Si queréis jugar mucho más con el potencial de microk8s, os dejo a continuación los siguientes comandos para que exploréis un poco más con la herramienta:

  • microk8s.status: Proporciona una visión general del estado de MicroK8s (en ejecución/no en ejecución), así como del conjunto de complementos habilitados.
  • microk8s.enable: Habilita el addon
  • microk8s.disable: Deshbailita el addon
  • microk8s.kubectl: Interactua con kubernetes
  • microk8s.config: muestra la configuración del fichero de configuración de kubernetes
  • microk8s.istioctl: Interactuar con los servicios de istio. Necesitamos habilitar el complemento istio
  • microk8s.inspect: Realiza una rápida inspección de la instalación de MicroK8s. Ofrece consejos sobre lo que puede estar fallando
  • microk8s.reset: Hace un reset de la plataforma a cómo estaba al incio
  • microk8s.stop: Para todos los servicios de microk8s
  • microk8s.start: Arranca todos los servicios de microk8s

Nada más amigos, muy sencillo y para toda la familia, desplegado en unos 5 minutos máximo todo con la configuración adicional, etc. ¡Es el momento de aprender Kubernetes!

Filed Under: opensource Tagged With: kubernetes, kubernetes rapido, kubernetes single-node, microk8s

Reader Interactions

Comments

  1. Mario R says

    11 December, 2019 at 12:31

    Hola, he seguido tu tutorial para poder desplegar microk8s en una vm con ubuntu18, pero al intentar acceder me muestra el siguiente error

    {
    “kind”: “Status”,
    “apiVersion”: “v1”,
    “metadata”: {

    },
    “status”: “Failure”,
    “message”: “no endpoints available for service \”kubernetes-dashboard\””,
    “reason”: “ServiceUnavailable”,
    “code”: 503
    }

    gracias

    Reply
    • Jorge de la Cruz says

      11 December, 2019 at 19:20

      Saludos,
      Has seguido todos los pasos uno a uno? Estas accediendo desde tu pc o desde el propio server?

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar

  • Email
  • GitHub
  • LinkedIn
  • RSS
  • Twitter
  • YouTube

Gold Partners

Silver Partners

Libros Gratuitos

Cloud por vExperts
VMware por vExperts

VMware vExpert

Puesto 16 en Top vBlog

Calendario de Posts

July 2019
M T W T F S S
1234567
891011121314
15161718192021
22232425262728
293031  
« Jun   Aug »

Disclaimer

Todas las opiniones expresadas en este sitio son las mías propias y no representan las opiniones de ninguna compañía con la que haya trabajado, esté trabajando o vaya a estar trabajando.

Copyright © 2026 · El Blog de Jorge de la Cruz