aws / aws/containers-roadmap

[EKS] [Windows]: IIS sample with *internal load balancers* doesn't support windows workers

Open
#420 0 comments 0 reactions 0 assignees View on GitHub
EKS Proposed
Dominant language
Shell
Stars
5.4k
Forks
334
PR merge metrics
No merged PRs in 30d

Description

**Which service(s) is this request for?**
EKS with Windows Node/Workers support

**Problem**

I followed the instructions below and updated an EKS cluster to support `Windows Nodes`, the EKS cluster was basically just the version the standard developer documents walk you through creating.

These are the instructions I followed to add a Windows Node:

https://github.com/aws/containers-roadmap/tree/master/preview-programs/eks-windows-preview

At the completion of the above steps I had a simple EKS cluster consisting of 1 linux node and 1 windows node

I downloaded the IIS Sample Deployment described at the end of the above document and made a minor change. I adjusted the `Load Balancer` to be an `Internal Load Balancer` instead of the default of `External`

The following is the yaml for the `k8s service` I deployed (again - modified from the sample provided):

```
---
apiVersion: v1
kind: Service
metadata:
name: windows-server-iis-service
namespace: default
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
ports:
- name: http
port: 80
targetPort: http
selector:
app: windows-server-iis
tier: backend
track: stable
sessionAffinity: None
type: LoadBalancer
```

The Load Balancer is created as expected. However when I check on the Load Balancer status in the AWS console I find that *only* the Linux Worker is listed as `InService`. The Windows Worker/Node is listed as `OutOfService` (which is odd since the pod in this case is deployed on Windows).

I can hit the load balancer and get back the default IIS page. So the Load Balancer and the Pod do appear to be working. However this current setup is quite fragile. If the Linux Node had to be serviced for any reason traffic would be un-routable to any Windows Pods.

Something appears to be wrong with how the `LoadBalancers` are getting wired up. Is there any reason traffic isn't getting routed to both Workers in my cluster?

Contributor guide

Open the contributing guide

Research direction

Start with the EKS Windows preview instructions and the modified IIS Service YAML shown in the issue. Reproduce the internal load balancer setup with one Linux and one Windows worker, then investigate why the Windows worker is OutOfService; done means traffic can be routed to Windows pods on both workers without relying on the Linux node.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, kubernetes
Domain
cloud, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.