다음을 통해 공유


자습서: Azure Kubernetes Service 클러스터의 Azure Container Instances에 가상 노드 배포

이 자습서에서는 Azure Portal을 사용하여 AKS(Azure Kubernetes Service) 클러스터를 배포합니다. AKS 클러스터를 배포한 후 Helm 차트를 사용하여 Azure Container Instances에 가상 노드를 배포합니다.

필수 조건

이 자습서에서는 다음과 같은 도구가 설치되어 있다고 가정합니다.

  • Azure CLI
  • kubectl(버전 1.29 이상)
  • Helm
  • Git

Azure에 로그인

https://portal.azure.com에서 Azure Portal에 로그인합니다.

Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

AKS 클러스터에 대한 가상 네트워크 만들기

Azure Portal 홈페이지에서 리소스 만들기를 선택합니다.

Azure Portal에서 새 가상 네트워크 만들기를 시작하는 방법을 보여 주는 스크린샷

네트워킹>가상 네트워크를 선택합니다.

Azure Portal에서 만들려는 새 가상 네트워크를 선택하는 방법을 보여 주는 스크린샷

기본 페이지에서 구독을 선택하고 다음 값을 입력합니다.

  • 리소스 그룹: 새로 만들기>virtualnodesresourcegroup
  • 가상 네트워크 이름: myvirtualnetwork
  • 지역: East US

Azure Portal에서 가상 네트워크를 만들기 위한 기본 사항 페이지를 구성하는 방법을 보여 주는 스크린샷.

IP 주소 페이지에서 다음 주소 공간 및 서브넷을 구성합니다.

  • 10.0.0.0/16: default 크기가 /24 서브넷
  • 10.1.0.0/16: aks 크기가 /16 서브넷
  • 10.2.0.0/16: cg 크기가 /16 서브넷
    • 서브넷에는 cg 서브넷 위임이 있어야 합니다 Microsoft.ContainerInstance/containerGroups.
    • 가상 노드에서 실행되는 Pod에 아웃바운드 네트워킹이 필요한 경우 NAT 게이트웨이를 설정하고 사용하도록 서브넷을 cg 구성해야 합니다. 이 설정에 대한 지침은 컨테이너 그룹의 아웃바운드 트래픽에 대한 고정 IP 주소에 대한 NAT 게이트웨이 구성을 참조하세요.

Azure Portal에서 가상 네트워크를 만들기 위해 IP 주소 페이지를 구성하는 방법을 보여 주는 스크린샷

다른 모든 설정은 기본값으로 두고 검토 + 만들기를 선택합니다.

유효성 검사가 완료되면 가상 네트워크의 설정에 대한 요약이 표시됩니다. 만들기를 선택하여 가상 네트워크 배포 요청을 제출합니다.

배포가 시작되면 배포가 진행 중임을 알려주는 알림이 나타납니다. 가상 네트워크가 배포될 때 또 다른 알림이 표시됩니다.

AKS 클러스터 만들기

Azure Portal 홈페이지에서 리소스 만들기를 선택합니다.

Azure Portal에서 새 가상 네트워크 만들기를 시작하는 방법을 보여 주는 스크린샷

컨테이너>AKS(Azure Kubernetes Service)를 선택합니다.

Azure Portal에서 만들려는 새 AKS 클러스터를 선택하는 방법을 보여 주는 스크린샷

기본 사항 페이지에서 가상 네트워크를 만드는 데 사용한 것과 동일한 구독을 선택하고 다음 값을 입력합니다.

  • 리소스 그룹: virtualnodesresourcegroup
  • 클러스터 사전 설정 구성: Dev/Test
  • Kubernetes 클러스터 이름: virtualnodescluster
  • 지역: East US
  • Kubernetes 버전: 모든 버전( 1.29. 예: 1.29.10
  • 자동 업그레이드: Enabled with patch

Azure Portal에서 AKS 클러스터 만들기를 위한 기본 사항 페이지를 구성하는 방법을 보여 주는 스크린샷

노드 풀 페이지에서 노드 풀에 대해 4개 이상의 vCPU 및 16GB RAM이 있는 VM SKU를 agentpool 선택합니다. 이러한 노드는 가상 노드 인프라를 호스트하는 데 사용됩니다. 선택 Enable virtual nodes 하지 마세요. 이는 AKS에 대한 이전 가상 노드 제공을 나타냅니다.

Azure Portal에서 AKS 클러스터를 만들기 위해 노드 풀 페이지를 구성하는 방법을 보여 주는 스크린샷.

네트워킹 페이지에서 다음 값을 입력합니다.

  • 네트워크 구성: Azure CNI Node Subnet
  • 사용자 고유의 Azure 가상 네트워크 가져오기: Enabled
  • 가상 네트워크: myvirtualnetwork
  • 클러스터 서브넷: aks
  • Kubernetes 서비스 주소 범위: 10.4.0.0/16
  • Kubernetes DNS 서비스 IP 주소: 10.4.0.10
  • 네트워크 정책: Calico

Azure Portal에서 AKS 클러스터를 만들기 위한 네트워킹 페이지를 구성하는 방법을 보여 주는 스크린샷.

다른 모든 설정은 기본값으로 두고 검토 + 만들기를 선택합니다.

유효성 검사가 완료되면 AKS 클러스터의 설정에 대한 요약이 표시됩니다. 만들기를 선택하여 AKS 클러스터 배포 요청을 제출합니다.

배포가 시작되면 배포가 진행 중임을 알려주는 알림이 나타납니다. AKS 클러스터가 배포되면 또 다른 알림이 표시됩니다.

AKS 클러스터 관리 ID에 권한 할당

AKS 클러스터를 배포할 때 AKS는 클러스터 인프라를 호스트하는 동일한 구독에 노드 리소스 그룹을 만듭니다. 기본적으로 이 리소스 그룹에는 다음과 같은 MC_<resource group>_<AKS cluster>_<region>이름이 있습니다. 이 자습서에서는 노드 리소스 그룹에 이름이 MC_virtualnodesresourcegroup_virtualnodescluster_eastus있어야 합니다.

노드 리소스 그룹에서 만든 리소스 중 하나는 이름이 virtualnodescluster_agentpool있는 관리 ID입니다. 이 관리 ID로 이동하고 Azure 역할 할당을 선택합니다. 그런 다음, 다음 두 개의 역할 할당을 추가합니다.

  • 범위: Resource group
  • 구독: <your subscription name>
  • 리소스 그룹: MC_virtualnodesresourcegroup_virtualnodescluster_eastus
  • 역할: Contributor

이 역할 할당을 사용하면 노드 리소스 그룹에서 ACI 컨테이너 그룹을 만들 수 있습니다.

  • 범위: Resource group
  • 구독: <your subscription name>
  • 리소스 그룹: virtualnodesresourcegroup
  • 역할: Contributor

이 역할 할당을 사용하면 이 리소스 그룹에서 만든 가상 네트워크에 ACI 컨테이너 그룹을 삽입할 수 있습니다.

AKS 관리 ID에 추가된 역할 할당을 보여 주는 스크린샷

Helm 차트를 사용하여 Azure Container Instances에 가상 노드 설치

Azure CLI를 사용하여 만든 AKS 클러스터에 대한 구성 및 자격 증명을 풀다운합니다. 그러면 AKS 클러스터에 대한 kubectl이 구성됩니다.

az login

az account set --subscription <your subscription ID>

az aks get-credentials --name virtualnodescluster --resource-group virtualnodesresourcegroup

또한 컨테이너 그룹을 배포할 수 있도록 구독에 ACI 리소스 공급자를 등록합니다.

az provider register -n Microsoft.ContainerInstance

virtualnodesOnAzureContainerInstances GitHub 리포지토리를 복제합니다. Azure Container Instances에 가상 노드를 설치하기 위한 Helm 차트는 폴더에 Helm/virtualnode 있습니다.

다음 명령을 사용하여 Helm 차트를 설치합니다.

helm install virtualnode <cloned repository location>\Helm\virtualnode

1분 내에 새 가상 노드가 등록되고 AKS 클러스터의 준비 상태가 됩니다. kubectl을 사용하여 AKS 클러스터 노드의 상태를 확인할 수 있습니다.

kubectl get nodes

가상 노드가 준비 상태인 kubectl get nodes 명령의 출력을 보여 주는 스크린샷

가상 노드에 첫 번째 Pod 배포

다른 Kubernetes 노드와 같은 가상 노드와 상호 작용할 수 있습니다. 예를 들어 아래 샘플 YAML은 AKS 클러스터의 가상 노드에 Pod를 배포합니다. 노드 선택기 및 Pod를 적절하게 배치하기 위한 톨러레이션을 사용합니다. kubectl apply를 사용하여 YAML을 배포할 수 있습니다.

apiVersion: v1
kind: Pod
metadata:
  annotations:    
  name: demo-pod
spec:
  containers:
  - command:
    - /bin/bash
    - -c
    - 'counter=1; while true; do echo "Hello, World! Counter: $counter"; counter=$((counter+1)); sleep 1; done'
    image: mcr.microsoft.com/azure-cli
    name: hello-world-counter
    resources:
      limits:
        cpu: 2250m
        memory: 2256Mi
      requests:
        cpu: 100m
        memory: 128Mi
  nodeSelector:
    virtualization: virtualnode2
  tolerations:
  - effect: NoSchedule
    key: virtual-kubelet.io/provider
    operator: Exists

Pod를 배포한 후에는 "일반" Kubernetes Pod와 똑같이 상호 작용할 수 있습니다.

예를 들어 Pod 상태 및 이벤트를 보려면(오류를 찾는 데 유용합니다.)

kubectl describe pods demo-pod

Pod에 대한 로그를 보려면 다음을 수행합니다.

kubectl logs demo-pod

Pod에 대한 셸을 얻으려면 다음을 수행합니다.

kubectl exec demo-pod -it -- /bin/bash

다음 단계

이 자습서에서는 Azure Portal에서 AKS 클러스터를 만들고, Helm 차트를 사용하여 Azure Container Instances에 가상 노드를 배포하고, 가상 노드에 Pod를 배포했습니다. 이제 가상 노드에서 Kubernetes Pod를 실행하는 방법에 대해 기본적으로 잘 알고 있으며, 기본적으로 해당 Pod에서 대부분의 Kubernetes 기능 및 구문을 활용할 수 있습니다.

Pod에 대해 특수화된 가상 노드 기능 또는 동작을 활용하려는 경우 Pod 사용자 지정을 참조 하세요.

가상 노드 설치를 사용자 지정하려는 경우 노드 사용자 지정을 참조 하세요.

가상 노드 에 대규모 워크로드(분당 수천 개의 Pod)를 배포하려는 경우 모범 사례 및 권장 사항이 있습니다.