AKS는 Azure kubernetes service의 약자로 managed Kubernetes입니다.
그렇다면 managed와 일반 쿠버네티스의 차이점이 무엇일까요?
non-managed k8s는 기본적으로 사용자들이 직접 관리를 해야합니다. 서버를 생성하여 마스터 노드와 워커 노드를 구분하고 각각에 k8s 소프트웨어 패키지를 생성하여 연결하는 등 여러가지 작업을 진행해야 사용 가능한 k8s가 완성이 됩니다. 이전 쿠버네티스 테스트 환경 구축을 보시면 해야할 작업들이 생각보다 많다는 것을 알 수 있습니다. 또한 관리적인 측면을 보자면 만약 노드를 늘려야 할 경우가 발생할 수 있는데 자동화를 해놓았으면 다행이지만 만약 아니라고 하면 새로운 워커노드를 생성하여 연결하는 작업들을 해줘야 합니다. 정기적인 업데이트 역시 수동으로 진행해야 하며 모든 유지 관리 작업은 수동으로 수행해야 합니다.
managed k8s는 공급자가 제공하거나 공급자를 통해 구성하는 k8s를 말합니다. 일반적으로 AWS의 EKS, Azure의 AKS, GCP의 GKE가 있습니다. 해당 리소스를 사용하게 되면 클릭 몇번 혹은 명령어 몇줄로 k8s를 세팅할 수 있습니다. 또한 밴더사의 서비스들을 연결하여 사용할 수 있기 때문에 이부분 또한 장점으로 보인다. 관리적인 측면을 봐도 Auto Scailing Group(ASG)가 있기 때문에 노드의 수를 증가하는 부분도 이상이 없으며 업데이트 또한 수월하게 진행할 수 있다. 기본적으로 노드에 대한 모니터링이 세팅 없이 가능하다는 부분도 장점중 하나이다.
AKS를 구축하기 앞서 콘솔이 아닌 Azure cli를 이용하여 구축을 진행합니다. 또한 k8s 기본 cni인 kubelet이 아닌 Azure cni를 이용하여 구축을 진행합니다.
az 로그인
az login
구독 확인
az account list
구독 변경
az account set --subscription 구독id
리소스 그룹 생성
az group create --name k8stest --location koreacentral
vnet snet 생성
az network vnet create --resource-group k8stest --name k8stestvnet --address-prefixes "10.0.0.0/16" --subnet-name "k8ssnet" --subnet-prefixes "10.0.0.0/24"
Azure cni를 이용한 k8s 클러스터 생성
az aks create --resource-group k8stest --name 3tierCluster --network-plugin azure --node-vm-size standard_d2s_v5 --node-count 1 --vnet-subnet-id $(az network vnet subnet list --resource-group k8stest --vnet-name k8stestvnet --query "[0].id" --output tsv) --docker-bridge-address 172.17.0.1/16 --dns-service-ip 10.2.0.10 --service-cidr 10.2.0.0/24 --generate-ssh-keys
kubectl 설치
az aks install-cli
클러스터 연결
az aks get-credentials --resource-group k8stest --name 3tierCluster
클러스터 연결 확인
kubectl get nodes
모든 코드를 입력하게 될경우 위와 같은 결과를 출력할 수 있습니다. 또한 콘솔로 들어가면 잘 생성된 모습과 MC_로 시작하는 k8s nodepool이 있는 Resource group을 확인할 수 있습니다.
간단하게 Managed k8s와 기본 k8s의 차이를 구분하고 AKS의 간단한 구축 방법을 이해하였습니다.
리소스 삭제는 아래 코드로 간단하게 가능합니다
(리소스 그룹을 삭제하는 코드입니다. 리소스 그룹 내에 모든 리소스가 삭제됩니다)
az group delete -g k8stest