7. Azure Container Instances (ACI)
서버 관리 없이 컨테이너를 쉽게 생성할 수 있습니다.
컨테이너 단위로
초당 청구되는 과금 체계
하이퍼바이저 격리를 통
한
안전한 실행 환경
서버 없이
컨테이너를
실행할 수 있습니다.
8. ACI에 대한 이해
• Kubernetes의 Pod과 개념적
으로 유사함
• 컨테이너 그룹 안에 하나 이상
의 컨테이너 존재 (App +
Sidecar)
9. 할당량에 대한 정보
• 구독 당 100개의 컨테이너 그룹 사용 가능
• 컨테이너 그룹 당 60개의 컨테이너, 20개의 볼륨 사용 가능
• IP당 포트는 5개까지 생성 가능
• 컨테이너 로그는 실행 중일 때 4MB, 멈추었을 때 16KB 또는
1000줄까지 보관 가능
• 시간 당 300개까지, 5분 당 100개 컨테이너 생성/삭제 가능
11. Virtual Node & Virtual Kubelet
• Kubernetes는 다수의 Node와 각 Node에서 실행되는 Pod으로
구성된 클러스터 집합
• 원래 Node는 Kubeadm 등의 수단을 이용하여 클러스터 내부의
등록 명부인 ETCD 데이터베이스에 정보를 등록해야 함
12. Virtual Node & Virtual Kubelet (Cont.)
• 하지만 실제 Node 대신 Serverless Container 서비스를 Node의
대용품으로 생각해볼 수 있지 않을까 하는 참신한 아이디어가
실현됨
• 그것이 바로 Virtual Node이며 Virtual Kubelet이 그 일을 대행
함
• Virtual Kubelet은 하나의 스펙이라고 생각하면 편리함
14. Virtual Kubelet
• Serverless Container를 Kubernetes에 통합하고 함께 사용할 수
있도록 제공
• Azure Container Instance, AWS Fargate, Alibaba Cloud ECI,
HashiCorp Nomad 등 여러 Provider 연동을 지원
15. 기존과 무엇이 달라지는가
• App 개발자 (Deployment YAML 파일 작성자) 입장에서는 달라
질 것이 없으며, 클러스터 관리자가 가상 노드를 추가하는 것
• 네트워크 서브넷을 공유해야 한다는 조건이 없다면, 공인 IP를
할당받는 가상의 Pod을 서비스 한도 내에서 제한없이 추가/제
거 가능
• 네트워크 서브넷 공유가 필요한 경우는 조건이 서로 맞아야 함
16. ACI 과금 체계
• 동남아시아 Region 기준
• 1GB/초당 0.0017276원, 1CPU/초당 0.0158076원
• Windows 컨테이너인 경우 1CPU/초당 0.0134958원 추가
18. 오늘 살펴보려는 것
• Virtual Kubelet 표준을 지원하는 Azure ACI Connector를
Docker for Desktop에 설치해서 활용하기
• 이를 통해 AKS 없이 Linux와 Windows Pod을 쉽게 배포하고 테스트할
수 있도록 만들 것입니다.
19. 준비할 것
• Azure Subscription
• Azure CLI
• Kubernetes CLI
• Helm CLI
• Docker for Desktop v2.0 이상
20. Step 1 – Docker for Desktop 설정 변경
• Linux 컨테이너 모드에서만 사
용 가능함
• Kubernetes 지원 활성화 체크
후 확인
21. Step 2 – Context 확인 및 선택
• kubectl config get-contexts
• kubectl config use-context docker-for-desktop
22. Step 3 - Master Cluster 주소 확인
• kubectl cluster-info
• $env:MASTER_URI=“…"
23. Step 4 - Subscription ID 획득
• az account list
• $env:AZURE_SUBSCRIPTION_ID=“…"
24. Step 5 - ACI용 Resource Group 생성
• $env:ACI_REGION=“…"
• $env:AZURE_RG=“…"
• az group create --name $env:AZURE_RG --location
$env:ACI_REGION
25. Step 6 - 서비스 사용자 (Service Principal)
• az ad sp create-for-rbac --name … -o table
• $env:AZURE_TENANT_ID=“…"
• $env:AZURE_CLIENT_ID=“…"
• $env:AZURE_CLIENT_SECRET=“…"
35. Limitations
• Windows 컨테이너에 관한 제약이 큰 편
• 아직 Windows Server 2016 컨테이너만 지원
• Windows 컨테이너의 크기가 큰 탓에 첫 시동이 늦음 (약 4GB 이미지)
(!!)
• Docker for Windows에서의 버그
• kubectl exec 명령을 실행한 후에 로컬 Master 서버와 연결이 끊어짐
• https://github.com/virtual-kubelet/virtual-kubelet/issues/556
36. 더 찾아보기
• 노드를 사용해서 인프라를 확장하는 것보다 더 빠르게 적시에
인프라를 증설할 수 있는 방법으로 AKS에 ACI를 더하기도 합니
다.
• Virtual Kubelet을 이용한 Burst Traffic 소화
• https://github.com/Azure-Samples/virtual-kubelet-aci-
burst/blob/master/Bursting%20Video.mp4