MiniKube - Instalación.
En este post veremos como instalar MiniKube, un producto simple, con un solo nodo y que corre en modo local para probar Kubernetes.
Lógicamente nos estaremos perdiendo parte de la complejidad de Kubernetes, pero para aprender o para pruebas rápidas es un muy buen producto. Minikube corre como una máquina virtual sobre nuestro equipo real.
Usaremos un equipo real con Linux Xubuntu 19.04.
Luego debemos verificar la CPU y memoria RAM, debemos tener al menos 4 Cores y 4 gb RAM.
También debemos tener instalado un producto de Virtualización, en mi caso tengo instalado VirtualBox 6.0.4.
Desde una sesión BASH comenzamos la instalación, con paquetes que necesitará MiniKube, agregamos un repositorio
apt update
apt upgrade
apt install -y apt-transport-https
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube
sudo cp minikube /usr/local/bin
rm minikube
Descarga una ISO de 142 megas al ponerse a funcionar y creará una máquina virtual llamada “minikube” con 2 Vcpu y 2 gb ram.
Este proceso lo deberemos ejecutar como un usuario del S.O. y no hace falta ser “root”, la máquina virtual Virtualbox se creará en nuestra cuenta.
minikube start
😄 minikube v1.0.1 on linux (amd64)
🤹 Downloading Kubernetes v1.14.1 images in the background ...
🔥 Creating virtualbox VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...
📶 "minikube" IP address is 192.168.99.100
🐳 Configuring Docker as the container runtime ...
🐳 Version of container runtime is 18.06.3-ce
⌛ Waiting for image downloads to complete ...
✨ Preparing Kubernetes environment ...
💾 Downloading kubeadm v1.14.1
💾 Downloading kubelet v1.14.1
🚜 Pulling images required by Kubernetes v1.14.1 ...
🚀 Launching Kubernetes v1.14.1 using kubeadm ...
⌛ Waiting for pods: apiserver proxy etcd scheduler controller dns
🔑 Configuring cluster permissions ...
🤔 Verifying component health .....
💗 kubectl is now configured to use "minikube"
🏄 Done! Thank you for using minikube!
Luego para tener una interfaz gráfica deberemos correr.
minikube addons enable dashboard
minikube dashboard
🔌 Enabling dashboard ...
🤔 Verifying dashboard health ...
🚀 Launching proxy ...
🤔 Verifying proxy health ...
🎉 Opening http://127.0.0.1:45305/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser...
Si todo funciona bien, nos abrirá una página WEB en nuestro equipo Real desde donde podemos ver Kubernetes y sus componentes.
Veremos en Virtualbox los detalles de la máquina virtual.
Para detener ese equipo debemos hacerlo desde la interfaz BASH.
minikube stop
✋ Stopping "minikube" in virtualbox ...
🛑 "minikube" stopped.
La clave asignada a root es “tcuser”.
En nuestro caso este equipo virtual tiene el ip 192.168.99.100.
Aunque no la necesitamos ya que podemos conectarnos directamente al equipo virtual con “docker ssh”.
minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
# Dentro del equipo podemos vereficar detalles del equipo virtual.
$ sudo su -
# uname -a
Linux minikube 4.15.0 #1 SMP Thu Apr 25 20:51:48 UTC 2019 x86_64 GNU/Linux
Miremos las unidades de almacenamiento del equipo virtual.
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 927M 0 927M 0% /dev
tmpfs 996M 0 996M 0% /dev/shm
tmpfs 996M 17M 979M 2% /run
tmpfs 996M 0 996M 0% /sys/fs/cgroup
tmpfs 996M 52K 996M 1% /tmp
/dev/sda1 17G 1.3G 15G 8% /mnt/sda1
/hosthome 469G 284G 186G 61% /hosthome
Con “ifconfig” podremos ver las redes definidas.
# ifconfig
docker0 Link encap:Ethernet HWaddr 02:42:0B:E6:F2:A5
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
inet6 addr: fe80::42:bff:fee6:f2a5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8695 errors:0 dropped:0 overruns:0 frame:0
TX packets:9371 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1593229 (1.5 MiB) TX bytes:2732385 (2.6 MiB)
eth0 Link encap:Ethernet HWaddr 08:00:27:8A:22:DC
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe8a:22dc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:770753 errors:0 dropped:0 overruns:0 frame:0
TX packets:64022 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1140061067 (1.0 GiB) TX bytes:4546750 (4.3 MiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:38:E0:4C
inet addr:192.168.99.100 Bcast:192.168.99.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe38:e04c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:419 errors:0 dropped:0 overruns:0 frame:0
TX packets:453 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:56630 (55.3 KiB) TX bytes:989565 (966.3 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:204995 errors:0 dropped:0 overruns:0 frame:0
TX packets:204995 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:47520718 (45.3 MiB) TX bytes:47520718 (45.3 MiB)
veth2c25c09 Link encap:Ethernet HWaddr 5E:96:34:21:C2:26
inet6 addr: fe80::5c96:34ff:fe21:c226/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3558 errors:0 dropped:0 overruns:0 frame:0
TX packets:3789 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:294798 (287.8 KiB) TX bytes:1114343 (1.0 MiB)
veth9f2c5d6 Link encap:Ethernet HWaddr A6:AD:FE:2D:01:25
inet6 addr: fe80::a4ad:feff:fe2d:125/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3570 errors:0 dropped:0 overruns:0 frame:0
TX packets:3823 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:296092 (289.1 KiB) TX bytes:1123798 (1.0 MiB)
vethd4275e0 Link encap:Ethernet HWaddr 4E:0B:BD:0A:DC:05
inet6 addr: fe80::4c0b:bdff:fe0a:dc05/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1567 errors:0 dropped:0 overruns:0 frame:0
TX packets:1843 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1124069 (1.0 MiB) TX bytes:500778 (489.0 KiB)
Mediante “top” podremos ver los procesos corriendo.
TOP
top - 16:47:35 up 33 min, 1 user, load average: 0.03, 0.09, 0.09
Tasks: 184 total, 1 running, 183 sleeping, 0 stopped, 0 zombie
%Cpu0 : 3.4/2.1 5[||| ]
%Cpu1 : 2.1/1.4 3[|| ]
GiB Mem : 26.3/1.9 [ ]
GiB Swap: 0.0/0.0 [ ]
PID USER PR NI VIRT RES %CPU %MEM TIME+ S COMMAND
1 root 20 0 37.1m 7.4m 0.0 0.4 0:18.00 S /sbin/init noemb+
1312 root 20 0 52.0m 8.0m 0.0 0.4 0:00.74 S `- /usr/lib/sys+
1966 root 20 0 43.1m 4.9m 0.0 0.2 0:00.07 S `- /usr/lib/sys+
1970 systemd+ 20 0 46.1m 4.8m 0.0 0.2 0:00.03 S `- /usr/lib/sys+
1982 systemd+ 20 0 33.3m 3.8m 0.0 0.2 0:00.10 S `- /usr/lib/sys+
2001 root 20 0 12.9m 0.5m 0.0 0.0 0:00.00 S `- /usr/sbin/rp+
2010 root 20 0 9.0m 0.4m 0.0 0.0 0:00.00 S `- /sbin/getty +
2016 dbus 20 0 22.1m 3.1m 0.0 0.2 0:00.17 S `- /usr/bin/dbu+
2019 root 20 0 19.3m 2.1m 0.0 0.1 0:00.00 S `- /usr/bin/rpc+
2023 root 20 0 27.7m 4.1m 0.0 0.2 0:00.08 S `- /usr/lib/sys+
2032 root 20 0 297.6m 2.8m 0.0 0.1 0:00.37 S `- /usr/sbin/VB+
2148 root 20 0 21.6m 4.3m 0.0 0.2 0:00.01 S `- /usr/sbin/ss+
15228 root 20 0 21.6m 4.4m 0.0 0.2 0:00.00 S `- sshd: do+
15230 docker 20 0 21.6m 2.8m 0.0 0.1 0:00.00 S `- sshd+
15341 root 20 0 21.6m 4.2m 0.0 0.2 0:00.00 S `- sshd: do+
15343 docker 20 0 21.6m 3.1m 0.0 0.2 0:00.00 S `- sshd+
Veremos los contenedores corriendo.
docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
69f947f2a42b k8s_kube-addon-manager_kube-addon-manager- 0.00% 1.93MiB / 1.944GiB 0.10% 0B / 0B 0B / 0B 2
643908fd5b5d k8s_POD_kube-addon-manager-minikube_kube-s 0.00% 456KiB / 1.944GiB 0.02% 0B / 0B 0B / 0B 1
488fbf405d40 k8s_kube-controller-manager_kube-controlle 1.26% 37.83MiB / 1.944GiB 1.90% 0B / 0B 0B / 0B 9
57ef46a97ac5 k8s_POD_kube-controller-manager-minikube_k 0.00% 516KiB / 1.944GiB 0.03% 0B / 0B 0B / 0B 1
ea23b7c79190 k8s_coredns_coredns-fb8b8dccf-kc7cj_kube-s 0.26% 7.727MiB / 170MiB 4.55% 1.13MB / 300kB 0B / 0B 10
3567be0e2ecd k8s_storage-provisioner_storage-provisione 0.02% 13.68MiB / 1.944GiB 0.69% 0B / 0B 0B / 0B 8
f38a7f2fc1c2 k8s_coredns_coredns-fb8b8dccf-xx2gl_kube-s 0.24% 7.871MiB / 170MiB 4.63% 1.14MB / 301kB 0B / 0B 11
d8acfd332ae4 k8s_kubernetes-dashboard_kubernetes-dashbo 0.00% 14.97MiB / 1.944GiB 0.75% 503kB / 1.13MB 0B / 0B 9
d891ac9adf07 k8s_kube-proxy_kube-proxy-plmt7_kube-syste 0.06% 11.19MiB / 1.944GiB 0.56% 0B / 0B 0B / 0B 8
54984f2e04e8 k8s_POD_kube-proxy-plmt7_kube-system_353fe 0.00% 512KiB / 1.944GiB 0.03% 0B / 0B 0B / 0B 1
47f9a0729b68 k8s_POD_kubernetes-dashboard-79dd6bfc48-zh 0.00% 444KiB / 1.944GiB 0.02% 503kB / 1.13MB 0B / 0B 1
deac3685d898 k8s_POD_storage-provisioner_kube-system_f1 0.00% 376KiB / 1.944GiB 0.02% 0B / 0B 0B / 0B 1
cf68e6c999ee k8s_POD_coredns-fb8b8dccf-xx2gl_kube-syste 0.00% 488KiB / 1.944GiB 0.02% 1.14MB / 301kB 0B / 0B 1
2beccdc79ec1 k8s_POD_coredns-fb8b8dccf-kc7cj_kube-syste 0.00% 492KiB / 1.944GiB 0.02% 1.13MB / 300kB 0B / 0B 1
f449d28a680c k8s_kube-scheduler_kube-scheduler-minikube 0.17% 10.06MiB / 1.944GiB 0.51% 0B / 0B 0B / 0B 10
2dae1f39a5e0 k8s_kube-apiserver_kube-apiserver-minikube 2.58% 195.3MiB / 1.944GiB 9.81% 0B / 0B 0B / 0B 11
c220a26a8dcd k8s_etcd_etcd-minikube_kube-system_18c827a 1.45% 31.81MiB / 1.944GiB 1.60% 0B / 0B 0B / 0B 12
41c5e4511470 k8s_POD_etcd-minikube_kube-system_18c827a1 0.00% 336KiB / 1.944GiB 0.02% 0B / 0B 0B / 0B 1
4742ef8b02bd k8s_POD_kube-scheduler-minikube_kube-syste 0.00% 496KiB / 1.944GiB 0.02% 0B / 0B 0B / 0B 1
6a58cec61de0 k8s_POD_kube-apiserver-minikube_kube-syste 0.00% 484KiB / 1.944GiB 0.02% 0B / 0B 0B / 0B 1