GKE Kubernetes 클러스터 생성 및 설정

2022. 11. 17. 18:00[개발] 지식/Kubernetes

$ gcloud container get-server-config --zone asia-northeast3-a

GKE에서 사용 가능한 쿠버네티스 버전을 확인한다.

Fetching server config for asia-northeast3-a
channels:
- channel: RAPID
  defaultVersion: 1.24.4-gke.800
  validVersions:
  - 1.25.2-gke.1700
  - 1.25.1-gke.500
  - 1.24.6-gke.1500
  - 1.24.5-gke.600
  - 1.24.4-gke.800
  - 1.24.3-gke.2100
  - 1.23.12-gke.1600
  - 1.23.12-gke.100
  - 1.23.11-gke.300
  - 1.22.15-gke.1000
  - 1.22.15-gke.100
  - 1.22.14-gke.300
  - 1.22.13-gke.1000
  - 1.21.14-gke.8500
  - 1.21.14-gke.7100
  - 1.21.14-gke.5300
- channel: REGULAR
  defaultVersion: 1.23.8-gke.1900
  validVersions:
  - 1.24.5-gke.600
  - 1.23.12-gke.100
  - 1.23.8-gke.1900
  - 1.22.15-gke.100
  - 1.22.13-gke.1000
  - 1.22.12-gke.2300
  - 1.22.12-gke.500
  - 1.21.14-gke.7100
  - 1.21.14-gke.5300
  - 1.21.14-gke.4300
- channel: STABLE
  defaultVersion: 1.22.12-gke.2300
  validVersions:
  - 1.23.11-gke.300
  - 1.22.15-gke.100
  - 1.22.12-gke.2300
  - 1.21.14-gke.7100
  - 1.21.14-gke.5300
  - 1.21.14-gke.4300
  - 1.21.14-gke.3000
defaultClusterVersion: 1.23.8-gke.1900
defaultImageType: COS_CONTAINERD
validImageTypes:
- WINDOWS_SAC
- WINDOWS_LTSC
- WINDOWS_SAC_CONTAINERD
- WINDOWS_LTSC_CONTAINERD
- COS
- UBUNTU
- COS_CONTAINERD
- UBUNTU_CONTAINERD
validMasterVersions:
- 1.24.6-gke.1500
- 1.24.5-gke.600
- 1.24.4-gke.800
- 1.24.3-gke.2100
- 1.23.12-gke.1600
- 1.23.12-gke.100
- 1.23.11-gke.300
- 1.23.10-gke.1000
- 1.23.9-gke.2100
- 1.23.9-gke.900
- 1.23.8-gke.1900
- 1.22.15-gke.1000
- 1.22.15-gke.100
- 1.22.14-gke.300
- 1.22.13-gke.1000
- 1.22.12-gke.2300
- 1.22.12-gke.1200
- 1.22.12-gke.500
- 1.21.14-gke.8500
- 1.21.14-gke.7100
- 1.21.14-gke.5300
- 1.21.14-gke.4300
- 1.21.14-gke.3000
validNodeVersions:
- 1.24.6-gke.1500
- 1.24.5-gke.600
- 1.24.4-gke.800
- 1.24.3-gke.2100
- 1.24.3-gke.900
- 1.24.3-gke.200
- 1.24.2-gke.1900
- 1.24.2-gke.300
- 1.24.1-gke.1800
- 1.24.1-gke.1400
- 1.23.12-gke.1600
- 1.23.12-gke.100
- 1.23.11-gke.300
- 1.23.10-gke.1000
- 1.23.9-gke.2100
...(생략)

validVersions 에 있는 버전을 사용한다. 1.18 버전을 명시해서 클러스터를 생성하려고 했으나 unsupported 에러가 발생했다.

클러스터 생성

$ gcloud container clusters create k8s \
--cluster-version 1.24.6-gke.1500 \
--zone asia-northeast3-a \
--num-nodes 3 \
--machine-type n1-standard-4 \
--enable-network-policy \
--enable-vertical-pod-autoscaling

k8s라는 이름의 클러스터를 생성한다.

  • cluster-version : Kubernetes 버전
  • zone : 지역
  • num-nodes : 노드 수
  • machine-type : 인스턴스 종류
  • enable-network-policy : 네트워크 정책 기능 활성화
  • enable-vertical-pod-autoscaling : Vertical Pod Autoscaler 활성화
  • (선택) enable-kubernetes-alpha : 알파 기능 활성화
  • (선택) no-enable-autorepair : 알파 기능 활성화 시 해당 기능 비활성화
  • (선택) no-enable-autoupgrade : 알파 기능 활성화 시 해당 기능 비활성화
$ gcloud container clusters get-credentials k8s --zone asia-northeast3-a

만약 클러스터에 대한 권한을 다시 가져와야 한다면 위 명령어를 실행한다.

$ kubectl create clusterrolebinding user-cluster-admin-binding \
--clusterrole=cluster-admin \
--user=<USER_ID>@gmail.com

구글 계정(사용자)이 클러스터를 관리자 권한으로 사용할 수 있도록 설정

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"22+", GitVersion:"v1.22.14-dispatcher-dirty", ...(생략)
Server Version: version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.6-gke.1500", ...(생략)

쿠버네티스와 클라이언트 버전 확인

GKE 워크로드 아이덴티티

  • GKE에서 기동하고 있는 컨테이너에서 GCP 서비스를 사용할 때 컨테이너에게 유연하게 권하는 부여하는 기능
  • 쿠버네티스 서비스 어카운트 리소스(KSA)와 GCP의 서비스 어카운트(GSA)를 연결하여 그 KSA를 사용하는 파드에서 GCP 서비스로 접속할 때 연결한 GSA 권한이 자동으로 부여되는 구조
$ gcloud config get-value core/project

프로젝트 ID를 조회한다.

$ gcloud container clusters update k8s \
--zone asia-northeast3-a \
--workload-pool=<PROJECT_ID>.svc.id.goog

워크로드 아이덴티티 활성화.

$ gcloud container node-pools update default-pool \
--cluster k8s \
--zone asia-northeast3-a \
--workload-metadata=GKE_METADATA

워크로드 아이덴티티에서 사용하는 GKE 메타데이터 기능 활성화.

클러스터 삭제

$ gcloud container clusters delete k8s --zone asia-northeast3-a

k8s 라는 이름의 클러스터 삭제.

<