Skip to content

Install Windows worker nodes#

MKE 4 supports mixed-OS clusters, which thus allows you to run Windows worker nodes alongside Linux nodes in the same cluster. This enables you to schedule Windows-based workloads while maintaining the Linux foundation that MKE requires.

Running Windows workloads on MKE 4 requires that:

  • Controller nodes run Linux.
  • At least one worker node runs Linux.
  • Windows nodes can only serve as worker nodes.
  • The cluster must have enough Linux nodes to host the Calico Typha component, which the Tigera operator scales automatically based on total node count (including Windows nodes).

    Total nodes (Linux + Windows) Minimum Linux nodes required
    <5 2 (the manager + worker above)
    5 or more 3
    400+ 4, plus 1 more per additional 200 nodes

If you are installing MKE 4 in an air-gapped environment, refer to the Offline installation.

Limitations#

  • Regarding Windows Server, MKE 4 only supports Windows Server 2022.
  • Calico must run in VXLAN encapsulation mode.
  • The Calico VXLAN port must be set to 4789.
  • The mkectl node add and mkectl node remove commands are not supported for Windows nodes. Instead, use the mkectl apply command to add and remove Windows nodes.
  • Windows nodes must support SSH. WinRM is not currently supported.
  • The Calico Linux dataplane must be run in iptables mode.

Create the cluster configuration file#

Create an mke4.yaml configuration file and include all of the Linux and Windows hosts in the spec.hosts section.

Note

The user account provided for Windows workers must have administrator privileges.

At a high level, the spec.hosts section should include:

  • Linux hosts with the controller+worker role for the control plane
  • At least one Linux host with the worker role
  • Any Windows hosts with the worker role

Example mke4.yaml configuraiton file:

apiVersion: mke.mirantis.com/v1alpha1
kind: MkeConfig
spec:
  hosts:
    - ssh:
        address: 192.0.2.10
        user: ubuntu
      role: controller
    - ssh:
        address: 192.0.2.20
        user: ubuntu
      role: worker
    - ssh:
        address: 192.0.2.30
        user: Administrator
      role: worker

Install MKE 4#

To install MKE 4, run the installation command:

mkectl apply -f mke4.yaml

For your mixed-cluster install, MKE 4 automatically performs Windows-aware validation and installation steps, including:

  • Detection of Windows worker nodes in the cluster definition.
  • Application of the Windows-specific networking setup required to bring up the cluster.
  • Maintaining of the Linux-only system components that are scheduled on the Linux nodes.
  • Running networking verification for both Linux and Windows nodes when Windows workers are present

Verify the installation#

Once your MKE cluster is configured, run the checks detailed herein to confirm that Windows node support is functioning as expected.

  1. Confirm that all Linux and Windows nodes are in the Ready state.
  2. Confirm that MKE system components are running on the Linux nodes.
  3. Confirm that you can schedule Windows workloads on Windows nodes.
  4. Verify the Windows workload scheduling:

    1. Create a simple test Pod that uses a Windows container image:

      apiVersion: v1
      kind: Pod
      metadata:
        name: windows-smoke-test
      spec:
        nodeSelector:
          kubernetes.io/os: windows
        tolerations:
          - key: os
            operator: Equal
            value: windows
            effect: NoSchedule
        containers:
          - name: nanoserver
            image: registry.mirantis.com/windows/nanoserver:ltsc2022
            command:
              - cmd.exe
              - /c
              - ping -t 127.0.0.1
      
    2. Apply the test Pod:

      kubectl apply -f windows-smoke-test.yaml
      
    3. Confirm that the test Pod is scheduled to a Windows node and that it is able to reach Running state:

      kubectl get pod windows-smoke-test -o wide
      
    4. Clean up the test workload:

      kubectl delete pod windows-smoke-test