Instalar Kubernetes en Windows 10
Hoy os vamos a contar como podemos instalar una infraestructura Kubernetes bajo un PC Windows 10 PRO con Hyper-V.
Para ello vamos a utilizar un MinisForum U820 () de mi lab. Iba a utilizar Proxmox, pero realmente Hyper-V funciona muy bien, y le voy a dar una pequeña oportunidad, hasta que vuelva a montar un cluster con varios de estos equipos (que no son fáciles de encontrar a buen precio):
Kubernetes: Instalar Hyper-V en Windows 10
Lo primero que haremos es instalar el componente de Hyper-V:
Lo podéis hacer vía comando Powershell:
1 |
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V |
Tendréis que reiniciar el PC.
Kubernetes: Instalar Docker en Windows 10
También necesitaremos Docker Desktop. Lo podéis descargar desde la siguiente URL:
1 |
https://docs.docker.com/desktop/install/windows-install/ |
Ha pasado una cosa curiosa, entiendo por los tipos de cambios que ha intentado hacer en el sistema, pero ha detectado el antivirus Windows Defender el ejecutable de Docker Desktop como una amenaza:
Aquí podéis plantaros o buscar una solución, como deshabilitar el antivirus temporalmente para que os deje modificar el sistema:
Para ejecutar la instalación podéis hacerlo de la siguiente forma, vais a la ruta del instalador y lanzáis:
1 |
Start-Process 'Docker Desktop Installer.exe' -Wait install |
Os pedirá reiniciar el sistema para completar la instalación:
Al arrancar el sistema aceptaremos las condiciones (ya con el antivirus activo):
Nos aparecerá un Warning que es necesario actualizar el kernel:
Abrimos una consola de Powershell y lanzamos el siguiente comando:
1 2 3 |
PS C:\Users\administrator> wsl --update Instalando: Subsistema de Windows para Linux Se ha instalado Subsistema de Windows para Linux. |
Intentamos abrir nuevamente Docker Desktop:
Y ahora ya no tendremos ese Warning:
Kubernetes: Instalar Kubernetes en Windows 10
Ahora sólo nos queda instalar el paquete de Kubernetes. Lo haremos desde la siguiente URL:
1 |
https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/ |
Lo haré desde Powershell de la siguiente forma:
1 |
curl.exe -LO "https://dl.k8s.io/release/v1.26.0/bin/windows/amd64/kubectl.exe" |
Lanzamos también:
1 |
curl.exe -LO "https://dl.k8s.io/v1.26.0/bin/windows/amd64/kubectl.exe.sha256" |
Veremos que hemos bajado dos paquetes:
Validamos que son correctos:
1 2 |
PS C:\Users\administrator> (Get-FileHash -Algorithm SHA256 .\kubectl.exe).Hash -eq $(Get-Content .\kubectl.exe.sha256) True |
Comprobamos la versión:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
PS C:\Users\administrator> kubectl version --client WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version. Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.4", GitCommit:"872a965c6c6526caa949f0c6ac028ef7aff3fb78", GitTreeState:"clean", BuildDate:"2022-11-09T13:36:36Z", GoVersion:"go1.19.3", Compiler:"gc", Platform:"windows/amd64"} Kustomize Version: v4.5.7 PS C:\Users\administrator> kubectl version --client --output=yaml clientVersion: buildDate: "2022-11-09T13:36:36Z" compiler: gc gitCommit: 872a965c6c6526caa949f0c6ac028ef7aff3fb78 gitTreeState: clean gitVersion: v1.25.4 goVersion: go1.19.3 major: "1" minor: "25" platform: windows/amd64 kustomizeVersion: v4.5.7 |
Para que funcione automáticamente el comando cada vez que le llamemos, deberemos agregar una variable en el sistema:
Pulsamos el botón Variables de entorno:
Agregamos el path donde hemos dejado los ficheros (no los podéis tocar para que no falle, así que los podéis dejar en el raíz de C: si os parece mejor):
Luego validáis que podéis llamarlo desde cualquier parte del sistema, cambiando el path en la consola:
Kubernetes: Manejar Kubernetes en Docker Desktop de Windows 10
Para poder controlar Kubernetes de forma gráfica, podéis habilitarlo e integrarlo en Docker Desktop de la siguiente forma:
Pulsamos Install:
Veréis que cambia el icono de la parte inferior de naranja a verde:
Kubernetes: Instalar Dashboard en Windows 10
Para completar el círculo, instalamos el Dashboard de Kubernetes con el siguiente comando:
1 |
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml |
Veréis que se generan diferentes componentes desde Docker Desktop:
Lanzamos el Dashboard de Kubernetes:
1 2 |
PS C:\> kubectl.exe proxy Starting to serve on 127.0.0.1:8001 |
Abrimos el navegador y lanzamos la siguiente URL:
1 |
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ |
Para generar el token, generamos dos ficheros YAML, para generar el servicio y otro para darle los permisos necesarios:
- service-account-yaml
1 2 3 4 5 |
apiVersion: v1 kind: ServiceAccount metadata: name: negu-user namespace: kubernetes-dashboard |
- dashboard-neguuser.yaml
1 2 3 4 5 6 7 8 9 10 11 12 |
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: negu-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: negu-user namespace: kubernetes-dashboard |
1 2 3 4 |
kubectl apply -f service-account.yaml PS D:\> kubectl apply -f service-account.yaml serviceaccount/negu-user created |
1 2 3 4 |
kubectl apply -f dashboard-neguuser.yaml PS D:\> kubectl apply -f dashboard-neguuser.yaml clusterrolebinding.rbac.authorization.k8s.io/negu-user created |
1 |
kubectl -n kubernetes-dashboard create token negu-user |
1 2 |
PS D:\> kubectl -n kubernetes-dashboard create token negu-user eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5OR0I3TXZjT29aSmluMjIwdTdtQmJBM3paMXpnM1NKRzZQQ2p6bmxWT0kifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjc5NzQ2ODU1LCJpYXQiOjE2Nzk3NDMyNTUsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJuZWd1LXVzZXIiLCJ1aWQiOiJmZmE1YjgzMi1jOWVjLTRjOWQtOTY2NC03NjFlZmI3ODE0MWUifX0sIm5iZiI6MTY3OTc0MzI1NSwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmVybmV0ZXMtZGFzaGJvYXJkOm5lZ3UtdXNlciJ9.NEEkfB3E9FsWb1XWt54nak2PpzwjXcl2ingY8FS7QVFR1MD0EiYmu8VUGiJ_DK322LbbiD3adL3ONm7P_ZgjJutyAYXmUlaZUmyNoFCJCtbveBGiE9EKJDNKHdBY_QGTiLw4astnS5Cwg8BvG7c8-4ONN7Q45SSsHMiMEsZULh5VGijg0ek-van4piZeQId9PGXCwSUgI8rhkAUeNv_iNI8ArFHIUdvc3wzie7vWY9Wnl6A697VxdSva0DpXS1TdmpGIOUCa2mGc5TwcgPFKfFBPbFDn1wVcGqzVyjp0jzn7r2kwvJj9naBWP3fDYHDUFVV_lrgYP5Gfig5WeiTYDQ |
Lo agregamos en la URL con la opción Token:
Ya tendremos acceso al Dashboard:
Kubernetes: Primer deployment en Windows 10
Para realizar una prueba genero un deployment de nginx con 6 réplicas, mediante un fichero YAML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-elblogdenegu labels: app: nginx spec: replicas: 6 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 8080 |
Ejecutamos:
1 2 |
PS D:\> kubectl apply -f .\nginx-deployment.yaml deployment.apps/nginx-deployment-elblogdenegu created |
También lo podéis ver en Docker Desktop:
Podremos manejarnos fácilmente de forma gráfica, si borramos un Pod, veremos como se crea otro:
Podremos manejarnos vía comando o de forma gráfica con nuestra infraestructura de Kubernetes, fácilmente:
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?