자습서: 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 홈페이지에서 리소스 만들기를 선택합니다.
네트워킹>가상 네트워크를 선택합니다.
기본 페이지에서 구독을 선택하고 다음 값을 입력합니다.
- 리소스 그룹: 새로 만들기>
virtualnodesresourcegroup
- 가상 네트워크 이름:
myvirtualnetwork
- 지역:
East US
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 게이트웨이 구성을 참조하세요.
- 서브넷에는
다른 모든 설정은 기본값으로 두고 검토 + 만들기를 선택합니다.
유효성 검사가 완료되면 가상 네트워크의 설정에 대한 요약이 표시됩니다. 만들기를 선택하여 가상 네트워크 배포 요청을 제출합니다.
배포가 시작되면 배포가 진행 중임을 알려주는 알림이 나타납니다. 가상 네트워크가 배포될 때 또 다른 알림이 표시됩니다.
AKS 클러스터 만들기
Azure Portal 홈페이지에서 리소스 만들기를 선택합니다.
컨테이너>AKS(Azure Kubernetes Service)를 선택합니다.
기본 사항 페이지에서 가상 네트워크를 만드는 데 사용한 것과 동일한 구독을 선택하고 다음 값을 입력합니다.
- 리소스 그룹:
virtualnodesresourcegroup
- 클러스터 사전 설정 구성:
Dev/Test
- Kubernetes 클러스터 이름:
virtualnodescluster
- 지역:
East US
- Kubernetes 버전: 모든 버전(
1.29.
예:1.29.10
- 자동 업그레이드:
Enabled with patch
노드 풀 페이지에서 노드 풀에 대해 4개 이상의 vCPU 및 16GB RAM이 있는 VM SKU를 agentpool
선택합니다. 이러한 노드는 가상 노드 인프라를 호스트하는 데 사용됩니다. 선택 Enable virtual nodes
하지 마세요. 이는 AKS에 대한 이전 가상 노드 제공을 나타냅니다.
네트워킹 페이지에서 다음 값을 입력합니다.
- 네트워크 구성:
Azure CNI Node Subnet
- 사용자 고유의 Azure 가상 네트워크 가져오기:
Enabled
- 가상 네트워크:
myvirtualnetwork
- 클러스터 서브넷:
aks
- Kubernetes 서비스 주소 범위:
10.4.0.0/16
- Kubernetes DNS 서비스 IP 주소:
10.4.0.10
- 네트워크 정책:
Calico
다른 모든 설정은 기본값으로 두고 검토 + 만들기를 선택합니다.
유효성 검사가 완료되면 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 컨테이너 그룹을 삽입할 수 있습니다.
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
가상 노드에 첫 번째 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)를 배포하려는 경우 모범 사례 및 권장 사항이 있습니다.