연습 - AKS Edge Essentials 클러스터에 샘플 Linux 및 Windows 애플리케이션 배포
이 연습에서는 AKS Edge Essentials 클러스터에 컨테이너화된 Linux 및 Windows 애플리케이션을 배포합니다.
AKS Edge Essentials 배포 확인
참고 항목
다음 명령은 VM의 PowerShell 명령줄에서 실행됩니다.
다음 명령을 실행하여 배포가 성공했는지 확인합니다.
kubectl get nodes -o wide kubectl get pods -A -o wide
다음 예제 스크린샷은 Linux 및 Windows 노드가 준비되고 Pod가 실행되고 있음을 보여 줍니다.
Linux 애플리케이션 배포
Microsoft의 azure-vote-front 이미지를 기반으로 하는 프런트 엔드와 백 엔드로 구성된 간단한 투표 앱인 샘플 애플리케이션을 배포합니다. 이 애플리케이션의 컨테이너 이미지는 ACR(Azure Container Registry)에서 호스트됩니다. 배포 매니페스트에 대한 GitHub 리포지토리 패키지의 linux-sample.yaml을 참조하세요. YAML에서 태그를 nodeSelector
linux로 지정했습니다.
애플리케이션을 배포하려면 kubectl apply 명령을 사용합니다. 이 명령은 매니페스트 파일을 구문 분석하고 정의된 Kubernetes 개체를 만듭니다. 다음 예제와 같이 YAML 매니페스트 파일을 지정합니다.
kubectl apply -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/linux-sample.yaml
Pod가 실행 중 상태가 될 때까지 몇 분 정도 기다립니다.
kubectl get pods -o wide
다음 예제 출력은 애플리케이션 Pod가 실행되고 있음을 보여 줍니다.
PS C:\Users\azureuser> kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES azure-vote-back-66c88ccc8-fjwfq 1/1 Running 0 46s 10.42.0.6 myvm-ledge <none> <none> azure-vote-front-85dc674b97-xp8d8 1/1 Running 0 46s 10.42.0.7 myvm-ledge <none> <none>
진행률을 모니터링하려면 매개 변수와 함께
--watch
kubectl get services 명령을 사용합니다.kubectl get services --watch
처음에는
EXTERNAL-IP
서비스용이azure-vote-front
.로pending
표시됩니다. 주소가EXTERNAL-IP
실제 공용 IP 주소로pending
변경되면 서비스에 할당된 IP 주소를 사용할 수 있습니다.PS C:\Users\azureuser> kubectl get services --watch NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE azure-vote-back ClusterIP 10.43.208.68 <none> 6379/TCP 4m52s azure-vote-front LoadBalancer 10.43.125.83 192.168.0.4 80:31032/TCP 4m52s kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 16m
Ctrl+C를 눌러 시청을 중지합니다.
애플리케이션을 보려면 브라우저를 열고 서비스에 할당된 IP 주소 및 포트로
azure-vote-front
이동합니다. 이전 예제에서 서비스에 할당된 IP 주소 및 포트는 192.168.0.4:31032입니다.
Windows 애플리케이션 배포
Microsoft의 샘플 이미지를 기반으로 샘플 ASP.NET Core 애플리케이션을 배포합니다. 배포 매니페스트에 대한 GitHub 리포지토리 패키지에서 win-sample-aspnetcore.yaml을 참조하세요. YAML에서 태그를 nodeSelector
창으로 지정했습니다.
kubectl apply 명령을 사용하여 애플리케이션을 배포합니다.
kubectl apply -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/win-sample-aspnetcore.yaml
Pod가 실행 중 상태가 될 때까지 몇 분 정도 기다립니다.
kubectl get pods -o wide
다음 예제 출력은 애플리케이션
sample-aspnetcore-786fb44bb-k449c
Pod가 실행 중임을 보여줍니다.PS C:\Users\azureuser> kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES azure-vote-back-66c88ccc8-fjwfq 1/1 Running 0 8m 10.42.0.6 myvm-ledge <none> <none> azure-vote-front-85dc674b97-xp8d8 1/1 Running 0 8m 10.42.0.7 myvm-ledge <none> <none> sample-aspnetcore-786fb44bb-k449c 1/1 Running 0 2m56s 10.42.1.3 myvm-wedge <none> <none>
샘플 서비스가 실행 중인지 확인합니다.
kubectl get services
그런 다음 서비스에 대한 메모를
PORT
작성합니다sample-aspnetcore
. 이 예제에서는 31767입니다.PS C:\Users\azureuser> kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE azure-vote-back ClusterIP 10.43.208.68 <none> 6379/TCP 10m52s azure-vote-front LoadBalancer 10.43.125.83 192.168.0.4 80:31032/TCP 10m52s kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 26m sample-aspnetcore NodePort 10.43.237.30 <none> 8080:31767/TCP 6m40s
애플리케이션이 실행 중인 Kubernetes 노드의 IP 주소를 검색하여 NodePort의 포트를 추가합니다.
Get-AksEdgeNodeAddr -NodeType Windows
PS C:\Users\azureuser> Get-AksEdgeNodeAddr -NodeType Windows [01/16/2024 14:44:22] Querying IP and MAC addresses from virtual machine (myvm-wedge) - Virtual machine MAC: 00:15:5d:02:7c:eb - Virtual machine IP : 192.168.0.3 retrieved directly from virtual machine Name Value ---- ----- IpAddress 192.168.0.3 MacAddress 00:15:5d:02:7c:eb
애플리케이션을 보려면 브라우저를 열고 서비스에 할당된 IP 주소 및 포트로
sample-aspnetcore
이동합니다. 이전 예제에서 서비스에 할당된 IP 주소 및 포트는 192.168.0.3:31767입니다.