Agregar Windows Server 2019 a cluster Kubernetes Linux
Hace unas entradas que hablamos de como crear un cluster Kubernetes en Debian.
En un entorno multisistema, conviven tanto servidores Linux como Windows indistintamente. Hoy quiero enseñaros como agregar un servidor Windows Server 2019 al clúster Kubernetes como Worker.
Dispongo de 3 nodos, 2 Workers Linux y un 1 Master Linux. La idea es agregar otro Worker pero con Windows, que algo que se puede hacer, y que nos va a permitir llevar las cargas de trabajo Windows (por ejemplo, .NET) a ese servidor y las cargas de Linux al resto. ¿Interesante no?:
La documentación oficial está en el siguiente enlace:
Yo os la explico:
- Yo deshabilito el firewall de Windows para que no me de problemas
- Necesitamos flannel, que en mi caso ya estaba configurado:
- Agregamos a todos los hosts del clúster el hostname para que se resuelvan entre ellos:
- Lanzamos sobre el master el siguiente comando y copiamos el resultado:
sudo curl -fsSL https://raw.githubusercontent.com/sixeyed/k8s-win/master/setup/ub-1804-config.sh | sh
- Instalamos en nuestro servidor Windows Server 2019 docker como administrador:
-
Start-Process powershell -Verb runAs
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider
Restart-Computer -Force
Install-Package -Name Docker -ProviderName DockerMsftProvider -Update -Force
Start-Service Docker
- Si lo ejecutáis sobre Hyper-V, deberéis seguir estos pasos adicionales:
Get-VM WinContainerHost | Set-VMProcessor -ExposeVirtualizationExtensions $true
Install-Module DockerProvider
Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview
[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
Restart-Service docker
- Si lo ejecutáis sobre Hyper-V, deberéis seguir estos pasos adicionales:
-
- Creamos el token para poder agregarlo desde el MASTER:
- Lanzamos el siguiente comando sobre el Windows Server 2019:
iwr -outf win-2019-setup.ps1 https://raw.githubusercontent.com/sixeyed/k8s-win/master/setup/win-2019-setup.ps1
./win-2019-setup.ps1
- La máquina se reiniciará nuevamente
- Ahora copiamos el resultado del master obtenido en un fichero llamado “config” sin extensión del servidor Windows:
- mkdir c:\kubernetes
- notepad.exe
- C:\k> Rename-Item .\config.txt .\config
- config:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01ERXdOekl3TWpreU1sb1hEVE13TURFd05ESXdNamt5TWxvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTit1CmJxd0lNaVIwZU93K0RyeWhKSmF3NkpWSlZyU2xFOCtYRjJtTGEyRUVrZ3YzRlF1OTNXNStuSVNCYTBQd09DWmkKcHlSaGNSa0pVTENkQWd6TnhhcjVTUnBEYm8yM0N5S2xQVDE3bHF3ZkZQTGVKRmZZcHJWLzBMdERiby8xWEI3RwpwZmFPcXpmbnVEcjFGWmgxZGRiYUhXTElPSll0Snc3WUVZM3JNekIybWxmNml0UzRIMzhiWHF5U3dRd1l0RjF5CkdSQVdHbVhoQ05PU1RrWWhTQnJFNit6MmtOMlQxUTZOVnRCZjNEbEVkbGFxTzRXejVvRUVicTJJU3dYRUh2QVUKK3o4aktROXpqM21qSnlCWkU0NGcyRTVvcEk0UUJsMW1lZXcvMDBtTEpEU2hJUHJqb1YwT0xuakRtbTNuVHZSLwordW5IRnJxdFdEeVdsMTVlTDdNQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDQjZxUU5aejVUb0NTenJBTzVUVHh4VjJFVlQKM1JZWmN2UkdHaGtFem9XRTdlNkdRRGxhTUg4TE11S0g4MTg5c25BK2JpQ0Y3RmYvaEFlSEx0dU9MdS9Oc2ZKRQpIdjNoSXd0aGpzc3BpTFJVSUZmS2piMTU3UlcvV3dSRlUvZ3lCa1FnSE9zNzJVUE5UR0pVc2FQbldaRmZHdHN0Ck1PbHFpREtWenNKTUNKaUtDcFVYYmJVcG5zQ01tNlRBaUtLM1VwV2VWbUl2VW1ETHBZM1lTclQxUTl2eTJ3WnUKYkU4SmxWS3JFTVBTNzhyY0VCbi9DWnorL28vdDhMSXRMRGdBQmdTdDR2NTdCVFQ2bkpNa3c1bTUwczZ1RWhlVgpzWDNGWVZaWHpIWkZ1U1hBbGpselJCRURvTGV6U1JhUlhqNTluSmZHcTFsN0hYV2FRR01TV0JTcllGWT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://192.168.2.193:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0lJQ3NuSGlWODFBMlV3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TURBeE1EY3lNREk1TWpKYUZ3MHlNVEF4TURZeU1ESTVNalZhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTBBUjBuc2pRUFhpZ3BBalcKWEZ1RzNMdjFXSElNeHkrSHVFQVZ5TGg5VjY2YlpjK2ZrVWVvYzZqYWl5MWNodjIwMUl4dVRDZlhZNHhiT2c5TwpFSkhJR1JTYk1ldnQ2QWNmbEtEdmF6ZEk2bllMd01mSCtBRUFTczgxOUxmTHJycWdLNk0wZnI4cFQ5WmVHVXYyCmRSNFBRS24rVENxS1RqYnMxU2lzRGdVZkRGaS9NczJscWs3THZ1OXIxdXRmL09tdlljQ1NVVUtsc2hibG9yb2UKVGtLVkwvU2hBQi95dnIwZzJGekt4MzRzejVoYjRRcnpTSHZTdzQrQmY0bzNWSHV2bnZUOSsxN2VuZHZxLzhjdwpBNWdvaGxCYk1yZFBjSklGNlVTblljYzUxcjBjMkxULy8zUGVXMG5YVEM4WTluenBmNXo2QVhKRHVuK0JxTEUyCkhtNy8wUUlEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKOVdxbDRHSW5RQnBBT2lPdG9SVk9tU3lLSitLV0oxUEZTSgpZWGx4dXJsV0w0dmd0RHMxbmZhRGtsVEw1KzNLVnE5K3Q4QlVrbmdDYVVBd21NVWxYN244R1JXSVV0aThUWUVFCnBuMjh5T1VmRFE4MUpGakt5RjMwZ0JyTGJwcERPblc4c0Zjc2grenovb2Q2ZGVna016elM1ZkRSVCt0V3lLVEcKUERlendUOUdQcExFL1A1RmpuUWJIaE1lSUl5Tm9pMHNHZW5kOER0ek1EdHFXK0tNS0JxN2FlQVhXaUN4M2hjRgpIaFU5SjA2V01EOUtKUVh4dndTWWFaWmdsaW1sL09MbGIxQlhjM0grdlE4bHhRaWlvZWtDQXRzMk9wRWxVT3JECnNlTUVWVkVEQ3N4azh6elE0RjZPSWFQR2FHeWdYN1J4YWgveEVUeFAraHR1Nlhud0NaTT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBMEFSMG5zalFQWGlncEFqV1hGdUczTHYxV0hJTXh5K0h1RUFWeUxoOVY2NmJaYytmCmtVZW9jNmphaXkxY2h2MjAxSXh1VENmWFk0eGJPZzlPRUpISUdSU2JNZXZ0NkFjZmxLRHZhemRJNm5ZTHdNZkgKK0FFQVNzODE5TGZMcnJxZ0s2TTBmcjhwVDlaZUdVdjJkUjRQUUtuK1RDcUtUamJzMVNpc0RnVWZERmkvTXMybApxazdMdnU5cjF1dGYvT212WWNDU1VVS2xzaGJsb3JvZVRrS1ZML1NoQUIveXZyMGcyRnpLeDM0c3o1aGI0UXJ6ClNIdlN3NCtCZjRvM1ZIdXZudlQ5KzE3ZW5kdnEvOGN3QTVnb2hsQmJNcmRQY0pJRjZVU25ZY2M1MXIwYzJMVC8KLzNQZVcwblhUQzhZOW56cGY1ejZBWEpEdW4rQnFMRTJIbTcvMFFJREFRQUJBb0lCQUZubm94UEJqU2NVVExHNAoxQlVFeGV2L0hKSUdjUGxoMUpIUXVObVF5ek9yVnFTUk1ORVVuSHlvblJRTUhmS0dFckxPb3hrdEd3MStheXRUCjFCU2JQVldCcjNYTEYzN3lIVGNhdTMrbVhGQmhoc0RpVjg0YmVLbmNsdUJXMDZTSUtwUFJyTzJlNTFjSE9wSksKWDVITTFTREltQTBKVWM5dU03d0pJUnZLSU5vdmRacHdTT2k0N2JWbWIwcTk1UitXL0Z3eXRYdStYeWN3UkVsawpqcndka3ZYQ0ZoOURwbUpZTEdqV3ZGUjJvK05CSGZKWEFhZmx6ZG5OTmxXeDR2TDJLVk5HUHZ3Q3NmK3dXUGtPCkRURlQydXFLbFd4aTRXVnpib0gyYVIySlE3Q3BtdVNWWXQ5aW5LNG54cTRCTW40bXZnMk8vRU9OeGlJL2lLQ0QKakxzajByRUNnWUVBN2R2YU1sNVc1czlUTGt0SWdYb05wWFluclhxV0dXYlRnUDJTYVBpQ3M1Wi9sQWpwbklSeQpvdWV0RHBxcml0eVJhMWJ5cE5sazV5UXcwSGhvTHIxV2JHVUdoY0ZnNS8wN1NTNWh0am1qcGlvR3hUaithc3pRCk1DNlMzOXlLMzV3NXFMNGtmc1IwbGdGS2xoeEJacmFNQjlOZEdZckR6VjgvNDRDSWozMElzRzBDZ1lFQTMrSDAKcUllODMxL3FKQ3lncC9aMmhtRmFJeUlSNW9xN3Bka1dyZi9FeWNXNzFrUEsrbWxENVg4MnNvQ3ZxNjhrbkFEYQpvL1lCQVhHWGt6MVhNR0I1VncrSGdjYisvQTVJSlFKZElhZ0pCZTV4MTFqbDdtTjlabDU5Y0p5cThGVGY0VEN0CmhZUTZNMUEwY2NsSkhGV0h6ZkMyTDJvT0hTSXg1am1lVjBWaEZuVUNnWUJXS3pWcTFkNXBrMll3K1RqMUh3QmUKbHVWYzVYSUhGY2M5alo5Q3cvU2xscm4xS1Ixb2hGcjdSUzdlZ1kzdnFtUk1ISjJldHRybEdhbE5mTEZSYldvbgpycG1rVHlBS0t5VVZKK1ppRzVON21QSUc5TlRHWUJoenZBdWRhY290byswSGdvcTZHZldhZWpGSkhFZGRMSGlpClJTSVBKTVEyWEhGS3U3KzlLN0RBS1FLQmdCS1FMN01SbmkxL1RIQzNhcExDc3MwdG9VV3NlNE44R1ZjRkN3WmUKWUxqQ05uTHJxQmJmUjR2dDRtRW1ubXBEMldzOS91TDljTlBuMFVPYUlIS1liVGMweUcyUVRIQWwxd0dLa3FKSgp4b1hCWVpzVGVlMHNQcWVRU2lKZU95WTJRMkh1b1ZTaXhCaWhHOWdiY241dzhSTzRVOExXcmxqb0R1OGg4K2tVCmpacEpBb0dCQUo3UUpNL2JXOUhyNnlGaWdoVDlYQjFzTFAxQWVjWUFuNWR4THMwYjFjaWRDRkJ1bUNDM0N6RDAKVEFmaG9rRmpSRzFYcTdRV1RyOW9YcDJqbFpyUVdwSUladkZwcENsS0lpaW1aQnlpU09sTWpwOStvOXV3TDVmLwp3cVc4Q3JmRDNOb1VPVFJHWGhlZFUrM2VHdk94cW4wWjlwS05Kd082MThZZXRodXFmdVFvCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
- Para terminar lanzamos estos comandos que instalarán los componentes de Kubernetes y nos agregarán el nodo al clúster:
iwr -outf win-2019-worker.ps1 https://raw.githubusercontent.com/sixeyed/k8s-win/master/setup/win-2019-worker.ps1
- Y lanzamos el comando con la IP de nuestro Worker Windows:
./win-2019-worker.ps1 -ManagementIP 192.168.2.150
- Es posible que tengáis que lanzar el comando sobre Windows (si va bien no es necesario):
cd c:\k
.\kubeadm.exe join 192.168.2.193:6443 --token kls9zy.k0e5x0xvcr40wo0w --discovery-token-ca-cert-hash sha256:44706d8ad99b18b8a18e78260b4c42a916271fcc152a30cc3201d2b3b212ed78
- Y comprobamos que el nodo se ha agregado al clúster correctamente
Podéis bajar los ficheros de configuración de:
git clone https://github.com/sixeyed/k8s-win.git
Una vez agregado veremos en otra entrada como trabajar con aplicaciones híbridas.
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?