<p>I have several Windows servers available and would like to setup a Kubernetes cluster on them.
Is there some tool or a step by step instruction how to do so?</p>
<p>What I tried so far is to install DockerDesktop and enable its Kubernetes feature.
That gives me a single node Cluster. However, adding additional nodes to that Docker-Kubernetes Cluster (from different Windows hosts) does not seem to be possible:
<a href="https://stackoverflow.com/questions/54658194/docker-desktop-kubernetes-add-node">Docker desktop kubernetes add node</a></p>
<p>Should I first create a Docker Swarm and could then run Kubernetes on that Swarm? Or are there other strategies?</p>
<p>I guess that I need to open some ports in the Windows Firewall Settings of the hosts? And map those ports to some  Docker containers in which Kubernetes is will be installed? What ports?</p>
<p>Is there some program that I could install on each Windows host and that would help me with setting up a network with multiple hosts and connecting the Kubernetes nodes running inside Docker containers? Like a &quot;kubeadm for Windows&quot;?</p>
<p>Would be great if you could give me some hint on the right direction.</p>
<p><strong>Edit</strong>:<br>
Related info about installing <strong>kubeadm inside Docker</strong> container:<br>
<a href="https://github.com/kubernetes/kubernetes/issues/35712" rel="nofollow noreferrer">https://github.com/kubernetes/kubernetes/issues/35712</a><br>
<a href="https://github.com/kubernetes/kubeadm/issues/17" rel="nofollow noreferrer">https://github.com/kubernetes/kubeadm/issues/17</a></p>
<p>Related question about <strong>Minikube</strong>:<br>
<a href="https://stackoverflow.com/questions/51821057/adding-nodes-to-a-windows-minikube-kubernetes-installation-how">Adding nodes to a Windows Minikube Kubernetes Installation - How?</a></p>
<p>Info on <strong>kind</strong> (kubernetes in docker) multi-node cluster:<br>
<a href="https://dotnetninja.net/2021/03/running-a-multi-node-kubernetes-cluster-on-windows-with-kind/" rel="nofollow noreferrer">https://dotnetninja.net/2021/03/running-a-multi-node-kubernetes-cluster-on-windows-with-kind/</a>
(Creates multi-node kubernetes cluster on <strong>single</strong> windows host)<br>
Also see:</p>
<ul>
<li><a href="https://github.com/kubernetes-sigs/kind/issues/2652" rel="nofollow noreferrer">https://github.com/kubernetes-sigs/kind/issues/2652</a></li>
<li><a href="https://hub.docker.com/r/kindest/node" rel="nofollow noreferrer">https://hub.docker.com/r/kindest/node</a></li>
</ul>

<p>You can always refer to the official kubernetes documentation which is the right source for the information.</p>
<p>This is the correct way to manage this question.</p>
<p>Based on <a href="https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes/" rel="nofollow noreferrer">Adding Windows nodes</a>, you need to have two prerequisites:</p>
<blockquote>
<ul>
<li><p>Obtain a Windows Server 2019 license (or higher) in order to configure the Windows node that hosts Windows containers. If you are
using VXLAN/Overlay networking you must have also have KB4489899
installed.</p>
</li>
<li><p>A <strong>Linux-based Kubernetes kubeadm cluster</strong> in which you have access to the control plane (<a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/" rel="nofollow noreferrer">see Creating a single control-plane cluster with kubeadm</a>).</p>
</li>
</ul>
</blockquote>
<p>Second point is especially important since all control plane components are supposed to be run on linux systems (I guess you can run a Linux VM on one of the servers to host a control plane components on it, but networking will be much more complicated).</p>
<p>And once you have a proper running control plane, there's a <a href="https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/adding-windows-nodes/#joining-a-windows-worker-node" rel="nofollow noreferrer"><code>kubeadm for windows</code></a> to proper join Windows nodes to the kubernetes cluster. As well as a documentation on <a href="https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/upgrading-windows-nodes/" rel="nofollow noreferrer">how to upgrade windows nodes</a>.</p>
<p>For firewall and which ports should be open check <a href="https://kubernetes.io/docs/reference/ports-and-protocols/" rel="nofollow noreferrer">ports and protocols</a>.</p>
<p>For worker node (which will be windows nodes):</p>
<pre><code>Protocol    Direction   Port Range    Purpose            Used By
TCP         Inbound     10250         Kubelet API        Self, Control plane
TCP         Inbound     30000-32767   NodePort Services  All
</code></pre>
<hr />
<p>Another option can be running windows nodes in cloud managed kuberneres, for example <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-cluster-windows" rel="nofollow noreferrer">GKE with windows node pool</a> (yes, I understand that it's not your use-case, but for further reference).</p>
