다음을 통해 공유


Windows 애플리케이션 배포

적용 대상: Azure Stack HCI 22H2의 AKS, Windows Server의 AKS

이 자습서에서는 Arc에서 사용하도록 설정된 AKS의 AKS(Azure Kubernetes Service) 클러스터에 Windows Server 컨테이너의 ASP.NET 샘플 애플리케이션을 배포한 다음, 애플리케이션을 테스트하고 크기를 조정하는 방법을 설명합니다. Windows 노드를 Active Directory 도메인에 조인하는 방법도 알아봅니다.

이 자습서에서는 Kubernetes 개념에 대한 기본 지식이 있다고 가정합니다. 자세한 내용은 Azure Arc에서 사용하도록 설정된 AKS에 대한 Kubernetes 핵심 개념을 참조 하세요.

시작하기 전에

다음 요구 사항을 충족하는지 확인합니다.

절차를 따르는 경우:

  • PowerShell 관리자 창에서 명령을 실행합니다.
  • OS 관련 워크로드가 적절한 컨테이너 호스트에 있는지 확인합니다. Kubernetes 클러스터에 Linux 및 Windows 작업자 노드가 혼합되어 있는 경우 노드 선택기 또는 taint 및 toleration을 사용할 수 있습니다. 자세한 내용은 노드 선택기 및 taint 및 tolerations 사용을 참조 하세요.

애플리케이션 배포

Kubernetes 매니페스트 파일은 실행할 컨테이너 이미지 등 원하는 클러스터 상태를 정의합니다. 이러한 절차에서는 매니페스트를 사용하여 Windows Server 컨테이너에서 ASP.NET 샘플 애플리케이션을 실행하는 데 필요한 모든 개체를 만듭니다. 이 매니페스트에는 ASP.NET 샘플 응용 프로그램에 대한 Kubernetes 배포 및 인터넷에서 응용 프로그램에 액세스하는 외부 Kubernetes 서비스가 포함되어 있습니다.

ASP.NET 샘플 애플리케이션은 .NET Framework 샘플의 일부로 제공되며 Windows Server 컨테이너에서 실행됩니다. AKS Arc를 사용하려면 Windows Server 컨테이너가 Windows Server 2019 이미지를 기반으로 해야 합니다.

또한 Kubernetes 매니페스트 파일은 Windows Server 컨테이너를 실행할 수 있는 노드에서 ASP.NET 샘플 애플리케이션의 Pod를 실행하도록 클러스터에 지시하는 노드 선택기를 정의해야 합니다.

이름이 지정된 sample.yaml파일을 만들고 다음 YAML 정의를 복사/붙여넣습니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample
  labels:
    app: sample
spec:
  replicas: 1
  template:
    metadata:
      name: sample
      labels:
        app: sample
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": windows
      containers:
      - name: sample
        image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
        resources:
          limits:
            cpu: 1
            memory: 800M
          requests:
            cpu: .1
            memory: 300M
        ports:
          - containerPort: 80
  selector:
    matchLabels:
      app: sample
---
apiVersion: v1
kind: Service
metadata:
  name: sample
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
  selector:
    app: sample

명령을 사용하여 애플리케이션을 kubectl apply 배포하고 YAML 매니페스트의 이름을 지정합니다.

kubectl apply -f sample.yaml

다음 예제 출력은 배포 및 서비스가 성공적으로 생성되었음을 보여줍니다.

deployment.apps/sample created
service/sample created

애플리케이션 테스트

애플리케이션이 실행되면 애플리케이션 프런트 엔드를 인터넷에 공개하는 Kubernetes 서비스가 만들어집니다. 이 프로세스를 완료하는 데 몇 분이 걸릴 수 있습니다. 경우에 따라 서비스를 프로비전하는 데 몇 분 이상 걸릴 수 있습니다. 이러한 경우 최대 10분까지 허용합니다.

진행률을 모니터링하려면 인수와 kubectl get service 함께 --watch 명령을 사용합니다.

kubectl get service sample --watch

처음에는 샘플 서비스에 대한 EXTERNAL-IP가 보류 중인 것으로 표시됩니다.

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

EXTERNAL-IP 주소가 보류 중에서 실제 공용 IP 주소로 변경되면 CTRL-C를 사용하여 kubectl 조사식 프로세스를 중지합니다. 다음 예제 출력은 서비스에 할당된 유효한 공용 IP 주소를 보여줍니다.

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

실행 중인 샘플 앱을 보려면 웹 브라우저를 서비스의 외부 IP 주소로 엽니다.

AKS 클러스터에 배포된 Windows용 ASP.NET 샘플 애플리케이션의 홈페이지 스크린샷

페이지를 로드하려고 할 때 연결 시간이 초과되면 명령을 실행 kubectl get pods --watch 하여 샘플 앱이 준비되었는지 확인합니다. Windows 컨테이너가 시작되기 전에 외부 IP 주소를 사용할 수 있는 경우도 있습니다.

애플리케이션 Pod 크기 조정

애플리케이션 프런트 엔드의 단일 복제본을 만들었습니다. 클러스터에서 Pod의 수와 상태를 보려면 다음과 같이 명령을 사용합니다 kubectl get .

kubectl get pods -n default

샘플 배포에서 Pod 수를 변경하려면 명령을 사용합니다kubectl scale. 다음 예제에서는 프런트 엔드 Pod 수를 3으로 늘입니다.

kubectl scale --replicas=3 deployment/sample

다시 실행 kubectl get pods 하여 Pod가 생성되었는지 확인합니다. 1분 정도 지나면 클러스터에서 추가 Pod를 사용할 수 있습니다.

kubectl get pods -n default

다음 단계