kubectl에 대한 클러스터 액세스 구성

이 페이지에서는 Google Kubernetes Engine에서 kubectl 명령줄 도구의 클러스터 액세스를 구성하는 방법을 설명합니다.

개요

Google Cloud Platform 프로젝트 내에서 여러 클러스터를 실행하는 경우 kubectl이 연결할 클러스터를 선택해야 합니다. kubeconfig 파일에서 현재 컨텍스트를 설정하여 kubectl의 기본 클러스터를 설정할 수 있습니다. 또한 --cluster 플래그를 사용해서 특정 클러스터에 대해 kubectl 명령어를 실행할 수 있습니다.

다음 섹션에서는 kubeconfig 작동 방법, kubectl의 기본 클러스터 설정 방법, 특정 클러스터에 대해 개별 kubectl 명령어를 실행하는 방법을 설명합니다.

시작하기 전에

이 작업을 준비하려면 다음 단계를 수행하세요.

  • Google Kubernetes Engine API가 사용 설정되었는지 확인합니다.
  • Google Kubernetes Engine API 사용 설정
  • Cloud SDK가 설치되었는지 확인합니다.
  • 기본 프로젝트 ID를 설정합니다.
    gcloud config set project [PROJECT_ID]
  • 영역 클러스터를 사용하는 경우 기본 컴퓨팅 영역을 설정합니다.
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 지역 클러스터를 사용하는 경우 기본 컴퓨팅 지역을 설정합니다.
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud를 최신 버전으로 업데이트합니다.
    gcloud components update

Kubernetes 구성 파일

Kubernetes는 kubeconfig라는 YAML 파일을 사용해서 kubectl에 대한 클러스터 인증 정보를 저장합니다. kubeconfig에는 명령어를 실행할 때 kubectl이 참조하는 컨텍스트 목록이 포함됩니다. 기본적으로 파일은 $HOME/.kube/config에 저장됩니다.

컨텍스트는 액세스 매개변수의 그룹입니다. 각 컨텍스트에는 Kubernetes 클러스터, 사용자, 네임스페이스가 포함되어 있습니다. 현재 컨텍스트는 현재 kubectl의 기본값인 클러스터입니다. 모든 kubectl 명령어가 이 클러스터에 실행됩니다.

gcloud container clusters create를 사용하여 클러스터를 만들면 환경의 kubeconfig에 항목이 자동으로 추가되고 현재 컨텍스트가 해당 클러스터로 변경됩니다.

gcloud container clusters create my-cluster
Creating my-cluster...done
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster

Google Cloud Platform 콘솔을 사용하거나 다른 컴퓨터에서 gcloud를 사용하여 클러스터를 만들 때는 환경의 kubeconfig가 업데이트되지 않습니다. 또한 프로젝트팀 구성원이 자신의 컴퓨터에서 클러스터를 만들기 위해 gcloud를 사용할 경우에는 이 구성원의 kubeconfig가 업데이트되지만, 내 구성은 업데이트되지 않습니다. 내 로컬 kubeconfig에 클러스터를 추가하려면 아래 안내를 따르세요.

클러스터 엔드포인트 정보

모든 클러스터에는 표준 엔드포인트가 있습니다. 이 엔드포인트는 kubectl 및 다른 서비스가 클러스터 마스터와 통신하기 위해 사용하는 Kubernetes API 서버의 IP 주소입니다. 엔드포인트는 GCP 콘솔에서 클러스터 세부정보 탭의 엔드포인트 필드 아래와 endpoint 필드의 gcloud container clusters describe 출력에 표시됩니다.

gcloud container clusters get-credentials를 실행할 때는 이 명령어가 클러스터 엔드포인트를 kubeconfig 업데이트 중에 가져오는 것을 확인할 수 있습니다.

비공개 클러스터에는 내부 IP 주소인 privateEndpoint와 외부 IP 주소인 publicEndpoint라는 두 가지 고유한 엔드포인트 값이 포함됩니다. 비공개 클러스터에 get-credentials를 실행하면 기본적으로 외부 IP 주소가 엔드포인트로 설정됩니다. 내부 IP를 엔드포인트로 사용하려면 비공개 클러스터의 내부 IP 주소를 사용하여 kubeconfig 항목 생성을 참조하세요.

kubectl의 현재 컨텍스트 보기

kubectl의 현재 컨텍스트를 보려면 다음 명령어를 실행하세요.

kubectl config current-context

kubeconfig 보기

환경의 kubeconfig를 보려면 다음 명령어를 실행하세요.

kubectl config view

이 명령어는 kubeconfig 항목이 생성된 모든 클러스터 목록을 반환합니다. GKE 클러스터가 나열된 경우 현재 환경에서 이 클러스터에 kubectl 명령어를 실행할 수 있습니다. 그렇지 않으면 클러스터에 kubeconfig 항목을 생성해야 합니다.

kubeconfig 항목 생성

GCP 콘솔이나 다른 컴퓨터에서 또는 프로젝트의 다른 구성원에 의해 생성된 클러스터에 kubectl 명령을 실행하려면, 환경에서 kubeconfig 항목을 생성해야 합니다.

다음 명령어를 실행하여 kubeconfig 항목을 생성합니다.

gcloud container clusters get-credentials [CLUSTER_NAME]

여기서 [CLUSTER_NAME]은 클러스터의 이름입니다.

비공개 클러스터의 내부 IP 주소를 사용하여 kubeconfig 항목 생성

get-credentials를 실행할 때는 비공개 클러스터의 내부 IP 주소를 kubeconfig에 기록하도록 --internal-ip를 지정할 수 있습니다.

gcloud container clusters get-credentials --internal-ip [CLUSTER_NAME]

kubectl 명령어의 기본 클러스터 설정

이전에 클러스터에 kubeconfig 항목을 생성한 경우, gcloud container clusters get-credentials를 실행하여 kubectl의 현재 컨텍스트를 해당 클러스터로 전환할 수 있습니다.

예를 들어 my-clustermy-new-cluster라는 두 클러스터가 포함된 프로젝트를 가정해보세요. 현재 컨텍스트는 my-new-cluster이지만, my-cluster모든 kubectl 명령어를 실행하고 싶습니다.

현재 컨텍스트를 my-cluster로 전환하려면 다음 명령어를 실행합니다.

gcloud container clusters get-credentials my-cluster

특정 클러스터에 개별 kubectl 명령 실행

kubeconfig에 표시되는 클러스터 이름을 --cluster 플래그의 인수로 전달하여 특정 클러스터에 개별 kubectl 명령어를 실행할 수 있습니다.

예를 들어 my-clustermy-new-cluster라는 두 클러스터가 포함된 환경을 고려해보세요. 여기에서 현재 컨텍스트는 my-cluster입니다. 애플리케이션을 my-new-cluster에 배포하지만, 현재 컨텍스트는 변경하지 않으려고 합니다.

애플리케이션을 my-new-cluster에 배포하기 위해서는 다음 명령어를 실행합니다.

kubectl run my-app --image gcr.io/my-bucket/my-app:1.0 --cluster my-new-cluster

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine