Learn KOP - Provision EKS Cluster with Windows Node Group - Rafay Product Documentation

Part 1: Provision

What Will You Do

In this part of the self-paced exercise, you will provision an Amazon EKS cluster which contains two (2) managed nodes groups. The first managed node group will be comprised of Linux on-demand compute instances and run the system level resources while the second managed node group will be comprised of Windows instances and run application workloads. The cluster will use the minimal blueprint.


Step 1: Provision Cluster

In this step, we will provision an EKS cluster through the web console. We will first deploy the cluster with a single node group for system level resources. We will then add the Windows node group to the cluster.


Step 2: Add Windows Node Group

In this step, we will add a Windows node group to the cluster through the web console.

You can see the windows node group creating

After a few minutes, the Windows node group finishes provisioning. You can see the node group is using the Windows Server AMI.


Step 3: Verify Cluster

Once provisioning is complete, you should see the cluster in the web console with two nodes.

kubectl get nodes -o wide

You should see output similar to the following showing the Linux and Windows nodes.

NAME                                           STATUS   ROLES    AGE   VERSION               INTERNAL-IP      EXTERNAL-IP      OS-IMAGE                         KERNEL-VERSION                 CONTAINER-RUNTIME
ip-192-168-58-114.us-west-2.compute.internal   Ready    <none>   80m   v1.24.7-eks-fb459a0   192.168.58.114   35.92.212.8      Amazon Linux 2                   5.4.226-129.415.amzn2.x86_64   containerd://1.6.6
ip-192-168-80-118.us-west-2.compute.internal   Ready    <none>   30m   v1.24.7-eks-fb459a0   192.168.80.118   44.234.144.188   Windows Server 2019 Datacenter   10.0.17763.3887                containerd://1.6.6

Now we will verify the system resources are running on the on-demand Linux node group.

You will see that all of the system components are running on the "managed-system" node that was previously identified.


Step 4: Create Namespace

In this step, we will create a namespace using the web console. The namespace will be used to deploy workloads in future steps.

The namespace is now published on the cluster.


Step 5: Enable Windows Support

In this step, we will create a YAML based workload and publish the workload to the cluster. The workload will create a configmap to enable Windows Support on the cluster.

By default, the amazon-vpc-cni doesn't have Windows support enabled, and to deploy Windows pods so it can have its own VPC IP, we need to enable it in the EKS control plane. To do this, we will create a configmap in the cluster.

apiVersion: v1
kind: ConfigMap
metadata:
  name: amazon-vpc-cni
  namespace: kube-system
data:
  enable-windows-ipam: "true"

The YAML workload is now published on the cluster.

kubectl get configmap -n kube-system

You should see output showing the "amazon-vpc-cni".

NAME                                 DATA   AGE
amazon-vpc-cni                       1      2m4s
aws-auth                             1      141m
coredns                              1      147m
cp-vpc-resource-controller           0      147m
eks-certificates-controller          0      147m
extension-apiserver-authentication   6      147m
kube-proxy                           1      147m
kube-proxy-config                    1      147m
kube-root-ca.crt                     1      147m

Recap

Congratulations! At this point, you have successfully provisioned an Amazon EKS cluster with a managed Windows node group in your AWS account.