Пошаговое руководство по настройке рабочего узла контейнера 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 предоставляется четыре базовых образа контейнеров:
Чтобы узнать больше о базовых образах контейнеров 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 после того, как контейнер будет запущен и запущен.