[네이버클라우드] NKS 초기 구성 및 세팅 Hands on Lab [1]
관리형 쿠버네티스 서비스 NKS(Microservices with NKS)
Ncloud Kubernetes Service는 애플리케이션을 컨테이너화, 배포, 스케일링 및 관리를 자동화하는 오픈 소스 플랫폼입니다.
네이버 클라우드에서 NKS를 구성하는 초기 방법 및 가이드를 통한 상세 내용을 확인해 보겠습니다.
우선, 네이버클라우드에서 제공하는 가이드 매뉴얼을 살펴 본 이후, 실습을 통해 NKS 클러스터를 생성 해보겠습니다.
[네이버 클라우드 가이드 매뉴얼]
네이버 클라우드 플랫폼의 Ncloud Kubernetes Service를 통해 Kubernetes 환경을 효율적으로 제어하고 편하게 관리할 수 있습니다.
응용 프로그램에서 사용하는 인프라 규모를 동적으로 제어하며, 운영 상황을 모니터링하여 효율적으로 서비스를 관리할 수 있습니다.
Ncloud Kubernetes Service 사용 준비
클라우드 환경 준비 사항
Ncloud Kubernetes Service를 이용하기 위해 클라우드 환경에서 준비해야 하는 사항은 다음과 같습니다.
항목 | 설명 | 가이드 |
---|---|---|
VPC | Kubernetes 클러스터를 생성하기 위한 가상 클라우드 공간 | VPC 생성 |
Subnet | 가상 클라우드 공간 내의 서브넷 VPC 대역(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) 내에서 /17~/26 범위에 해당되는 서브넷만 사용 가능 Docker Bridge 대역의 충돌을 방지하기 위해 172.17.0.0/16 범위 내의 서브넷 사용 불가 로드밸런서 전용 서브넷 사용 불가 | Subnet 생성 |
Load Balancer Subnet | 클러스터와 연동할 로드밸런서를 위한 서브넷 VPC 대역(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) 내에서 /17~/26 범위에 해당되는 서브넷만 사용 가능 네트워크 타입 별 로드밸런서 생성을 위해 Public LB Subnet, Private LB Subnet 필요 Docker Bridge 대역의 충돌을 방지하기 위해 172.17.0.0/16 범위 내의 서브넷 사용 불가 | LB Subnet 생성 |
NAT Gateway | 아웃바운드 인터넷 트래픽을 활성화하기 위한 게이트웨이 | NAT Gateway 생성 |
Cloud Log Analytics | (선택) 클러스터의 Audit Log를 저장하기 위한 서비스 | CLA 사용 가이드 |
이용 요금
Ncloud Kubernetes Service는 종량 요금제로 서비스하고 있습니다.
Ncloud Kubernetes Service의 이용 요금에 대한 자세한 기준은 포털 > 서비스 > Ncloud Kubernetes Service 페이지를 참조해 주십시오.
Ncloud Kubernetes Service 시작
클라우드 환경을 준비 이후 콘솔을 통하여 NKS 이용 신청 이후 클러스터를 생성할 수 있습니다.
아래 내용에서는 생성한 클러스터에 접속하기 위해 필요한 Kubectl CLI를 설치하는 방법,
그래픽 인터페이스로 더욱 직관적으로 클러스터를 제어할 수 있는 Kubernetes Dashboard를 이용하는 방법을 안내합니다.
시작 가이드를 통해 학습하게 되는 내용을 정리하면 다음과 같습니다.
우선 NKS 이용 신청을 통해 콘솔에서 NKS 생성을 진행해보겠습니다.
Ncloud Kubernetes Service의 이용을 신청하는 방법은 다음과 같습니다.
- 네이버 클라우드 플랫폼의 콘솔에 접속해 주십시오.
- Platform 메뉴의 VPC를 클릭하여 VPC 환경으로 변경해 주십시오.
- Services > Containers > Ncloud Kubernetes Service 메뉴를 차례대로 클릭해 주십시오.
- [이용 신청] 버튼을 클릭해 주십시오.
- 이용 약관을 읽고 동의한 후 [확인] 버튼을 클릭해 주십시오
신청이 완료되었다면 본격적으로 Ncloud Kubernetes Service 클러스터를 생성해보겠습니다.
- 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Containers > Ncloud Kubernetes Service 메뉴를 차례대로 클릭해 주십시오.
- [생성하기] 버튼을 클릭한 후 아래 단계를 차례대로 진행해 주십시오.
1. 클러스터 설정
- 클러스터 이름을 입력하고 Kubernetes 버전과 CNI Plugin을 선택해 주십시오.
- 클러스터가 생성될 VPC와 가용 Zone과 네트워크 타입(Private/Public) 을 선택한 후, 해당 VPC 내의 서브넷과 로드밸런서 서브넷을 각각 선택해 주십시오.
- 사전에 생성한 VPC, 서브넷, 로드밸런서 서브넷이 없을 경우, [VPC 생성], [Subnet 생성], 또는 [LB Subnet 생성] 버튼을 클릭하여 해당 서비스의 생성 페이지로 이동할 수 있습니다.
- 서브넷은 최대 5개까지 선택할 수 있습니다.
- 5개 미만의 서브넷으로 클러스터를 생성한 경우 상세정보에서 서브넷을 추가할 수 있습니다.
- 최대 노드 수, Audit Log 설정 여부를 선택해 주십시오.
- 최대 노드 수 는 클러스터를 생성한 이후 변경할 수 없습니다.
- Audit Log 사용 여부는 클러스터를 생성한 후에도 수정할 수 있습니다.
- [다음] 버튼을 클릭해 주십시오.
저는 Standard 클러스터 생성에서 lab-test01 이라는 클러스터 이름과 KVM 하이퍼 바이저를 이용하여 Kubernetes 1.27.9 버전의 클러스터를 생성해 보도록 하겠습니다.
하이퍼바이저를 선택시 KVM, XEN 하이퍼 바이저 중 선택이 가능하며 KVM을 선택한다면 추후 ALB Ingress Controller가 미리 생성되어 있으므로 따로 설치 작업이 필요하지 않습니다.
또한, 상기 이미지와 같이 Private Subnet을 통하여 클러스터 구성 시 아웃바운드 인터넷 트래픽을 활성화하기 위해서는 NAT Gateway를 반드시 생성해야 합니다. [NAT Gateway 생성하기]
2. 노드 설정
- 클러스터 내에 생성할 노드풀 이름을 입력해 주십시오.
- 서버 이미지와 서버 타입을 선택해 주십시오.
- 노드풀 내의 노드 수를 설정해 주십시오.
- 노드풀의 Kubernetes Label을 설정해 주십시오.
- 최대 50개까지 설정할 수 있습니다.
- Kubernetes Label에 대한 자세한 설명은 여기를 참조해 주십시오.
- 노드풀의 Taint를 설정해 주십시오.
- 최대 50개까지 설정할 수 있습니다.
- Node Taint에 대한 자세한 설명은 여기를 참조해 주십시오.
- 할당할 서브넷을 선택한 후 [추가] 버튼을 클릭하여 노드풀을 추가해 주십시오.
- 노드풀은 최대 10개까지 생성해 추가할 수 있습니다.
- 서브넷을 사용할 수 있는 IP 수와 서버 생성 한도에 따라 설정할 수 있는 최대 노드 수가 결정됩니다.
- 노드풀에 생성되는 모든 서버에 SubAccount 역할 할당이 필요한 경우, Node IAM Role을 선택해 주십시오.
- SubAccount 역할에 대한 자세한 설명은 여기를 참조해 주십시오.
- Node IAM Role은 생성시에만 선택 가능하며, 수정 할 수 없습니다.
- 노드풀 추가가 완료되면 [다음] 버튼을 클릭해 주십시오.
최소 3글자 이상, 최대 20 자까지의 워커노드를 추가하여 노드풀을 구성합니다.
저는 이 단계에서 Kubernetes Label 및 Taint를 지정하지 않고 Default 값으로 생성하겠습니다.
아래 이미지와 같이 노드풀 설정에서 노드를 추가한다면 최하단 클러스터 크기가 노드 사양 총 합에 맞게 증가하게 됩니다.
3. 로그인 키 설정
- 워커 노드에 접속하기 위해 사용할 로그인 키를 설정해 주십시오.
- 보유하고 있는 로그인 키 이용: 현재 보유하고 있는 로그인 키 중에서 선택해 주십시오.
- 새로운 로그인 키 생성: 로그인 키 이름을 입력한 후 [인증키 생성 및 저장] 버튼을 클릭해 주십시오.
- [다음] 버튼을 클릭해 주십시오.
4. 최종확인
클러스터 설정을 다시 한 번 확인한 후 [생성하기] 버튼을 클릭해 주십시오.
클러스터 접속 및 관리
클러스터 생성이 완료되었다면 컨트롤러 서버를 통해 Kubectl 및 ncp-iam-authenticator을 설치하여 클러스터의 노드들을 관리해 보겠습니다.
우선, 해당 클러스터에 생성된 노드를 관리하기 위한 컨트롤러노드(controll plain)역할의 VM을 생성하여 노드들을 관리해보겠습니다.
1.Kubectl 설치
Kubectl은 클러스터를 제어하는 데 사용되는 CLI로, 가이드에서 안내하는 kubectl
, helm
명령을 사용하기 위해 필요합니다. 다음 링크를 참고하여 사용 중인 운영 체제에 알맞은 방법으로 Kubectl을 설치해 주십시오.
저의 경우 초기 구성에서 확인한 이미지와 같이 ubuntu-22.04-nksw 버전을 기준으로 설치해 보겠습니다.
# curl -LO “https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl”
# sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
version이 정상으로 표시되는지 확인
# kubectl version –client
Client Version: v1.29.3
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
kubectl 설치가 정상적으로 되었다면 kubectl 명령어를 사용하여 클러스터에 접속하는 방법은 다음과 같습니다.
(Ncloud Kubernetes Service 클러스터 생성 시 ACG는 자동 생성 및 매핑 됩니다.)
- 네이버 클라우드 플랫폼 콘솔의 VPC 환경에서 Services > Containers > Ncloud Kubernetes Service 메뉴를 차례대로 클릭해 주십시오.
- 클러스터 목록에서 접속할 클러스터의 행을 클릭한 인증 방식에 따라 설정파일을 구성해 주십시오.
- Admin 인증 : [다운로드] 버튼을 클릭하여 클러스터의 설정 파일을 다운로드해 주십시오.
- IAM 인증 : [IAM인증 가이드] 버튼을 클릭하여 ncp-iam-authenticator 설치 후 kubeconfig 파일을 생성해 주십시오.
- 아래 예시와 같이 kubectl 명령어에 –kubeconfig 옵션을 사용하여 다운로드한 설정 파일의 경로를 지정한 후 실행해 주십시오.
$ kubectl --kubeconfig "설정파일" get nodes
Plain textCopy참고$HOME/.kube/config 경로에 설정 파일을 직접 추가하는 방법도 있습니다. - 아래 코드를 참조하여 사용 중인 운영 체제에 알맞은 방법으로 환경변수를 설정해 주십시오.
직접 다운로드하여 설치
ncp-iam-authenticator 바이너리를 다운로드해 주십시오. (Arm 버전을 다운로드하려면 명령을 실행하기 전에 amd64를 arm64로 변경합니다.)
ncp-iam-authenticator 바이너리를 다운로드
# curl -o ncp-iam-authenticator -L https://github.com/NaverCloudPlatform/ncp-iam-authenticator/releases/latest/download/ncp-iam-authenticator_linux_amd64
바이너리에 실행 권한을 추가
# chmod +x ./ncp-iam-authenticator
$HOME/bin/ncp-iam-authenticator를 생성하고 $PATH에 추가
# mkdir -p $HOME/bin && cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator && export PATH=$PATH:$HOME/bin
Shell Profile에 PATH를 추가
# echo ‘export PATH=$PATH:$HOME/bin’ >> ~/.bash_profile
ncp-iam-authenticator 바이너리가 정상 동작하는지 테스트
# ncp-iam-authenticator help
ncp-iam-authenticator 설치가 완료되었다면 API 인증키값 설정을 위해 아래와 같이 설정한다.
OS 환경변수나 configure파일에 API 키를 설정해 주십시오. (OS 환경변수가 configure 파일보다 우선합니다.)
- OS 환경변수 설정
$ export NCLOUD_ACCESS_KEY=ACCESSKEYIDACCESSKEY
#엑세스 키 입력$ export NCLOUD_SECRET_KEY=SECRETACCESSKEYSECRETACCESSKEYSECRETACCE
#시크릿 키 입력$ export NCLOUD_API_GW=https://ncloud.apigw.ntruss.com
또는 - 사용자 환경 홈 디렉터리의 .ncloud 폴더에 configure 파일
$ cat ~/.ncloud/configure
[DEFAULT]
ncloud_access_key_id = ACCESSKEYACCESSKEYAC
ncloud_secret_access_key = SECRETKEYSECRETKEYSECRETKEYSECRETKEYSECR ncloud_api_url = https://ncloud.apigw.ntruss.com
[project]
ncloud_access_key_id = ACCESSKEYACCESSKEYAC
ncloud_secret_access_key = SECRETKEYSECRETKEYSECRETKEYSECRETKEYSECR ncloud_api_url = https://ncloud.apigw.ntruss.com
- 인증키 값을 확인하지 못할 경우, ncp-iam-authenticator 명령 수행 중에 API 키 입력을 요구합니다.
Ncloud Access Key Id []: ACCESSKEYACCESSKEYAC
Ncloud Secret Access Key []: SECRETKEYSECRETKEYSECRETKEYSECRETKEYSECR
Ncloud API URL []: https://ncloud.apigw.ntruss.com
환경 변수 등록이 완료되었다면 Kubeconfig 파일에 클러스터 config를 추가합니다.
[예시]
ncp-iam-authenticator create-kubeconfig –region –clusterUuid –output kubeconfig.yaml
# ncp-iam-authenticator create-kubeconfig –region KR –clusterUuid [UUID] –output kubeconfig.yaml
클러스터의 UUID 정보는 콘솔에서 확인 가능합니다.
생성된 kubeconfig 파일로 kubectl 명령을 테스트
kubectl get namespaces –kubeconfig kubeconfig.yaml
설정이 완료되었다면 –kubeconfig 명령어를 제외하고 kubectl 명령을 실행할수있도록 설정합니다.
– 위에서 생성한 kubeconfig.yaml 파일을 ~/.kube/config로 복사하여 명령 확인
이제 config 옵션을 제외하여 kubectl 명령을 실행 할 수 있으며, 오브젝트 생성이 가능한지 테스트용 nginx pod를 생성해 보겠습니다.
정상적으로 생성 된 nginx pod는 아래와 같이 대시보드를 통하여 한눈에 볼 수 있으며, 모니터링 기능을 통해 운영 관리가 가능합니다.
Kubernetes 대시보드는 CLI 대신 GUI를 통해 클러스터를 제어하는 기능으로, 브라우저를 통해 접근할 수 있습니다.
- 모니터링
마치며
NKS를 사용하기 위한 클러스터 구성 및 kubectl 명령을 통해 오브젝트 생성을 진행해보았으며, 대시보드 및 모니터링 방식을 확인해 보았습니다.
현재 생성은 기초적인 NKS 클러스터의 구성 정보이며, 다음은 IAM 인증을 통하여 사용자를 관리하는 방법, Service 및 Ingree를 생성하여 내부 Pod를 외부로 노출시키는 실습을 진행해 보겠습니다.