코알못

[kubernetes] 쿠버네티스 설치 및 셋팅 본문

ETC

[kubernetes] 쿠버네티스 설치 및 셋팅

코린이s 2023. 5. 6. 21:42
728x90

이번시간에는 GCP(Google Cloud Platform)을 사용하여 쿠버네티스 설치와 셋팅을 진행해보자!

우선 아래 사이트로 접속한다.

https://cloud.google.com/

 

클라우드 컴퓨팅 서비스  |  Google Cloud

데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.

cloud.google.com

무료 버전 구독을 위해 무료로 시작하기 버튼을 클릭한다.

90일이 지나거나 $300을 모두 사용하면 무료 버전이 종료 되며 이전에 사용하던 클러스터도 중단되며, 이전에 만들어둔 클러스터를 계속 사용하고 싶다면 새 구독 버전으로 전환하면 되므로 안심하고 결제 정보 입력하여 무료 평가판 시작 하기 버튼을 눌러 시작한다!

메뉴 버튼을 클릭하면 여러 서비스가 고정 되어 있으며 저자의 경우 쿠버네티스만 사용할 예정이므로 Kubernetes Engine, 결제를 제외하고 모두 고정 해제를 한다. (자유롭게 보고 싶은것만 고정하면 된다.)

이제 쿠버네티스 클러스터를 생성해보자!

아래와 같이 Kubernetes Engine > 클러스터를 클릭하고 사용을 클릭한다.

그리고 Kubernetes 클러스터 > 만들기 버튼을 누르며

간단한 실습을 위함이므로 스탠다드 클러스터를 생성할 예정이으로 STANDARD 클러스터 전환 버튼을 눌러 전환한다.

이름을 원하는대로 입력한뒤 나머지는 기본으로 두고 default-pool 을 클릭하며 노드수를 3으로 입력하고 만들기 버튼을 클릭하여 클러스터를 생성한다.

쿠버네티스 클러스터에 연결하기 위해서는 연결을 위한 셋팅이 필요하다.

GCP에서는 gcloud 명령어를 통해 쉽게 연결 할 수 있도록 제공하고 있으며 아래 연결 버튼을 클릭하면

아래와 같이 gcloud 명령어가 나온다.

구글 브라우저 쉘(브라우저에서 쉘 이용가능)인 cloud shell 을 제공하고 있으며 'CLOUD SHELL 에서 실행' 버튼을 클릭하여 브라우저 쉘을 실행한다.

브라우저 하단에 터미널 창이 열리고 cloud shell 에서는 gcloud가 설치 되어 있어(kubectl도 설치 되어 있음) 자동으로 입력되는 명령어를 날려 셋팅을 진행한다.

이제 정상적으로 셋팅이 되었는지 아래 명령어를 호출하여 확인 하면 

$ kubectl get pod

정상적으로 연결 됐음을 볼 수 있다.

쿠버네티스 관련 설정 정보는 아래 경로에 있으며 정보를 확인 한다.

$ cat ~/.kube/config

관련 정보가 셋팅이 되어 있는것을 확인 할 수 있으며 gcloud 없이 클러스터 연결시 쿠버네티스에서 사용하는 config 파일인 해당 파일 복사하여 셋팅하면 된다.

쿠버네티스 설정은 아래와 같은 구조로 되어 있으며 크게 clusters, users, contexts가 있다.

cluster는 클러스터 설정, users는 클러스터에 접속하는 유저 관련 설정, contexts 는 클러스터와 유저 정보 매핑이라고 보면 된다.

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <인증서 base64 인코딩한 값>
    server: <클러스터 API 서버 주소>
  name: <클러스터명>
contexts:
- context:
    cluster: <클러스터명>
    user: <유저명>
  name: <컨텍스트명>
current-context: <현재 사용할 컨텍스트>
kind: Config
preferences: {}
users:
- name: <유저명>
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1beta1
      command: gke-gcloud-auth-plugin
      installHint: Install gke-gcloud-auth-plugin for use with kubectl by following
        https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke
      provideClusterInfo: true

 클러스터, 유저, 컨텍스터 명칭의 경우 아래와 같이 설정 된다.

gke_<프로젝트 ID>_<클러스터위치>_<클러스터명>

클라우드쉘이 아닌 로컬에서 셋팅 하여 클러스터에 접속하고 싶다면 로컬에 gcloud, kubectl을 설치하여 동일하게 진행하면 된다.

gcloud 는 아래 사이트에서 OS에 맞는것을 설치하면 되며

https://cloud.google.com/sdk/docs/install?hl=ko 

 

gcloud CLI 설치  |  Google Cloud

gcloud CLI 설치 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 페이지에는 Google Cloud CLI 설치를 선택하고 유지하기 위한 안내가 포함되어 있습니다. Google Cl

cloud.google.com

kubectl 의 경우 아래 사이트에서 OS에 맞는 방법으로 설치 진행하면 된다!

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

 

리눅스에 kubectl 설치 및 설정

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

kubernetes.io

그리고 위에 진행한 gcloud 명령어를 통해 셋팅, kubectl 을 통해 확인하면 된다.

$ gcloud container clusters get-credentials corin-cluster --zone us-central1-a --project [프로젝트 ID]
Fetching cluster endpoint and auth data.
kubeconfig entry generated for corin-cluster.
$ kubectl get pod
No resources found in default namespace.

추가로 이후 실습 진행시 저자의 경우 visual studio code 툴을 사용해 yaml 파일을 수정 할 예정으로

kubernetes 관련 yaml 파일을 쉽게 수정하기 위해 필요한 플러그인을 설치한다! (아래는 설치 완료된 화면이다)

끝!

# 오류

Fetching cluster endpoint and auth data.
ERROR: (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission(s) for "projects/../zones/us-central1-a/clusters/corin-cluster".

해결 방안 : IAM을 통해 gcloud 로그인 계정에서 클러스터에 접근할 수 있는 권한을 부여하거나 gcloud auth login 을 입력하여 클러스터에 접근 가능한 계정에 로그인한다.

728x90
Comments