Importante
Este artículo está obsoleto y puede contener información desactualizada. Por favor, consulta la documentación más reciente para obtener la información actualizada.
Kubernetes es un sistema de orquestación de contenedores que se puede utilizar para automatizar la implementación, escalado y administración de aplicaciones. MicroK8s es una implementación de Kubernetes que permite ejecutar Kubernetes en Snap. MicroK8s es un paquete único que se ejecuta en los principales sistemas operativos basados en Linux. Viene con un registro docker para que puedas crear e implementar fácilmente contenedores en tu sistema. Microk8s es rápido, ligero y ejecuta todos los servicios de Kubernetes de forma nativa.
En este tutorial, te enseñamos cómo instalar MicroK8s y poner en marcha tu cluster Kubernetes.
Requisitos
- Un servidor cloud corriendo con Ubuntu 18.04 con 4 GB de RAM.
- Una contraseña root establecida en tu servidor.
Empezamos
Primero, actualiza tu servidor con la última versión con el siguiente comando:
# apt-get update && apt-get upgrade -y
Una vez esté actualizado tu servidor en la nube, reinícialo para aplicar todos los cambios.
Instala MicroK8s
Primero, necesitarás instalar Snap para después instalar MicroK8s. Puedes instalar Snap con el siguiente comando:
# apt-get install snapd -y
Una vez que Snap ha sido instalado, puedes instalar MicroK8s usando el comando Snap como se muestra más abajo:
# snap install microk8s --classic
Una vez que MicroK8s se ha instalado, puedes comprobar la información de MicroK8s con el siguiente comando:
# snap info microk8s
Deberías ver el siguiente resultado:
name: microk8s
summary: Kubernetes for workstations and appliances
publisher: Canonical✓
contact: https://github.com/ubuntu/microk8s
license: unset
description: |
MicroK8s is a small, fast, secure, single node Kubernetes that installs on just
about any Linux
box. Use it for offline development, prototyping, testing, or use it on a VM
as a small, cheap, reliable k8s for CI/CD. It's also a great k8s for
appliances - develop your IoT apps for k8s and deploy them to MicroK8s on your boxes.
También puedes comprobar el estado del despliegue de MicroK8s con el siguiente comando:
# microk8s.status
Podrás ver el estado de MicroK8s con los addons disponibles en el siguiente resultado:
microk8s is running
addons:
knative: disabled
jaeger: disabled
fluentd: disabled
gpu: disabled
storage: disabled
registry: disabled
rbac: disabled
ingress: disabled
dns: disabled
metrics-server: disabled
linkerd: disabled
prometheus: disabled
istio: disabled
dashboard: disabled
Para comprobar la información del cluster, hazlo con el siguiente comando:
# microk8s.kubectl cluster-info
Deberías ver el siguiente resultado:
Kubernetes master is running at https://127.0.0.1:16443
Para diagnosticar y depurar posibles problemas del cluster, utiliza ‘kubectl cluster-info dump’.
Trabajando con MicroK8s
También puedes listar los nodos de MicroK8s con el siguiente comando:
# microk8s.kubectl get nodes
Deberías ver el siguiente resultado:
NAME STATUS ROLES AGE VERSION
ubuntu1804 Ready 2m14s v1.15.0
O con el siguiente comando:
# microk8s.kubectl get nodes -o wide
Deberías ver el siguiente resultado:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION
CONTAINER-RUNTIME
ubuntu1804 Ready 3m5s v1.15.0 192.168.0.2 Ubuntu 18.04 LTS 4.15.0-20-generic
containerd://1.2.5
MicroK8s viene con muchos addons incorporados. Puedes habilitarlos o deshabilitarlos en función de tus necesidades.
Puedes habilitar addons dns del panel con el siguiente comando:
# microk8s.enable dashboard dns
Deberías ver el siguiente resultado:
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
Si RBAC no está habilitado, accede al panel utilizando el token predeterminado recuperado con:
# token=$(microk8s.kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
# microk8s.kubectl -n kube-system describe secret $token
En una configuración habilitada para RBAC (microk8s.enable RBAC) necesitas crear un usuario con restricción de permisos como se muestra en https://github.com/kubernetes/dashboard/wiki/Creating-sample-user
Enabling DNS
Applying manifest
serviceaccount/coredns created
configmap/coredns created
deployment.apps/coredns created
service/kube-dns created
Restarting kubelet
DNS is enabled
Para habilitar las extensiones de almacenamiento, hazlo con el siguiente comando:
# microk8s.enable storage
Deberías ver el siguiente resultado:
Enabling default storage class
deployment.extensions/hostpath-provisioner created
storageclass.storage.k8s.io/microk8s-hostpath created
Storage will be available soon
Después de habilitar las extensiones requeridas, comprueba la información del cluster con el siguiente comando:
# microk8s.kubectl cluster-info
Deberías ver el siguiente resultado:
Kubernetes master is running at https://127.0.0.1:16443
Heapster is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/heapster/proxy
CoreDNS is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Grafana is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
InfluxDB is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/monitoring-influxdb:http/proxy
Cómo Desplegar Pods and Containers
Puedes crear y desplegar pods y contenedores con MicroK8s fácilmente.
Crearemos un despliegue de Nginx con el contenedor con el siguiente comando:
# microk8s.kubectl run nginx --replicas 1 --image nginx
Deberías ver el siguiente resultado:
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed
in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create
instead.
deployment.apps/nginx created
Ahora puedes hacer una lista de los despliegues con el siguiente comando:
# microk8s.kubectl get deployments
Deberías ver el siguiente resultado:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 1/1 1 1 2m33s
Y hacer una lista de los pods con el siguiente comando:
# microk8s.kubectl get pods
Deberías ver el siguiente resultado:
NAME READY STATUS RESTARTS AGE
nginx-7bb7cd8db5-n88qm 1/1 Running 0 2m47s
Después de desplegar el contenedor de Nginx, verás el servicio Nginx con el siguiente comando:
# microk8s.kubectl get services
Deberías ver el siguiente resultado:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.152.183.1 443/TCP 18m
nginx ClusterIP 10.152.183.127 80/TCP 45s
Si quieres quitar MicroK8s, primero elimina el despliegue y servicio de Nginx con el siguiente comando:
# microk8s.kubectl delete deployment nginx
# microk8s.kubectl delete service nginx
Después. elimina MicroK8s de tu sistema por completo con el siguiente comando:
# microk8s.reset
# snap remove microk8s
¡Felicidades! Ya puedes implementar y administrar contenedores con MicroK8.
¿Tienes alguna pregunta? No dudes en contactarnos. Estaremos encantados de ayudarte en todo lo que necesites 🙂