안녕하세요.
이번 시간에는 Ncloud에서 관리형 서비스인 Ncloud Kubernetes Service(NKS)를 VPC 환경에 생성하고 설정하는 실습을 진행하겠습니다.
1. Ncloud Kubernetes Service 란?
Ncloud Kubernetes Service는 애플리케이션 컨테이너화, 배포, 스케일링, 그리고 관리를 자동화하는 오픈 소스 플랫폼입니다. 네이버 클라우드 플랫폼의 Ncloud Kubernetes Service를 통해 Kubernetes 환경을 효율적으로 제어하고 관리할 수 있습니다. 응용 프로그램에서 사용하는 인프라 규모를 동적으로 제어하고, 운영 상황을 모니터링하여 효율적으로 서비스를 관리할 수 있습니다.
2. Ncloud Kubernetes Service의 다양한 기능
1. Kubernetes 환경 구축
Ncloud Kubernetes Service에서는 복잡하고 반복적인 클러스터 설정 작업이 간소화되며, 이를 통해 클러스터를 구축하고 운영 유지하는 데 드는 시간을 절약할 수 있습니다.
2. Kubernetes 배포 및 관리
작업자 노드와 관리형 제어 영역 간에 안전한 통신을 제공하고, 작업자 노드를 빠르게 프로비저닝 하여 애플리케이션을 손쉽게 확장할 수 있습니다. 또한, 온 디맨드(On-demand) 업그레이드 및 패치가 가능합니다.
3. 클러스터 자동 확장
CPU 사용률 또는 직접 설정한 측정값에 기반한 수평형 pod 자동 확장, 노드 풀별로 실행되는 클러스터 자동 확장 등 다양한 워크로드 요구사항에 대응하는 자동 확장 기능이 제공됩니다.
그 외에도 더 다양한 기능들이 있지만 나머지는 생성 및 실습에서 알아보겠습니다.
3. Ncloud Kubernetes Service 사용 비용
NKS는 기본적으로 클러스터 비용이 시간당 100원 과금되고 생성한 워커 노드(서버) 제공 사양에 따라 추가적인 요금제로 과금됩니다. 서버 운영에 클러스터 비용이 추가된다고 생각해 주시면 됩니다.
4. Ncloud Kubernetes Service 생성 및 설정하기
1. VPC 생성하기
VPC 이름 | IP 주소 범위 |
hyuk-nks-vpc | 192.168.0.0/16 |
NKS는 서브넷 대역대를 /17 ~ /26 사이로 필요하여 평소보다 VPC 대역을 크게 잡아줍니다.
2. Subnet 생성하기
Subnet 이름 | IP 주소 범위 | IGW 전용 여부 | 용도 |
hyuk-nks-pub-sub-01 | 192.168.0.0/24 | Public | 일반 |
hyuk-nks-pri-sub-01 | 192.168.1.0/24 | Private | 일반 |
hyuk-nks-lb-pub-sub-01 | 192.168.2.0/24 | Public | LoadBalancer |
hyuk-nks-lb-pri-sub-01 | 192.168.3.0/24 | Private | LoadBalancer |
hyuk-nks-nat-sub-01 | 192.168.4.0/24 | Public | NatGateway |
NKS의 최소 쿠버네티스 대역이 /26부터라서 IP 대역을 여유있게 생성하였습니다. NKS는 네트워크 타입 별 로드밸런서 생성을 위해 Public LB, Private LB Subnet이 필요합니다.
3. NAT Gateway 생성하기
클러스터 외부 통신을 위해 NAT Gateway를 생성합니다.
4. NKS 클러스터 생성하기
Ncloud Kubernetes Service - Clusters - [생성하기]를 눌러 클러스터를 생성합니다.
기본적으로 앞에서 서브넷을 생성하면 클러스터 생성 시 자동으로 서브넷이 잡히기 때문에 클러스터를 Public에 둘지 Private에 둘 지만 선택해 주시면 됩니다.
노드풀 설정 시 필요한 노드들을 추가할 수 있는데 서버 이미지로 SourceBuild와 동일하게 ubuntu로 설정 가능하고 버전은 현재 기준으로 20.04, 18.04 버전을 사용할 수 있습니다. 저는 테스트로 노드 2개를 생성하겠습니다.
인증키를 생성하시거나 보유 중인 인증키를 사용해서 클러스터를 생성해 줍니다. 클러스터 생성에 시간이 꽤 소요되기 때문에 기다립니다.
5. Bastion Host 준비하기
클러스터를 컨트롤하기 위한 Bastion Host를 준비합니다.
6. ncp-iam-authenticator 설치하기 (Linux)
ncp-iam-authenticator 설치 (ncloud-docs.com)
Ncloud Kubernetes Service는 ncp-iam-authenticator를 통해 IAM 인증을 제공합니다. IAM 인증을 통해 kubectl 명령을 사용하려면 ncp-iam-authenticator를 설치하고 이를 인증에 사용하도록 kubectl 설정 파일을 수정해야 합니다.
(1) ncp-iam-authenticator 바이너리를 다운로드해 주십시오.(Arm 버전을 다운로드하려면 명령을 실행하기 전에 amd64를 arm64로 변경합니다.)
curl -o ncp-iam-authenticator -L https://github.com/NaverCloudPlatform/ncp-iam-authenticator/releases/latest/download/ncp-iam-authenticator_linux_amd64
(2) (선택) SHA-256 SUM을 사용하여 다운로드한 바이너리 파일을 확인할 수 있습니다.
a. ncp-iam-authenticator 바이너리 파일의 SHA-256 합계를 확인합니다
openssl sha1 -sha256 ncp-iam-authenticator
b. SHA-256 SUM을 다운로드 합니다.
curl -o ncp-iam-authenticator.sha256 -L https://github.com/NaverCloudPlatform/ncp-iam-authenticator/releases/latest/download/ncp-iam-authenticator_SHA256SUMS
(3) 바이너리에 실행 권한을 추가해 주십시오.
chmod +x ./ncp-iam-authenticator
(4) $HOME/bin/ncp-iam-authenticator를 생성하고 $PATH에 추가해 주십시오.
mkdir -p $HOME/bin && cp ./ncp-iam-authenticator $HOME/bin/ncp-iam-authenticator && export PATH=$PATH:$HOME/bin
(5) Shell Profile에 PATH를 추가해 주십시오.
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile
(6) ncp-iam-authenticator 바이너리가 정상 동작하는지 테스트해 주십시오.
ncp-iam-authenticator help
7. Ncloud CLI 설치하기
(1) CLI 파일 다운로드하기
위 Ncloud CLI 공식 홈페이지에서 다음과 같이 Ncloud CLI 파일을 다운로드합니다.
(2) CLI 파일 전송하기 (Windows2Linux)
# 파일이 있는 해당 디렉토리로 이동
scp <파일명> 원격지ID@175.45.201.209:/home
yes
원격지PW 입력
드래그 앤 드롭이 지원되는 Shell 프로그램을 쓰면 상관없지만 그렇지 않을 수 있기 때문에 Windows 환경에서 Linux 환경으로 파일 전송을 위해 PowerShell을 켜고 다음과 같이 파일을 전송합니다.
(3) CLI 압축 해제하기
unzip <CLI파일>
Bastion 서버로 전달받은 CLI 파일을 압축 해제합니다.
(4) Ncloud CLI 자격증명 설정하기
cd <CLI 폴더>
cd cli_linux
./ncloud configure
<Access Key 입력>
<Secret Key 입력>
Enter
콘솔에서 API키를 확인한 후에 Ncloud CLI 자격증명으로 설정합니다.
8. ncp-iam-authenticator create-kubeconfig 명령 사용하기
(1) ncp-iam-authenticator가 설치되어 있는지 확인해 주십시오.
(2) 명령어에 사용될 옵션을 확인하기
(3) 위 표를 참고해, ncp-iam-authenticator create-kubeconfig 명령을 사용하여 클러스터에 대한 kubeconfig를 생성해 주십시오.
ncp-iam-authenticator create-kubeconfig --region <region-code> --clusterUuid <cluster-uuid> --output kubeconfig.yaml
다음과 같이 필수 파라미터인 리전과 클러스터 UUID를 입력하여 kubeconfig.yaml 파일을 생성합니다.
* 주의사항) 이때 클러스터를 생성한 IAM 사용자가 아니라면 IAM 인증 사용자 관리를 통해 Configmap으로 추가 사용자를 설정해주어야 합니다.
9. kubectl 설치하기
(1) kubectl 다운로드
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
공식 kubectl github 릴리스 페이지에서 kubectl 바이너리를 다운로드합니다. 위 명령어를 사용하면 현재 안정적인 릴리스를 다운로드할 수 있습니다.
(2) 실행 권한 부여하기
chmod +x ./kubectl
다운로드한 바이너리에 실행 권한을 부여합니다.
(3) 경로 이동하기
sudo mv ./kubectl /usr/local/bin/kubectl
다운로드한 kubectl 바이너리를 시스템 PATH에 있는 적절한 디렉터리로 이동시킵니다.
(4) 설치 확인하기
kubectl version --client
kubectl이 올바르게 설치되었는지 확인합니다.
10. 클러스터 접속하기
$ kubectl --kubeconfig "설정파일" get nodes
위 명령어를 이용하여 다운로드 설정 파일의 경로를 지정한 후 실행합니다.
(1) kubeconfig 실행하기
kubectl --kubeconfig kubeconfig.yaml get nodes
다음과 같이 정상적으로 ncp-iam-authenticator와 ncloud cli를 이용하여 노드 정보를 가져올 수 있는 것을 확인할 수 있습니다.
(2) kubeconfig 환경 변수 설정하기
export KUBE_CONFIG="${HOME}/kubeconfig.yaml"
echo $KUBE_CONFIG
/root/kubeconfig.yaml
kubectl --kubeconfig $KUBE_CONFIG get nodes
kubeconfig를 환경 변수에 설정하여 환경 변수를 이용하여 조회할 수 있게 끔 설정합니다. 저는 현재 kubeconfig.yaml 파일이 해당 경로에 있기 때문에 다음과 같이 설정하였습니다.
이번 시간에는 Ncloud Kubernetes Service와 클러스터 생성 및 설정 방법에 대해 알아봤습니다.
Ncloud 가이드를 기반으로 상세하게 Hands-On 자료로 준비해 봤습니다.
감사합니다.
'Cloud > Naver Cloud' 카테고리의 다른 글
[Ncloud] Windows 환경에서 NAS Storage 마운트, 스냅샷, 이벤트 설정하기 (0) | 2024.04.15 |
---|---|
[Ncloud] Linux 환경에서 NAS Storage 마운트, 스냅샷, 이벤트 설정하기 (0) | 2024.04.09 |
[Ncloud] Server g3 업데이트 후 ubuntu 22.04에서 Nginx 설치가 안될 때 방법 알아보기 (0) | 2024.04.03 |
[Ncloud] 네이버 클라우드 유저 커뮤니티(NCUC) 5회차 발표 후기 (1) | 2024.03.29 |
[Ncloud] Cloud DB for PostgreSQL 서비스 연동부터 테이블 생성 실습하기 (0) | 2024.03.29 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!