Пошаговое руководство по настройке рабочего узла контейнера Windows и примера приложения на AWS EKS.

Чтобы поддерживать разработку приложений Windows с помощью контейнера (например, NET, PowerShell и т. Д.), Мы должны создать рабочий узел Windows для поддержки приложения, работающего поверх него.

Честно говоря, я думаю, что контейнеру Windows нужно больше времени, чтобы созреть, прежде чем он сможет предоставить облегченный дизайн и базовый образ, чтобы сделать его более эффективным. Однако, если вы хотите увидеть пробную версию, вы можете выполнить следующие действия, чтобы настроить рабочий узел и приложение поверх AWS EKS.

Предпосылки

Кластеры Kubernetes должны быть запущены и работать как минимум с одним рабочим узлом на базе Linux для запуска основной системы: kubernetes v1.14+.

EKS CTL eksctl должен быть установлен для поддержки создания рабочего узла.

См. Документацию Kubernetes и eksctl на GitHub, чтобы узнать больше.

Создать рабочий узел Windows

Установите контроллер ресурсов VPC и веб-перехватчик допуска через eksctl, чтобы включить поддержку Windows:

# Change CLUSTER_NAME to your EKS Cluster
eksctl utils install-vpc-controllers --cluster [CLUSTER_NAME] --approve

Как отмечено в документации Amazon EKS, вы также можете использовать другой подход для включения поддержки Windows.

Создайте группу узлов Windows:

# Change REGION_NAME, CLUSTER_NAME, GROUP_NAME, node-type to your EKS Cluster
eksctl create nodegroup --region [REGION_NAME] --cluster [CLUSTER_NAME] --name [GROUP_NAME] --node-type [m5.large]  --nodes 2 --nodes-min 1 --nodes-max 2 --node-ami-family WindowsServer2019FullContainer --asg-access --external-dns-access --full-ecr-access --alb-ingress-access --node-private-networking

Когда это будет сделано, вы можете использовать приведенную ниже команду, чтобы проверить, запущены ли рабочие узлы Windows и работают ли они:

kubectl get nodes   -L kubernetes.io/os

Развернуть простую службу Windows

Используйте приведенный ниже файл YAML для развертывания Windows Server IIS с рабочим узлом Windows с помощью селектора узлов kubernetes.is/os: windows и базового образа windows server core.

Для контейнеров Windows предоставляется четыре базовых образа контейнеров:

  1. Ядро Windows Server
  2. Нано Сервер
  3. Окна
  4. Windows IoT Core

Чтобы узнать больше о базовых образах контейнеров Windows, см. Документацию.

cat << EOF | kubectl apply -f -

apiVersion: apps/v1
kind: Deployment
metadata:
  name: windows-server-iis
  namespace: default
spec:
  selector:
    matchLabels:
      app: windows-server-iis
      tier: backend
      track: stable
  replicas: 1
  template:
    metadata:
      labels:
        app: windows-server-iis
        tier: backend
        track: stable
    spec:
      containers:
      - name: windows-server-iis
        image: mcr.microsoft.com/windows/servercore:1809
        ports:
        - name: http
          containerPort: 80
        imagePullPolicy: IfNotPresent
        command:
        - powershell.exe
        - -command
        - "Add-WindowsFeature Web-Server; Invoke-WebRequest -UseBasicParsing -Uri 'https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.6/ServiceMonitor.exe' -OutFile 'C:\\ServiceMonitor.exe'; echo '<html><body><br/><br/><marquee><H1>Hello EKS!!!<H1><marquee></body><html>' > C:\\inetpub\\wwwroot\\default.html; C:\\ServiceMonitor.exe 'w3svc'; "
      nodeSelector:
        kubernetes.io/os: windows
---
apiVersion: v1
kind: Service
metadata:
  name: windows-server-iis-service
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: windows-server-iis
    tier: backend
    track: stable
  sessionAffinity: None
  type: LoadBalancer
EOF

Так как базовое изображение велико, для его извлечения потребуется некоторое время. Вы сможете подключиться к IIS после того, как контейнер будет запущен и запущен.

Моя рабочая версия