IT/NAVER Cloud Platform

[NAVER Cloud Platform] Kubernetes Service 구성하기

Primes 2023. 4. 22. 16:39
728x90

CKA 학습을 준비하며, 네이버클라우드의 Kubernetes Service 를 이용하여 실습을 진행하기 위해 환경을 구성하였습니다.

이하 포스팅할 구성 방법들은 사용 가이드를 참고하여 진행하였습니다.

 

https://guide.ncloud-docs.com/docs/k8s-k8sstart

 

Kubernetes Service 시작

 

guide.ncloud-docs.com

Kubernetes Service 시작 파트부터 따라가며 진행합니다.

 

Cluster 생성 및 구성하기

Console > Services > Containers > Kubernetes Service > [생성하기] 로 접속하여 클러스터 생성.

필자는 제공하는 최신 버전을, 테스트를 쉽게 하기 위해 Public 네트워크로 생성하였습니다. (일반적으로 실 서비스에서는 보안상 Private 선택)

* 참고사항 - LB Private 서브넷 관련

- LB 서브넷은 Private 만 지원합니다. 여기서 Private 만 지원하는 이유는 내부 네트워크 간 통신은 Public 일 필요가 없기 때문입니다.

- Public의 경우, 노드 pool에 공인IP 할당을 별도로 진행해주어야 합니다.

- 네트워크 타입을 Private 으로 설정하였는데 외부 통신이 필요할 경우, NAT Gateway 서비스를 이용하면 외부 통신이 가능합니다.

- Private LB 앞단에 별도로 Public LB를 생성하여 연동하면 외부에 통신 가능합니다.

 

 

다음으로 노드 풀을 생성합니다.

다른 부분은 물리적인 부분이기에 이해에 어려운 점이 없었으나, Kubernetes label / Taint 에 대해서는 아래와 같이 간단히 정리하였습니다.

Kubernetes Label : 객체를 구분하기 위해 임의로 원하는 값을 지정, 해당 값으로 노드 예약을 관리할 수 있음

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/labels/

 

레이블과 셀렉터

레이블 은 파드와 같은 오브젝트에 첨부된 키와 값의 쌍이다. 레이블은 오브젝트의 특성을 식별하는 데 사용되어 사용자에게 중요하지만, 코어 시스템에 직접적인 의미는 없다. 레이블로 오브

kubernetes.io

Taint : 노드가 특정 값을 가진 파드를 스케줄에서 제외할 수 있도록 해주는 데이터, 부적절한 노드에 스케줄 되지 않도록 관리한다.

https://kubernetes.io/ko/docs/concepts/scheduling-eviction/taint-and-toleration/

 

테인트(Taints)와 톨러레이션(Tolerations)

노드 어피니티는 노드 셋을 (기본 설정 또는 어려운 요구 사항으로) 끌어들이는 파드의 속성이다. 테인트 는 그 반대로, 노드가 파드 셋을 제외시킬 수 있다. 톨러레이션 은 파드에 적용된다. 톨

kubernetes.io

Label / Taint 에 대해서는 추후 별도 포스팅으로 따로 자세히 다루겠습니다.

 

이후 과정은 Server 생성과 동일하게 로그인 키를 설정하고 생성을 완료합니다.

 

Kubectl 및 ncp-iam-authenticator 설치

클러스터를 생성하였다면 클러스터를 조정할 CLI인 kubectl 을 설치하여 구성합니다.

필자는 macOS 를 사용하고 있기 때문에, 맥 기준으로 포스팅합니다.

 

https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-macos/

 

macOS에 kubectl 설치 및 설정

시작하기 전에 클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v1.27 클라이언트는 v1.26, v1.27, v1.28의 컨트롤 플레인과 연동될 수 있다. 호환되는 최신 버전

kubernetes.io

별도 포스팅이 필요하지 않을 정도로 공식 라이브러리에 자세히 설명되어 있고 간단하기 때문에 설치 과정은 생략합니다. (Homebrew 이용하여 설치하였음)

 

다음은 ncp-iam-authenticator 를 설치하여 NKS(Ncloud Kubernetes Service) 에 인증하여 접속 환경을 구성합니다.

https://guide.ncloud-docs.com/docs/k8s-iam-auth-ncp-iam-authenticator

 

ncp-iam-authenticator 설치

 

guide.ncloud-docs.com

간단하게 Homebrew 로 설치 가능합니다.

위와같이 설치 진행합니다.

 

다음은 API 인증키 값을 환경변수에 설정합니다.

$ export NCLOUD_ACCESS_KEY=ACCESSKEYIDACCESSKEY
$ export NCLOUD_SECRET_KEY=SECRETACCESSKEYSECRETACCESSKEYSECRETACCE
$ export NCLOUD_API_GW=https://ncloud.apigw.ntruss.com

위와같이 설정하는데, ACCESS KEY와 SECRET KEY는 포털에서 확인 가능합니다.

포털 > 마이페이지 > 계정 관리 > 인증키 관리 > API 인증키 관리 페이지에서 확인 가능합니다.

위 키를 참고하여 환경변수에 설정합니다.

 

다음은, kubeconfig.yaml 파일을 생성합니다.

https://guide.ncloud-docs.com/docs/k8s-iam-auth-kubeconfig

 

IAM 인증 kubeconfig 생성/업데이트

 

guide.ncloud-docs.com

위 사용 가이드의 "ncp-iam-authenticator create-kubeconfig 명령" 사용 부분을 참고합니다.

ncp-iam-authenticator create-kubeconfig --region <region-code> --clusterUuid <cluster-uuid> --output kubeconfig.yaml

 

위 명령어를 사용하는데, region-code는 한국 리전이니 "KR", cluster-uuid는 콘솔의 클러스터에서 확인 가능합니다.

위 스크린샷의 빨간 네모 박스 부분이 uuid 입니다.

성공적으로 kubeconfig 파일이 생성되었습니다.

이제 kubectl 명령어를 활용할 수 있습니다.

반응형