전용 노드 풀 구성

노드 풀 정보

노드 풀은 클러스터 내에서 구성이 모두 동일한 노드 그룹입니다. 일반적으로 리소스 요구사항이 서로 다른 포드가 있는 경우 별도의 노드 풀을 정의합니다. 예를 들어 apigee-cassandra 포드에는 영구 스토리지가 필요하지만 다른 Apigee Hybrid 포드에는 필요하지 않습니다.

이 주제에서는 하이브리드 설치를 위한 전용 노드 풀을 구성하는 방법을 설명합니다.

기본 nodeSelector 사용

권장사항은 Cassandra 포드와 다른 모든 런타임 포드를 위한 2개의 전용 노드 풀을 설정하는 것입니다. 기본 nodeSelector 구성을 사용하면 설치 프로그램은 Cassandra 포드를 apigee-data이라는 스테이트풀(Stateful) 노드 풀에 할당하고 다른 모든 포드는 apigee-runtime이라는 스테이트리스(Stateless) 노드 풀에 할당합니다. 이러한 이름으로 노드 풀을 만들기만 하면 Apigee 하이브리드가 포드 예약 세부정보를 자동으로 처리합니다.

기본 노드 풀 이름 설명
apigee-data 스테이트풀(Stateful) 노드 풀
apigee-runtime 스테이트리스(Stateless) 노드 풀.

다음은 기본 nodeSelector 구성입니다. apigeeData 속성은 Cassandra 포드의 노드 풀을 지정합니다. apigeeRuntime은 다른 모든 포드의 노드 풀을 지정합니다. 이 기본 설정을 이 주제의 뒷부분에서 설명하는 것처럼 재정의 파일에서 재정의할 수 있습니다.

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

포드가 올바른 노드에서 예약되도록 하려면 이름이 apigee-dataapigee-runtime인 2개의 노드 풀을 만들기만 하면 됩니다.

requiredForScheduling 속성

nodeSelector 구성 섹션에는 requiredForScheduling라는 속성이 있습니다.

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-runtime"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "apigee-data"

false(기본값)로 설정하면 노드 풀이 필수 이름으로 정의되었는지 여부에 따라 기본 포드가 예약됩니다. 즉, 노드 풀 만들기를 잊어버리거나 실수로 apigee-runtime 또는 apigee-data가 아닌 노드 풀 이름을 지정하면 하이브리드 런타임 설치가 성공합니다. Kubernetes는 포드를 실행할 위치를 결정합니다.

requiredForSchedulingtrue로 설정하면 구성된 nodeSelector 키 및 값과 일치하는 노드 풀이 없는 경우 설치에 실패합니다.

커스텀 노드 풀 이름 사용

기본 이름으로 노드 풀을 사용하지 않으려면 커스텀 이름으로 노드 풀을 만들고 nodeSelector 스탠자에 커스텀 이름을 지정할 수 있습니다. 예를 들어 다음 구성은 my-cassandra-pool이라는 풀에 Cassandra 포드를 할당하고 다른 모든 포드를 my-runtime-pool이라는 풀에 할당합니다.

nodeSelector:
  requiredForScheduling: false
  apigeeRuntime:
    key: "cloud.google.com/gke-nodepool"
    value: "my-runtime-pool"
  apigeeData:
    key: "cloud.google.com/gke-nodepool"
    value: "my-cassandra-pool"

GKE에서 특정 구성요소의 노드 풀 재정의

개별 구성요소 수준에서 노드 풀 구성을 재정의할 수도 있습니다. 예를 들어 다음 구성은 값이 apigee-custom인 노드 풀을 runtime 구성요소에 할당합니다.

runtime:
  nodeSelector:
    key: cloud.google.com/gke-nodepool
    value: apigee-custom

다음 구성요소 중 하나에 커스텀 노드 풀을 지정할 수 있습니다.

  • istio
  • mart
  • synchronizer
  • runtime
  • cassandra
  • udca
  • logger

GKE 노드 풀 구성

GKE에서 노드 풀은 풀을 만들 때 지정한 고유한 이름을 가져야 하며, GKE는 각 노드에 다음과 같은 라벨을 자동으로 지정합니다.

cloud.google.com/gke-nodepool=THE_NODE_POOL_NAME

apigee-dataapigee-runtime이라는 노드 풀을 만들면 추가 구성이 필요하지 않습니다. 커스텀 노드 이름을 사용하려면 커스텀 노드 풀 이름 사용을 참조하세요.

Anthos 노드 풀 구성

Apigee Hybrid는 현재 Anthos 1.1.1에서만 지원됩니다. 이 버전의 Anthos는 노드 풀 기능을 지원하지 않습니다. 따라서 아래에 설명된 대로 워커 노드에 수동으로 라벨을 지정해야 합니다. 하이브리드 클러스터가 실행되면 다음 단계를 수행합니다.

  1. 다음 명령어를 실행하여 클러스터의 워커 노드 목록을 가져옵니다.
    kubectl -n apigee get nodes

    결과 예시:

    NAME                   STATUS   ROLES    AGE     VERSION
    apigee-092d639a-4hqt   Ready    <none>   7d      v1.14.6-gke.2
    apigee-092d639a-ffd0   Ready    <none>   7d      v1.14.6-gke.2
    apigee-109b55fc-5tjf   Ready    <none>   7d      v1.14.6-gke.2
    apigee-c2a9203a-8h27   Ready    <none>   7d      v1.14.6-gke.2
    apigee-c70aedae-t366   Ready    <none>   7d      v1.14.6-gke.2
    apigee-d349e89b-hv2b   Ready    <none>   7d      v1.14.6-gke.2
    
  2. 런타임 노드와 데이터 노드를 구분하도록 각 노드에 라벨을 지정합니다.

    다음 명령어를 사용하여 노드에 라벨을 지정합니다.

    kubectl label node NODE_NAME KEY=VALUE

    예:

    $ kubectl label node apigee-092d639a-4hqt apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-092d639a-ffd0 apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-109b55fc-5tjf apigee.com/apigee-nodepool=apigee-runtime
    $ kubectl label node apigee-c2a9203a-8h27 apigee.com/apigee-nodepool=apigee-data
    $ kubectl label node apigee-c70aedae-t366 apigee.com/apigee-nodepool=apigee-data
    $ kubectl label node apigee-d349e89b-hv2b apigee.com/apigee-nodepool=apigee-data
    

Anthos GKE에서 특정 구성요소의 노드 풀 재정의

Anthos GKE 설치의 개별 구성요소 수준에서 노드 풀 구성을 재정의할 수도 있습니다. 예를 들어 다음 구성은 값이 apigee-custom인 노드 풀을 runtime 구성요소에 할당합니다.

runtime:
  nodeSelector:
    key: apigee.com/apigee-nodepool
    value: apigee-custom

다음 구성요소 중 하나에 커스텀 노드 풀을 지정할 수 있습니다.

  • istio
  • mart
  • synchronizer
  • runtime
  • cassandra
  • udca
  • logger