Azure Portal에서 가상 노드를 사용하는 AKS(Azure Kubernetes Service) 클러스터 만들기 및 구성
가상 노드를 사용하면 ACI(Azure Container Instances)에서 실행되는 Pod와 AKS(Azure Kubernetes Service) 클러스터 간에 네트워크 통신이 가능합니다. 이 통신을 제공하기 위해 가상 네트워크 서브넷이 만들어지고 위임된 사용 권한이 할당됩니다. 가상 노드는 ‘고급’ 네트워킹(Azure CNI)을 사용하여 만든 AKS 클러스터에서만 작동합니다. AKS 클러스터는 기본적으로 기본 네트워킹(kubenet)을 사용하여 만들어집니다.
이 문서에서는 가상 네트워크 및 서브넷을 만든 다음 Azure Portal을 사용하여 고급 네트워킹을 사용하는 AKS 클러스터를 배포하는 방법을 안내합니다.
참고 항목
가상 노드 지역 가용성 및 제한 사항에 대한 개요는 AKS에서 가상 노드 사용을 참조하세요.
시작하기 전에
구독에 등록된 ACI 서비스 공급자가 필요합니다.
az provider list
명령을 사용하여 ACI 공급자 등록 상태를 확인합니다.az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
다음 예제 출력은 Microsoft.ContainerInstance 공급자가 Registered임을 보여줍니다.
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequired
공급자가 NotRegistered인 경우
az provider register
명령을 사용하여 등록합니다.az provider register --namespace Microsoft.ContainerInstance
AKS 클러스터 만들기
- Azure Portal 홈페이지로 이동합니다.
- 리소스 만들기>컨테이너를 선택합니다.
- AKS(Azure Container Service) 리소스에서 만들기를 선택합니다.
- 기본 페이지에서 다음 옵션을 구성합니다.
- 프로젝트 세부 정보: Azure 구독을 선택하고 myResourceGroup 같은 Azure 리소스 그룹을 선택하거나 만듭니다.
- 클러스터 세부 정보: myAKSCluster 같은 Kubernetes 클러스터 이름을 입력합니다. AKS 클러스터에 대한 지역 및 Kubernetes 버전을 선택합니다.
- 다음: 노드 풀을 선택하고 *가상 노드 사용에 체크 표시합니다.
- 검토 + 만들기를 선택합니다.
- 유효성 검사가 완료되면 만들기를 선택합니다.
기본적으로 이 프로세스는 클러스터 통신 및 다른 Azure 서비스와의 통합에 사용되는 관리형 클러스터 ID를 만듭니다. 자세한 내용은 관리 ID 사용을 참조하세요. 또한 서비스 주체를 클러스터 ID로 사용할 수 있습니다.
이 프로세스는 고급 네트워킹을 위한 클러스터 및 가상 노드를 자체 Azure 가상 네트워크 서브넷을 사용하도록 구성합니다. 이 서브넷은 AKS 클러스터 간에 Azure 리소스를 연결할 수 있는 위임된 권한을 갖습니다. 위임된 서브넷이 아직 없는 경우 Azure Portal은 가상 노드를 사용하여 Azure 가상 네트워크 및 서브넷을 만들고 구성합니다.
클러스터에 연결
Azure Cloud Shell은 이 문서의 단계를 실행하는 데 무료로 사용할 수 있는 대화형 셸입니다. 공용 Azure 도구가 사전 설치되어 계정에서 사용하도록 구성되어 있습니다. Kubernetes 클러스터를 관리하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용하세요. kubectl
클라이언트가 Azure Cloud Shell에 사전 설치됩니다.
az aks get-credentials
명령을 사용하여 Kubernetes 클러스터에 연결하도록kubectl
을 구성합니다. 다음 예제는 myResourceGroup이라는 리소스 그룹에서 myAKSCluster라는 클러스터의 자격 증명을 가져옵니다.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
kubectl get nodes
명령을 사용하여 클러스터에 대한 연결을 확인합니다.kubectl get nodes
다음 예제 출력은 생성된 단일 VM 노드 및 virtual-node-aci-linux라는 가상 Linux 노드를 보여 줍니다.
NAME STATUS ROLES AGE VERSION virtual-node-aci-linux Ready agent 28m v1.11.2 aks-agentpool-14693408-0 Ready agent 32m v1.11.2
샘플 앱 배포
Azure Cloud Shell에서
virtual-node.yaml
이라는 파일을 만들고 다음 YAML에 복사합니다.apiVersion: apps/v1 kind: Deployment metadata: name: aci-helloworld spec: replicas: 1 selector: matchLabels: app: aci-helloworld template: metadata: labels: app: aci-helloworld spec: containers: - name: aci-helloworld image: mcr.microsoft.com/azuredocs/aci-helloworld ports: - containerPort: 80 nodeSelector: kubernetes.io/role: agent beta.kubernetes.io/os: linux type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists
YAML은 nodeSelector 및 toleration을 정의합니다. 그러면 가상 노드에서 Pod를 예약할 수 있습니다. Pod에는 가상 노드에 사용하도록 위임된 Azure 가상 네트워크 서브넷의 내부 IP 주소가 할당됩니다.
kubectl apply
명령을 사용하여 애플리케이션을 실행합니다.kubectl apply -f virtual-node.yaml
-o wide
인수와 함께kubectl get pods
명령을 사용하여 노드에서 예약된 Pod를 봅니다.kubectl get pods -o wide
다음 예제 출력은
virtual-node-linux
노드에서 예약된virtual-node-helloworld
Pod를 보여줍니다.NAME READY STATUS RESTARTS AGE IP NODE virtual-node-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linux
참고 항목
Azure Container Registry에 저장된 이미지를 사용하는 경우 Kubernetes 비밀을 구성하고 사용합니다. 가상 노드의 제한 사항은 통합 Microsoft Entra 서비스 주체 인증을 사용할 수 없다는 것입니다. 비밀을 사용하지 않으면 가상 노드에서 예약된 Pod가 시작되지 않고 오류 HTTP response status code 400 error code "InaccessibleImage"
가 보고됩니다.
가상 노드 Pod 테스트
가상 노드에서 실행되는 Pod를 테스트하려면 웹 클라이언트를 사용하여 데모 애플리케이션으로 이동합니다. Pod에는 내부 IP 주소가 할당되므로 AKS 클러스터의 다른 Pod에서 연결을 쉽게 테스트할 수 있습니다.
테스트 Pod를 만들고 다음
kubectl run
명령을 사용하여 터미널 세션을 연결합니다.kubectl run -it --rm virtual-node-test --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
다음
apt-get
명령을 사용하여 Pod에curl
을(를) 설치합니다.apt-get update && apt-get install -y curl
다음
curl
명령을 사용하여 Pod의 주소에 액세스하고 내부 IP 주소를 제공합니다.curl -L http://10.241.0.4
다음 압축된 예제 출력은 데모 애플리케이션을 보여 줍니다.
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]
exit
을(를) 사용하여 테스트 Pod에 대한 터미널 세션을 닫고 Pod도 삭제합니다.exit
다음 단계
이 문서에서는 가상 노드에서 Pod를 예약하고 프라이빗 내부 IP 주소를 할당했습니다. 그 대신 서비스 배포를 만들고 부하 분산 장치 또는 수신 컨트롤러를 통해 Pod로 트래픽을 라우팅할 수도 있습니다. 자세한 내용은 AKS에서 기본 수신 컨트롤러 만들기를 참조하세요.
가상 노드는 AKS에서 크기 조정 솔루션의 구성 요소 중 하나입니다. 크기 조정 솔루션에 대한 자세한 내용은 다음 문서를 참조하세요.
Azure Kubernetes Service