Kubernetes 클러스터 유지관리

Google Distributed Cloud (GDC) 오프라인을 사용하면 GDC의 GKE를 사용하여 생성한 후 Kubernetes 클러스터를 관리할 수 있습니다. 이 서비스를 사용하면 다음과 같은 워크플로를 통해 변화하는 컨테이너 워크로드 요구사항에 적응하고 기존 클러스터 노드를 유지할 수 있습니다.

이 문서는 여러 프로젝트에 걸쳐 있는 클러스터에서 호스팅되는 컨테이너 워크로드를 관리하는 플랫폼 관리자 그룹의 IT 관리자와 단일 프로젝트 내에서 애플리케이션 워크로드를 생성하는 애플리케이션 운영자 그룹의 개발자를 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.

시작하기 전에

이 문서의 작업을 완료하려면 다음 리소스와 역할이 있어야 합니다.

  • 공유 Kubernetes 클러스터에서 노드 풀을 보고 관리하려면 조직 IAM 관리자에게 다음 역할을 부여해 달라고 요청하세요.

    • 사용자 클러스터 관리자 (user-cluster-admin)
    • 사용자 클러스터 노드 뷰어 (user-cluster-node-viewer)

    이러한 역할은 프로젝트 네임스페이스에 바인딩되지 않습니다.

  • 표준 Kubernetes 클러스터에서 노드 풀을 보고 관리하려면 조직 IAM 관리자에게 표준 클러스터 관리자(standard-cluster-admin) 역할을 부여해 달라고 요청하세요. 이 역할은 프로젝트 네임스페이스에 바인딩됩니다.

  • Kubernetes 클러스터에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.

    • Kubernetes 클러스터 이름을 찾거나 플랫폼 관리자 그룹의 구성원에게 클러스터 이름을 묻습니다.

    • Kubernetes 클러스터의 kubeconfig 파일이 없는 경우 로그인하여 생성합니다.

    • Kubernetes 클러스터의 kubeconfig 경로를 사용하여 이 안내의 KUBERNETES_CLUSTER_KUBECONFIG를 바꿉니다.

프로젝트 계층 구조에서 클러스터 이동

프로젝트는 서비스 인스턴스의 논리적 그룹화를 제공합니다. GDC 프로젝트 계층 구조에서 공유 Kubernetes 클러스터를 추가 및 삭제하여 서비스를 적절하게 그룹화할 수 있습니다. 표준 클러스터는 단일 프로젝트로 범위가 지정되므로 프로젝트 계층 구조에서 이동할 수 없습니다.

공유 클러스터에 프로젝트 연결

GDC 콘솔에서 공유 클러스터를 만들 때는 컨테이너 워크로드를 성공적으로 배포하려면 먼저 프로젝트를 하나 이상 연결해야 합니다. 기존 클러스터에 프로젝트를 추가해야 하는 경우 다음 단계를 완료하세요.

  1. 탐색 메뉴에서 Kubernetes Engine > 클러스터를 선택합니다.
  2. 클러스터 목록에서 클러스터를 클릭하여 클러스터 세부정보 페이지를 엽니다.
  3. 프로젝트 연결을 선택합니다.
  4. 프로젝트 목록에서 추가할 수 있는 프로젝트를 선택합니다. 저장을 클릭합니다.

공유 클러스터에서 프로젝트 분리

기존 공유 클러스터에서 프로젝트를 분리하려면 다음 단계를 완료하세요.

  1. 탐색 메뉴에서 Kubernetes Engine > 클러스터를 선택합니다.
  2. 클러스터 목록에서 클러스터를 클릭하여 클러스터 세부정보 페이지를 엽니다.
  3. 클러스터에서 분리할 프로젝트의 분리를 클릭합니다.

조직의 모든 클러스터 보기

조직에서 사용할 수 있는 모든 Kubernetes 클러스터와 상태, Kubernetes 버전, 기타 세부정보를 확인할 수 있습니다.

Kubernetes 클러스터는 영역 리소스이므로 영역별로만 클러스터를 나열할 수 있습니다.

콘솔

  • 탐색 메뉴에서 Kubernetes Engine > 클러스터를 선택합니다.

    조직에서 사용할 수 있는 모든 공유 클러스터가 상태 및 기타 정보와 함께 표시됩니다.

    조직의 각 공유 클러스터에 대한 상태 및 기타 정보를 보여주는 클러스터 세부정보 페이지

gdcloud

  • 조직에서 사용할 수 있는 영역의 공유 클러스터를 나열합니다.

    gdcloud clusters list
    

    출력은 다음과 비슷합니다.

    CLUSTERREF.NAME   READINESS.STATE   TYPE   CURRENTVERSION.USERCLUSTERVERSION     CURRENTVERSION.SUPPORT.STATUS
    user-vm-1         Ready             user   1.15.0-gdch.394225-1.28.15-gke.1200   In Support
    user-vm-2         Ready             user   1.15.0-gdch.394225-1.29.12-gke.800    In Support
    

API

  • 조직에서 영역의 사용 가능한 Kubernetes 클러스터를 나열합니다.

    kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    다음을 바꿉니다.

    • MANAGEMENT_API_SERVER: 영역 API 서버의 kubeconfig 경로입니다. 타겟 영역의 API 서버에 대한 kubeconfig 파일을 아직 생성하지 않은 경우 로그인을 참고하세요.
    • KUBERNETES_CLUSTER_NAMESPACE: 클러스터의 네임스페이스입니다. 공유 클러스터의 경우 platform 네임스페이스를 사용합니다. 표준 클러스터의 경우 클러스터의 프로젝트 네임스페이스를 사용합니다.

    출력은 다음과 비슷합니다.

    NAME        STATE     K8S VERSION
    user-vm-1   Running   1.25.10-gke.2100
    user-test   Running   1.26.5-gke.2100
    

클러스터에 사용 가능한 Kubernetes 버전 나열

GDC 영역에서 사용 가능한 Kubernetes 버전을 나열하여 클러스터에서 액세스할 수 있는 Kubernetes 기능을 확인할 수 있습니다.

  • 영역에서 사용 가능한 Kubernetes 버전을 나열합니다.

    kubectl get userclustermetadata.upgrade.private.gdc.goog \
        -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \
        --kubeconfig MANAGEMENT_API_SERVER
    

    MANAGEMENT_API_SERVER를 클러스터의 영역 API 서버 kubeconfig 파일로 바꿉니다.

    결과는 다음과 유사합니다.

    K8S-VERSION
    1.25.10-gke.2100
    1.26.5-gke.2100
    1.27.4-gke.500
    

업데이트 가능한 속성 보기

각 Kubernetes 클러스터에는 생성된 후 변경할 수 있는 속성 집합이 있습니다. Cluster 커스텀 리소스의 spec에 있는 변경 가능한 속성만 변경할 수 있습니다. spec의 일부 속성은 클러스터가 프로비저닝된 후 업데이트할 수 없습니다. 업데이트 가능한 속성을 보려면 다음 단계를 완료하세요.

콘솔

  1. 탐색 메뉴에서 Kubernetes Engine > 클러스터를 선택합니다.

  2. Kubernetes 클러스터 목록에서 클러스터 이름을 클릭하여 속성을 확인합니다.

  3. 수정 가능한 속성에는 수정 아이콘이 있습니다.

kubectl

  • Cluster 사양의 속성 목록과 각 속성에 해당하는 유효한 값을 확인하세요.

    kubectl explain clusters.cluster.gdc.goog.spec \
        --kubeconfig MANAGEMENT_API_SERVER
    

    MANAGEMENT_API_SERVER를 영역 API 서버의 kubeconfig 경로로 바꿉니다. 타겟 영역의 API 서버에 대한 kubeconfig 파일을 아직 생성하지 않은 경우 로그인을 참고하세요.

    출력은 다음과 비슷합니다.

    KIND:     Cluster
    VERSION:  cluster.gdc.goog/v1
    
    RESOURCE: spec <Object>
    
    DESCRIPTION:
        <empty>
    
    FIELDS:
      clusterNetwork    <Object>
        The cluster network configuration. If unset, the default configurations
        with pod and service CIDR sizes are used. Optional. Mutable.
    
      initialVersion    <Object>
        The GDC air-gapped version information of the user cluster during cluster creation.
        Optional. Default to use the latest applicable version. Immutable.
    
      loadBalancer  <Object>
        The load balancer configuration. If unset, the default configuration with
        the ingress service IP address size is used. Optional. Mutable.
    
      nodePools <[]Object>
        The list of node pools for the cluster worker nodes. Optional. Mutable.
    
      releaseChannel    <Object>
        The release channel a cluster is subscribed to. When a cluster is
        subscribed to a release channel, GDC maintains the cluster versions for
        users. Optional. Mutable.
    

    GDC 콘솔 또는 kubectl CLI를 사용하여 이러한 설정을 업데이트합니다. 예를 들어 노드 풀의 크기를 조절할 수 있습니다.

다음 단계