클러스터 관리

이 문서에서는 Google Kubernetes Engine (GKE)에서 클러스터를 관리하는 방법을 보여줍니다. 클러스터 작동 방법을 보려면 클러스터 아키텍처를 참조하세요.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치했으면 gcloud components update 명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.

클러스터 보기

gcloud

  • 특정 클러스터를 보려면 다음 명령어를 실행합니다.

    gcloud container clusters describe CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터 이름입니다.
    • CONTROL_PLANE_LOCATION: 클러스터의 컨트롤 플레인에 대한 Compute Engine 위치. 리전 클러스터의 경우 리전 또는 영역 클러스터의 경우 영역을 제공합니다.
  • 리전 또는 영역에 관계없이 프로젝트의 모든 클러스터를 나열하려면 다음 명령어를 실행합니다.

    gcloud container clusters list
    
  • 특정 리전 또는 영역에 있는 클러스터를 나열하려면 다음 명령어를 실행합니다.

    gcloud container clusters list \
        --location=CONTROL_PLANE_LOCATION
    

Console

클러스터를 보려면 Google Kubernetes Engine 페이지에서 Google Cloud 콘솔로 이동합니다.

Google Kubernetes Engine으로 이동

클러스터에 대한 자세한 내용을 보려면 목록에서 클러스터를 선택합니다.

kubectl의 기본 클러스터 설정

클러스터가 여러 개 있는 경우 kubectl 명령줄 도구에 클러스터의 기본 클러스터를 설정할 수 있습니다.

자세한 내용은 kubectl 명령어의 기본 클러스터 설정을 참조하세요.

gcloud의 기본 클러스터 설정

gcloud 명령어에 기본 클러스터를 설정하려면 다음 명령어를 실행하세요.

gcloud config set container/cluster CLUSTER_NAME

CLUSTER_NAME을 클러스터 이름으로 바꿉니다.

클러스터 업그레이드

기본적으로 GKE는 클러스터를 자동으로 업그레이드합니다. 그러나 사용자가 Standard 클러스터를 직접 업그레이드할 수도 있습니다. 자세한 내용은 클러스터 수동 업그레이드를 참조하세요.

클러스터 업그레이드에 대한 안내는 클러스터 업그레이드 권장사항을 참조하세요.

Standard 클러스터에서 영역 추가 또는 삭제

다음 섹션에서는 클러스터 영역을 추가 또는 삭제하는 방법을 설명합니다. 모든 영역은 클러스터 리전에 있어야 합니다.

영역 클러스터의 영역 변경

기존 영역 클러스터의 경우 영역을 추가하거나 삭제할 수 있습니다.

gcloud

영역 클러스터의 영역을 추가하거나 제거하려면 gcloud container clusters update 명령어를 사용하세요.

gcloud container clusters update CLUSTER_NAME \
  --location CONTROL_PLANE_LOCATION \
  --node-locations COMPUTE_ZONE1,COMPUTE_ZONE2

다음을 바꿉니다.

  • CLUSTER_NAME: 선택한 클러스터의 이름입니다.
  • CONTROL_PLANE_LOCATION: 클러스터의 컨트롤 플레인에 대한 Compute Engine 영역.
  • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: 노드가 생성된 영역. 클러스터에 필요한 만큼 많은 영역을 지정할 수 있습니다. 모든 영역은 --location 플래그에 지정된 대로 클러스터의 컨트롤 플레인과 동일한 리전에 있어야 합니다. 영역 클러스터의 경우 --node-locations에 클러스터의 기본 영역이 포함되어야 합니다.

예를 들어 example-clusterus-central1-a에서 실행됩니다. 클러스터에 2개 이상의 영역을 추가하려면 다음 명령어를 실행합니다.

gcloud container clusters update example-cluster \
  --location us-central1-a
  --node-locations us-central1-a,us-central1-b,us-central1-c

또 다른 예시로 example-clusterus-central1-a, us-central1-b, us-central1-c에서 실행됩니다. 해당 클러스터를 us-central1-aus-central1-b에서만 실행하려는 경우 다음 명령어를 실행하세요.

gcloud container clusters update example-cluster \
  --location us-central1-a \
  --node-locations us-central1-a,us-central1-b

콘솔

기존 클러스터에서 영역을 추가하거나 삭제하려면 다음 단계를 수행하세요.

  1. 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다. Google Cloud

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터 옆의 작업을 클릭한 다음 수정을 클릭합니다.

  3. 세부정보 탭의 기본 노드 영역 필드에서 노드 풀 수정을 클릭합니다.

  4. 원하는 영역을 선택하고 변경사항을 저장합니다.

리전 클러스터의 영역 변경

현재는 gcloud 명령어를 사용하여 기존 리전 클러스터의 영역만 변경할 수 있습니다.

리전 클러스터의 영역을 추가하거나 제거하려면 gcloud container clusters update 명령어를 --node-locations 플래그와 함께 사용합니다.

gcloud container clusters update CLUSTER_NAME \
  --location CONTROL_PLANE_LOCATION \
  --node-locations COMPUTE_ZONE1,COMPUTE_ZONE2

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • CONTROL_PLANE_LOCATION: 클러스터의 컨트롤 플레인에 대한 Compute Engine 리전.
  • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]: 노드가 생성되는 영역 컨트롤 플레인 리전. 영역은 --location 플래그로 지정된 클러스터의 컨트롤 플레인과 동일한 CONTROL_PLANE_LOCATION에 있어야 합니다.

예를 들어 example-clusterus-central1-aus-central1-b에서 실행됩니다. us-central1-c를 추가하려면 다음 명령어를 실행합니다.

gcloud container clusters update example-cluster \
  --location us-central1 \
  --node-locations us-central1-a,us-central1-b,us-central1-c

또 다른 예시로 example-clusterus-central1-a, us-central1-b, us-central1-c에서 실행됩니다. 해당 클러스터를 us-central1-aus-central1-b에서만 실행하려는 경우 다음 명령어를 실행하세요.

gcloud container clusters update example-cluster \
  --location us-central1 \
  --node-locations us-central1-a,us-central1-b

클러스터 크기 조절

Standard 클러스터의 크기를 조절하여 클러스터의 노드 수를 늘리거나 줄일 수 있습니다. 예를 들어 클러스터를 삭제하지 않고 리소스 소비를 멈추도록 하려는 경우 노드를 0으로 축소할 수 있습니다. 크기 조절에 대한 자세한 내용은 클러스터 크기 조절을 참조하세요.

Autopilot 클러스터의 크기는 포드 사양에 따라 자동으로 크기가 조정되므로 클러스터 크기를 조절할 필요가 없습니다. 예를 들어 포드의 복제본 수 또는 포드가 요청하는 리소스를 변경하면 클러스터의 크기가 적절하게 조정되거나 축소됩니다.

클러스터를 최적화하는 보다 효율적인 방법을 원한다면 수직형 포드 자동 확장(VPA)을 사용할 수도 있습니다. 자동 확장 처리는 CPU 및 메모리 요청과 한도의 값을 추천하거나 값을 자동으로 업데이트할 수 있습니다.

클러스터 삭제

필요한 경우 클러스터를 삭제할 수 있습니다. 자세한 내용은 클러스터 삭제를 참조하세요.

거부 정책을 사용하여 클러스터 삭제 방지

IAM 거부 정책을 사용하여 삭제를 시도하는 주 구성원에 관계없이 특정 중요 클러스터의 삭제를 방지할 수 있습니다. 거부 정책에서 특정 클러스터를 타겟팅하려면 해당 클러스터에 태그를 추가합니다. 그런 다음 거부 조건을 사용하여 해당 태그가 있는 클러스터에만 거부 정책을 적용합니다.

특정 클러스터가 삭제되지 않도록 보호하려면 다음 단계를 따르세요.

  1. 보호된 클러스터를 식별하는 태그 키를 만들고 정의합니다. 예를 들어 do_not_delete라는 태그 키를 만들 수 있습니다.

  2. 클러스터에 태그 키를 연결합니다.

  3. 다음 옵션 중 하나를 선택하여 IAM 거부 정책을 만듭니다.

    Console

    1. 콘솔에서 IAM 페이지의 거부 탭으로 이동합니다. Google Cloud

      IAM 거부로 이동

    2. 거부 정책 만들기를 클릭합니다. 거부 정책 만들기 페이지가 열립니다.

    3. ID 필드에서 거부 정책의 고유한 변경 불가능한 ID를 지정합니다.

    4. 새 거부 규칙 섹션에서 다음을 수행합니다.

      1. 거부된 주 구성원 필드에서 모든 주 구성원을 포함하는 principalSet://goog/public:all을 지정합니다.

      2. 거부된 권한 섹션의 권한 1 드롭다운 목록에서 container.googleapis.com/clusters.delete 권한을 찾아 선택합니다.

      3. 거부 조건 추가를 클릭합니다. 거부 조건 추가 창이 열립니다.

      4. Cluster has the do_not_delete tag와 같이 조건에 대한 유용한 제목을 지정합니다.

      5. 조건 작성 도구 탭의 조건 유형 1 드롭다운 목록에서 태그 를 선택합니다.

      6. 연산자 드롭다운 목록에서 키 있음 을 선택합니다.

      7. 키 경로 드롭다운 목록에서 클러스터에 적용한 태그 키(예: do_not_delete)를 선택합니다.

      8. 저장 을 클릭합니다.

    5. 만들기를 클릭합니다.

    gcloud

    1. 다음 거부 정책이 포함된 JSON 파일을 만듭니다.

      {
        "displayName": "Prevent cluster deletion based on tag",
        "rules": [
          {
            "description": "Prevent cluster deletion based on tag",
            "deniedPrincipals": [
              "principalSet://goog/public:all"
            ],
            "deniedPermissions": [
              "container.googleapis.com/clusters.delete"
            ],
            "denialCondition": {
              "title": "Cluster has the do_not_delete tag",
              "expression": "resource.hasTagKey('TAG_KEY_NAME')
            }
          }
        ]
      }
      

      TAG_KEY_NAME을 만든 태그 키의 경로로 바꿉니다.

    2. gcloud iam policies create 명령어를 사용하여 거부 정책을 만듭니다.

      gcloud iam policies create POLICY_ID \
          --attachment-point=ATTACHMENT_POINT \
          --kind=denypolicies --policy-file=POLICY_FILE
      

      다음을 바꿉니다.

      • POLICY_ID: 거부 정책의 ID입니다.
      • ATTACHMENT_POINT: 거부 정책을 연결할 조직, 폴더 또는 프로젝트입니다. 예를 들어 거부 정책을 폴더에 연결하면 해당 폴더의 모든 프로젝트에 있는 클러스터에 정책이 적용됩니다. 자세한 내용은 연결 지점을 참조하세요.
      • POLICY_FILE: 이전 단계에서 만든 JSON 파일의 경로입니다.

거부 정책을 만든 후에는 거부 조건에 지정된 태그 키가 있는 클러스터를 삭제할 수 없습니다. 클러스터를 삭제하려는 시도는 Permission denied 오류 메시지와 함께 실패합니다. 클러스터 삭제를 허용하려면 클러스터에서 해당 태그 키를 분리해야 합니다.

Fleet에 클러스터 추가

조직에서 여러 클러스터를 사용하는 경우 Kubernetes 클러스터의 논리적 그룹인 Fleet에 클러스터를 추가하여 멀티 클러스터 관리를 간소화할 수 있습니다. Fleet을 만들면 조직에서 개별 클러스터부터 전체 클러스터 그룹까지 수준 높은 관리를 수행할 수 있으며 Fleet 지원 기능(예: 멀티 클러스터 인그레스, 구성 동기화, 정책 컨트롤러)을 사용할 수 있습니다.

콘솔이나 gcloud CLI 또는 선언적으로 Terraform 또는 구성 커넥터를 사용해서 Fleet에 GKE 클러스터를 추가할 수 있습니다.Google Cloud

Fleet 관리에서 Fleet의 작동 방식을 자세히 알아보고 멀티 클러스터 관리를 간소화하기 위해 Fleet 만들기에서 Fleet 만들기에 대해 자세히 알아보세요.

다음 단계