Ncloud Kubernetes Service 클러스터 생성 및 Windows 환경에서 제어하는 방법에 대한 소개입니다.

ToC

개요

Ncloud (네이버 클라우드) VPC 환경에서 Kubernetes(쿠버네티스) 서비스를 생성하고 Windows 환경에서 제어하는 방법에 대해 소개합니다.

쿠버네티스란?

쿠버네티스(Kubernetes, K8S)는 배포, 스케일링, 그리고 컨테이너화된 애플리케이션의 관리를 자동화 해주는 오픈 소스 컨테이너 오케스트레이션 엔진으로 구글에서 처음 개발하기 시작했으나 현재는 구글이 오픈소스 프로젝트로 공개한 상태입니다.

특징

쿠버네티스는 다음과 같은 특징이 있으며, 자세한 내용은 쿠버네티스 공식 페이지를 참고하시기 바랍니다.

https://kubernetes.io/ko/docs/home/

  • 서비스 디스커버리와 로드 밸런싱
  • 스토리지 오케스트레이션
  • 자동화된 롤아웃과 롤백
  • 자동화된 빈 패킹(bin packing)
  • 자동화된 복구(self-healing)
  • 시크릿과 구성 관리

사전 준비

먼저 쿠버네티스 클러스터에 사용할 전용 VPC와 Private 또는 Public Subnet 그리고, Load Balancer용 Subnet이 필요합니다.

Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법
IP 대역(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) 내에서 /17~/26 범위의 Private 또는 Public Subnet, 로드밸런서 전용 Subnet이 필요합니다.

Docker Bridge 대역의 충돌을 방지하기 위해 172.17.0.0/16 범위 내의 Private Subnet, 로드밸런서 전용Subnet은 선택할 수 없습니다.

클러스터 생성

VPC와 Subnet이 준비되었다면, 다음으로 [Kubernetes Sevice] - [Cluster]에서 생성하기를 클릭합니다.

Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

클러스터 설정

생성할 클러스터의 정보를 설정해줍니다. 네트워크 타입은 Private과 Public 중에서 선택할 수 있습니다.

Kubernetes Service를 위한 ACG는 자동으로 생성됩니다.
현재 지원되고 있는 Kubernetes 버전은 [1.22.9], [1.23.9] 입니다.
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

NAT Gateway 생성

Private Subnet을 선택했을 경우에는 아래와 같이 NAT Gateway 생성 안내 팝업이 나타나는데,
NAT Gateway를 생성해야 아웃바운드 트래픽을 활성화할 수 있기 때문입니다.

Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

팝업에서 링크를 클릭해서 NAT Gateway 화면으로 이동해 NAT Gateway를 생성합니다.

Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

노드풀 설정

노드풀 이름을 입력하고, 서버 이미지와 서버 타입을 선택하고 [추가] 버튼을 클릭합니다.

현재 지원되고 있는 OS는 [ubuntu 16.04], [ubuntu 18.04], [ubuntu 20.04] 입니다.
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

로그인키 설정

다음으로 워커노드의 로그인키를 설정 합니다.

Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

최종 확인

설정 정보를 최종적으로 확인한 후 생성버튼을 클릭하여 클러스터를 생성합니다.

쿠버네티스 클러스터 생성은 20분 정도 소요되므로 여유를 갖고 기다리시면 됩니다.
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

생성 완료

생성이 완료되면 아래와 같이 클러스터와 노드풀의 정보를 확인할 수 있습니다.
클러스터 정보 중에서 클러스터 UUID는 아래쪽에서 IAM 인증 Kubeconifg 파일을 생성할 때 필요하니 확인해두시기 바랍니다.

Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

[Server] 메뉴에 가면 노드풀 설정에 따라 생성된 서버를 확인할 수 있습니다.
(서버 이름은 노드풀 이름으로 입력한 문자열 기준으로 생성되는데, 여기서는 test123-O-OOO 이런 식으로 생성되었습니다.)

Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

IAM 인증 설정

클러스터를 제어하기 위해서는 네이버 클라우드 쿠버네티스 서비스에서 제공하는 IAM 인증을 설정해야 합니다.

ncp-iam-authenticator 설치

Ncloud에서 제공하는 ncp-iam-authenticator 바이너리를 통해 iam 인증 config 파일을 생성 할 수 있습니다.

  • ncp-iam-authenticator 바이너리를 다운로드 합니다.
> curl -o ncp-iam-authenticator.exe https://kr.object.ncloudstorage.com/nks-download/ncp-iam-authenticator/v1.0.5/windows/amd64/ncp-iam-authenticator.exe
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법
  • ncp-iam-authenticator가 정상 작동 하는지 테스트 합니다.
> ncp-iam-authenticator help
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

API 인증키 생성

네이버 클라우드 포탈 -> 마이페이지 -> 계정관리 -> 인증키 관리 - API 인증키 관리 메뉴에서 Access Key ID와 Secret Key를 가져오셔야 하며, 아직 만들어진 Key가 없다면 새로 만드셔야 합니다.

Ncloud API 인증키 생성 방법

Kubeconfig 파일 생성

API 인증키를 2가지 방법 중 하나를 이용해 환경변수에 등록합니다.

1. OS 환경 변수 설정

> SET NCLOUD_ACCESS_KEY={Ncloud API AccessKey}
> SET NCLOUD_SECRET_KEY={Ncloud API SecretKey}
> SET NCLOUD_API_GW=https://ncloud.apigw.ntruss.com
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

2. 사용자 계정 홈 폴더에 configure 설정
Windows 사용자 계정 폴더에 .ncloud 폴더를 만들고 아래와 같은 내용으로 configure 파일을 생성합니다.

> mkdir C:\Users\{User Account}\.ncloud
> copy con C:\Users\{User Account}\.ncloud\configure
[DEFAULT]
ncloud_access_key_id = {Ncloud API AccessKey}
ncloud_secret_access_key = {Ncloud API SecretKey}
ncloud_api_url = https://ncloud.apigw.ntruss.com
^Z
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

3. Kubeconifg 파일 생성
환경변수에 등록이 되었다면 파일을 생성 할 차례입니다.
아래 명령어로 클러스터에 대한 IAM 인증 Kubeconifg 파일을 생성합니다.

클러러스터 UUID 값은 클러스터 상세보기의 [클러스터 이름 (UUID)] 에서 확인 할수 있습니다.
> ncp-iam-authenticator create-kubeconfig --region <region-code> --clusterUuid <cluster-uuid> --output <FileName>.yaml

## 예시
> ncp-iam-authenticator create-kubeconfig --region KR --clusterUuid 12345678-1234-1234-1234-1234567890 --output kubeconfig.yaml
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

kubectl 설치

쿠버네티스 클러스터를 제어할 kubectl을 설치하기 위해 필요한 파일을 다운로드 받고, 버전 정보를 확인합니다.

아래 두가지 방법 중에 하나를 선택해 다운로드 받으시면 됩니다.

Download the latest release v1.24.0

> curl -LO https://dl.k8s.io/release/v1.24.0/bin/windows/amd64/kubectl.exe
> kubectl version --client --output=yaml
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

kubectl 실행

생성한 IAM 인증 kubeconfig 파일을 이용하여 kubectl 명령어를 테스트하여 정상 동작 하는지 확인 합니다.
실행하면 아래와 같이 현재 동작 중인 노드 서버 리스트를 확인할 수 있습니다.

> kubectl get node --kubeconfig kubeconfig.yaml
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

실행 명령어 단축

위와 같은 kubectl 명령은 뒤쪽에 kubeconfig 환경 설정 파일까지 입력해야 해서 다소 불편한데, 간단하게 줄일 수 있는 방법이 있습니다.

우선 만들어진 kubeconfig.yaml 파일을 .kube/ 디렉토리 아래에 config로 이름을 바꾸어 이동 혹은 복사 합니다.

> copy kubeconfig.yaml .kube\config

이렇게 하면 Kubectl을 사용 시 아래와 같이 –kuebeconfig 명령어 없이 사용 할 수 있습니다.

> kubectl get node
Ncloud Kubernetes Service 클러스터 생성 및 제어하는 방법

참고 URL

  1. 쿠버네티스 사용 가이드
  2. 클러스터 이용 가이드
  3. kubectl 설치 가이드
  4. Linux 환경에서 쿠버네티스 제어하기
Tags: kubernetes vpc